master
曾嘉俊 3 years ago
parent 3e2561eefb
commit 618b3eefa0

682
package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -22,6 +22,7 @@
"echarts": "^4.9.0",
"element-resize-detector": "^1.2.1",
"element-ui": "^2.15.13",
"exceljs": "^4.3.0",
"iview": "^3.5.4",
"jquery": "^3.6.0",
"lib-flexible": "^0.3.2",

@ -38,6 +38,42 @@ export function exportRefCourse(data){
})
}
// 会员协议分页查询
export function memberSelectPage(params) {
return service({
url: "/api" + "/demay/ssm/member/selectPage",
method: "post",
data: params
});
}
// 会员协议更新
export function updateMemberAgreement(params) {
return service({
url: "/api" + "/demay/ssm/member/updateMemberAgreement",
method: "post",
data: params
});
}
// 会员协议发布
export function pushMemberAgreement(params) {
return service({
url: "/api" + "/demay/ssm/member/pushMemberAgreement",
method: "post",
data: params
});
}
// 会员协议新增
export function addMemberAgreement(params) {
return service({
url: "/api" + "/demay/ssm/member/addMemberAgreement",
method: "post",
data: params
});
}
// 充值退导出
export function exportRefundRec(data){
return service({

@ -9,6 +9,7 @@ export function addPromotion(params) {
data: params
});
}
// 促销活动审核 (门店端-促销活动-促销活动审核)
export function promotionAudit(params) {
return service({

@ -5,7 +5,23 @@ import {
localPath
} from "./api.js";
// 查询总归属
export function pageStore(params) {
return service({
url: "/api" + "/demay/ssm/store/pageStore",
method: "post",
data: params
});
}
// 查询角色归属哪个门店
export function SysRoleStore(params) {
return service({
url: "/api" + "/demay/ssm/SysRoleStore/page",
method: "post",
data: params
});
}
// 获取某门店参数
export function allStores(data){
@ -1434,3 +1450,12 @@ export function doEditWXAccount(data) {
data
});
}
// 疗程报表导出
export function groupCourse(params) {
return service({
url: "/api" + "/demay/ssm/course/groupCourse",
method: "post",
data: params
});
}

@ -215,7 +215,6 @@ export default {
this.rows=res.rows
this.rows = res.rows.length?res.rows:[{}]
this.$emit("projectData", this.radioForm,this.rows);
// this.$message.success({ message: "" });
}else{
this.$alert(res.message, "提示", {
confirmButtonText: "确定",

@ -1,12 +1,12 @@
<template>
<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-select ref="select" multiple collapse-tags 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.storeId">
</el-option>
</el-select>
</template>
<script>
import { organizations } from "@/api/storeManage.js";
import { SysRoleStore } from "@/api/storeManage.js"; //
export default {
data() {
@ -24,12 +24,15 @@ export default {
this.$emit("selecData", this.storeIds);
},
show() {
organizations({ pageSize: 999 }).then((res) => {
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
res.pageInfo.list.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",

@ -835,7 +835,7 @@ export default {
route: "/cardCollection",
index: "cardCollection",
number: "6001500",
id:"10011011",
id:"100110113",
},
{
name: "活跃会员",
@ -1236,8 +1236,19 @@ export default {
},
},
created() {
if(sessionStorage.getItem("headOffice") * 1 == 1){ //
this.menuList[7].menuLists.push({
name: "会员协议",
icon: "el-icon-receiving",
route: "/memberAgreement",
index: "memberAgreement",
number: "500200",
id:"800800423",
})
}
var that = this;
let menuList = [...that.menuList];
console.log(this.menuList)
setTimeout(() => {
that.sessionStorageData = JSON.parse(
sessionStorage.getItem("sessionStorageData")
@ -1266,7 +1277,6 @@ export default {
});
});
that.menuList = menuList;
console.log(that.menuList);
}, 1000);
},
mounted() {

@ -9,9 +9,9 @@
<div class="collapse" @click="handleChangeCollapse">
<i :class="[isShow==true?'el-icon-s-unfold':'el-icon-s-fold']"></i>
</div>
<div @click='ruotes' style='cursor: pointer;'>
<span class="headertitle">门店业务</span>
<!-- <span class="headertitle">代收业务</span> -->
<div @click='ruotes' style='cursor: pointer'>
<!-- <span class="headertitle">门店业务</span> -->
<span class="headertitle">代收业务</span>
<span class="text-white ">
{{storeNum}}
</span>

@ -6,10 +6,6 @@
<el-input class="form-width margin-right-xs" placeholder='搜索房间号' size="samll" pattern="[0-9]*" maxlength="11" v-model="form.roomNum">
<el-button size="mini" slot="append" icon="el-icon-search"></el-button>
</el-input>
<!-- <el-select style="width:100px" class="margin-right-xs" v-model="queryForm.num" placeholder="请选择">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value">
</el-option>
</el-select> -->
<div class="text-bold flex align-center justify-start">
<div class="flex align-center justify-start line-height" v-for="(item,index) in stateList" :key="index" @click="stateIndex=index,queryForm.state=item.value">
<div :class="stateIndex==index?'selcet-text':''" class="pointer padding-xss margin-left-xs">{{item.label}}</div>

@ -1,11 +1,13 @@
<template>
<div class="displsy-mod">
<div class="header_flex" style="align-items: center;justify-content: flex-end;">
<div class="flex">
<div class="flex">
<div class="left">
<el-button size="mini" type="primary" style="margin-left: 10px;" :disabled="!radioForm.id" @click="detailShow" v-if="headOffice"></el-button>
</div>
<div class="right">
<el-input size="medium" style="width: 180px" placeholder="当前页搜索" v-model="queryForm.storeName">
<i slot="prefix" class="el-input__icon el-icon-search"></i>
<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" v-if="headOffice"></el-button>
</div>
</div>
<hr />
@ -132,4 +134,12 @@ export default {
.el-input {
width: 200px;
}
.flex{
display: flex;
align-items: center;
justify-content: space-between;
}
.right{
text-align: right;
}
</style>

@ -3,8 +3,8 @@
<div class="box" style="width: 400px; height: 400px; background-color: #FFF;">
<el-image style="width: 100%; height: 100%" :src="qrCode" fit="fill" v-if="codeNumber===1"></el-image>
<div class="img" v-if="codeNumber===2||codeNumber===3">
<img style="width:100px; height: 100px;" src="../../../../../image/check.png" fit="fill" v-if="codeNumber===2&&openid"></img>
<img style="width:100px; height: 100px;" src="../../../../../image/close.png" fit="fill" v-if="codeNumber===3"></img>
<img style="width:100px; height: 100px;" src="../../../../../image/check.png" fit="fill" v-if="codeNumber===2&&openid">
<img style="width:100px; height: 100px;" src="../../../../../image/close.png" fit="fill" v-if="codeNumber===3">
<div class="title">{{codeNumber===2?'扫码关注成功':'二维码失效'}}</div>
</div>
</div>
@ -14,9 +14,6 @@
<script>
var getOpenid = null;
import {
getAccessToken,
getTicket,
getQrCode,
getJavaQrCode,
getJavaOpenid,
doDeleteJavaOpenid,
@ -42,9 +39,6 @@ export default {
this.openid = "";
this.dialogFormVisible = true;
this.handleDeleteJavaOpenid();
// setTimeout(() => {
// that.codeNumber = 3
// }, 60000);
},
close() {
this.qrCode = "";
@ -85,33 +79,10 @@ export default {
}
});
},
// access_token
// fetchAccessToken() {
// getAccessToken().then(res => {
// if (res.expires_in == 7200) {
// this.fetchTicket(res.access_token)
// }
// })
// },
// access_tokenticket
// fetchTicket(data) {
// getTicket(data, { "expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": { "scene": { "scene_id": 1800 } } }).then(res => {
// this.fetchQrCode(res.ticket)
// })
// },
// ticket
// fetchQrCode(data) {
// getQrCode(data).then(res => {
// this.qrCode = window.URL.createObjectURL(res)
// })
// },
},
};
</script>
<style >
/* .el-dialog .el-dialog__body {
padding: 0 !important;
} */
</style>
<style scoped>
.box {

@ -513,6 +513,7 @@ export default {
//
pageNum: 1, //
pageSize: 10, // ,
storeList:[]
},
selectDate: new Date(),
total: 0, //
@ -562,9 +563,15 @@ export default {
},
methods: {
rechargeExport(){
if(!this.queryForm.storeList.length){
return this.$message.error({
message: "请至少选择一个门店!",
});
}
this.exportloading = true
let params = {
rechargeDate:this.formatTime(this.selectDate, "YYYY-MM-DD hh:mm:ss")
rechargeDate:this.formatTime(this.selectDate, "YYYY-MM-DD hh:mm:ss"),
storeIds:this.queryForm.storeList
}
rechargeExport(params).then(res=>{
this.exportloading = false

@ -140,110 +140,6 @@
/>
</td>
</tr>
<!-- <tr>
<th rowspan="2">提成</th>
<th>现付</th>
<td v-show="wageForm.directConsumption == 0">
<span v-show="!editShow">{{ wageForm.salesCommission }}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.salesCommission"
/>
</td>
<td>
<span v-show="!editShow">{{ wageForm.commissionLarge }}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.commissionLarge"
/>
</td>
<td>
<span v-show="!editShow">{{ wageForm.commissionZhonggong }}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.commissionZhonggong"
/>
</td>
<td>
<span v-show="!editShow">{{
wageForm.commissionTechnician
}}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.commissionTechnician"
/>
</td>
<td>
<span v-show="!editShow">{{ wageForm.commissionSmall }}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.commissionSmall"
/>
</td>
</tr>
<tr>
<th>卡付</th>
<td v-show="wageForm.directConsumption == 0">
<span v-show="!editShow">{{ wageForm.cardSalesCommission }}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.cardSalesCommission"
/>
</td>
<td>
<span v-show="!editShow">{{ wageForm.cardCommissionLarge }}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.cardCommissionLarge"
/>
</td>
<td>
<span v-show="!editShow">{{
wageForm.cardCommissionZhonggong
}}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.cardCommissionZhonggong"
/>
</td>
<td>
<span v-show="!editShow">{{
wageForm.cardCommissionTechnician
}}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.cardCommissionTechnician"
/>
</td>
<td>
<span v-show="!editShow">{{ wageForm.cardCommissionSmall }}</span>
<input
oninput="this.value=this.value.replace(/\D*(\d*)(\.?)(\d{0,4})\d*/,'$1$2$3')"
pattern="[0-9]*\.?[0-9]1{0,4}"
v-show="editShow"
v-model="wageForm.cardCommissionSmall"
/>
</td>
</tr> -->
</table>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" @click="wageDialogVisible = false" plain> </el-button>

@ -1,9 +1,9 @@
<template>
<el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="dialogFormVisible" :before-close="handleClose" width="50%" >
<el-form :model="form" ref="form" label-width="60px">
<el-form-item label="协议名称" prop="mobilePhone">
<el-form-item label="协议名称" prop="agreementName">
<div class="form-width-ms">
<el-input v-model="form.agrName">
<el-input v-model="form.agreementName">
</el-input>
</div>
</el-form-item>
@ -13,12 +13,13 @@
</div>
<div slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="dialogFormVisible = false">关闭</el-button>
<el-button size="mini" type="primary" @click="confirms()">{{ title==''?'':'' }}</el-button>
<el-button size="mini" type="primary" @click="confirms()" :loading="loading">{{ title=='修改'?'修改':'添加' }}</el-button>
</div>
</el-dialog>
</template>
<script>
import quillEditor from './quillEditor'
import { updateMemberAgreement,addMemberAgreement } from "@/api/eashier.js";
export default {
components:{
quillEditor
@ -27,25 +28,59 @@
return {
title: "添加",
form:{},
loading:false,
dialogFormVisible: false, //
};
},
methods: {
confirms(){
console.log( this.$refs.quillEditor.content )
this.loading = true
if(this.title == '修改'){
let params = {
...this.form,
content:this.$refs.quillEditor.content
}
updateMemberAgreement(params).then(res=>{
this.loading = false
if(res.code == "000000"){
this.$message.success({ message: "更新成功" })
this.dialogFormVisible = false
this.$emit('init')
}
})
}else{
let params = {
content:this.$refs.quillEditor.content,
agreementName:this.form.agreementName
}
addMemberAgreement(params).then(res=>{
if(res.code == "000000"){
this.$message.success({ message: "添加成功" })
this.dialogFormVisible = false
this.$emit('init')
}
})
}
},
//
handleClose() {
this.dialogFormVisible = false;
},
//
show(id) {
this.title = id?'修改':'添加'
show(res) {
this.title = res?'修改':'添加'
this.dialogFormVisible = true
this.$nextTick(()=>{
if(res){
this.$nextTick(()=>{
this.form = res
this.$refs.quillEditor.content = res.content
})
}else{
this.$nextTick(()=>{
this.form = {}
this.$refs.quillEditor.content = ''
})
})
}
},
}
};

@ -3,7 +3,7 @@
<div style="text-align: right;;margin-bottom:10px">
<el-button size="mini" type="primary" @click="handleAddUpdata(1)"></el-button>
<el-button size="mini" type="primary" :disabled="!radioRowValue.id" @click="handleAddUpdata(2)"></el-button>
<el-button size="mini" type="primary" :disabled="!radioRowValue.id">发布</el-button>
<el-button size="mini" type="primary" :disabled="!radioRowValue.id" @click="publishAgreement" :loading="publishLoading">发布</el-button>
</div>
<div>
<el-table :data="list" :header-cell-style="{
@ -13,37 +13,43 @@
max-height="650"
@row-click="rowClick"
@row-dblclick="electConfirm"
v-loading="loading"
>
<el-table-column label="选择" width="55" align="center" sortable type="index">
<template slot-scope="scope">
<el-radio v-model="radio" :label="scope.row.id" @change.native="(scope.row)">{{null}}</el-radio>
</template>
</el-table-column>
<el-table-column label="协议名称" min-width="85" align="center" prop="name"></el-table-column>
<el-table-column label="创建时间" min-width="85" align="center"></el-table-column>
<el-table-column label="创建人" min-width="85" align="center"></el-table-column>
<el-table-column label="修改时间" min-width="85" align="center"></el-table-column>
<el-table-column label="修改人" min-width="85" align="center"></el-table-column>
<el-table-column label="发布时间" min-width="85" align="center"></el-table-column>
<el-table-column label="发布人" min-width="85" align="center"></el-table-column>
<el-table-column label="状态" min-width="85" align="center"></el-table-column>
<el-table-column label="协议名称" min-width="85" align="center" prop="agreementName"></el-table-column>
<el-table-column label="创建人" min-width="85" align="center" prop="addName"></el-table-column>
<el-table-column label="创建时间" min-width="85" align="center" prop="addDate"></el-table-column>
<el-table-column label="修改人" min-width="85" align="center" prop="updateName"></el-table-column>
<el-table-column label="修改时间" min-width="85" align="center" prop="updateDate"></el-table-column>
<el-table-column label="发布人" min-width="85" align="center" prop="startName"></el-table-column>
<el-table-column label="发布时间" min-width="85" align="center" prop="startDate"></el-table-column>
<el-table-column label="状态" min-width="85" align="center" prop="startState">
<template slot-scope="scope">
<el-tag :type="scope.row.startState == 1 ? 'primary' : 'success'">{{ scope.row.startState==1?'启用':'未启用' }}</el-tag>
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top:15px;">
<!-- 分页组件 -->
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageInfo.pageNum" :page-sizes="[10, 20, 30, 40, 50]" :page-size="pageInfo.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="pageInfo.total"></el-pagination>
</div>
</div>
<detail ref="detail"/>
<detail ref="detail" @init="init"/>
</div>
</template>
<script>
import detail from './components/index'
import { memberSelectPage,pushMemberAgreement } from "@/api/eashier.js";
export default {
components:{
detail
},
data() {
return {
publishLoading:false,
radioRowValue:{},
radio:"",
pageInfo: {
@ -51,20 +57,42 @@
pageNum: 1,
pageSize: 10,
},
list:[{
name:'1',
id:1
},{
name:'2',
id:2
}]
list:[],
loading:false
};
},
created() {
this.init()
},
methods:{
publishAgreement(){
let params = {
id:this.radio
}
this.publishLoading = true
pushMemberAgreement(params).then(res=>{
this.publishLoading = false
if(res.code == "000000"){
this.$message.success({ message: "发布成功" })
this.init()
}
})
},
init(){
let params = {
...this.pageInfo
}
this.loading = true
memberSelectPage(params).then(res=>{
this.loading = false
if(res.code == "000000"){
this.list = res.pageInfo.list
this.pageInfo.total = res.pageInfo.total
}
})
},
handleAddUpdata(num){
num==1?this.$refs.detail.show():this.$refs.detail.show(this.radioRowValue.id)
num==1?this.$refs.detail.show():this.$refs.detail.show(this.radioRowValue)
},
handleCurrentChange(current){
this.pageInfo.pageNum = current

@ -4,7 +4,7 @@
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="还款单" name="还款单">
<el-select v-if="headOffice == 1" ref="select" multiple collapse-tags filterable default-first-option v-model="queryForm.storeList" clearable @clear="getData" placeholder="请选择门店" @change="getData">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.storeId">
</el-option>
</el-select>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的单据号" clearable></el-input>
@ -278,7 +278,7 @@ import {
recycleCancelDebtList,
submitCancelDebtList,
} from "@/api/eashier.js";
import { organizations } from "@/api/storeManage.js";
import { organizations,SysRoleStore } from "@/api/storeManage.js";
import excel from "@/components/excel";
import admin from "@/components/staffList/admin/index";
import manager from "@/components/staffList/manager/index";
@ -674,22 +674,25 @@ export default {
list.forEach((item) => {
if (item.id == 5008001) {
this.getData();
organizations({ pageSize: 999 }).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
res.pageInfo.list.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
});
},

@ -105,6 +105,11 @@
</el-table-column>
<el-table-column show-overflow-tooltip min-width="100" align="center" prop="projectNum" label="项目编码"></el-table-column>
<el-table-column show-overflow-tooltip min-width="120" align="center" prop="projectName" label="项目名称"></el-table-column>
<el-table-column show-overflow-tooltip min-width="100" align="center" label="提成明细">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleCommission(scope.row)"></el-button>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip min-width="100" align="center" prop="transactionPrice" label="项目金额"></el-table-column>
<el-table-column show-overflow-tooltip min-width="100" align="center" prop="" label="支付类型">
<template slot-scope="scope">
@ -128,11 +133,6 @@
</template>
</el-table-column>
<el-table-column show-overflow-tooltip min-width="100" align="center" prop="remark" label="备注"></el-table-column>
<el-table-column show-overflow-tooltip min-width="100" align="center" label="提成明细">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleCommission(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
<div class=' border-radius-10 border margin-left-xs bg-white padding-xs' style="width:280px" v-if="list.length!=0">

@ -80,12 +80,12 @@
</div>
</el-form>
</div>
<span slot="footer" class="dialog-footer" v-if="title=='明细'">
<!-- <span slot="footer" class="dialog-footer" v-if="title=='明细'">
<el-button size="mini" type="primary" @click="detailDialog=false"></el-button>
</span>
<span v-else slot="footer" class="dialog-footer">
</span> -->
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="cancel()"> </el-button>
<el-button v-if="title=='修改'" size="mini" type="primary" @click="subStaffRatio()"> </el-button>
<el-button size="mini" type="primary" @click="subStaffRatio()"> </el-button>
</span>
</el-dialog>
</template>

@ -171,7 +171,7 @@
<el-table-column label="最低转入次数" show-overflow-tooltip align="center" prop="minumumTimes" min-width="110">
</el-table-column>
<el-table-column label="单价" align="center" prop="prices" min-width="90">
<template slot-scope='scope'>
<!-- <template slot-scope='scope'>
<div class="form-input-width" v-if="inNumberIndexs != scope.$index"
@click="openEdit(scope.row, scope.$index, inNumberIndexs = scope.$index)">
{{ scope.row.prices }}
@ -179,7 +179,7 @@
</div>
<el-input v-focus class="form-input-width-xs" type="number" v-else v-model="scope.row.prices"
@blur="endEditprices(scope.row)"></el-input>
</template>
</template> -->
</el-table-column>
<el-table-column label="转入次数" align="center" prop="changeInTime" min-width="90">
<template slot-scope='scope'>
@ -195,6 +195,15 @@
<!-- <el-table-column label="欠款金额" v-if="sessionStorageData.allowdebt" align="center" prop="debtMoney"
min-width="90"></el-table-column> -->
<el-table-column label="成交金额" align="center" prop="transactionMoney" min-width="80">
<template slot-scope='scope'>
<div class="form-input-width" v-if="inNumberIndexs != scope.$index"
@click="openEdit(scope.row, scope.$index, inNumberIndexs = scope.$index)">
{{ scope.row.transactionMoney }}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus class="form-input-width-xs" type="number" v-else v-model="scope.row.transactionMoney"
@blur="endEditprices(scope.row)"></el-input>
</template>
</el-table-column>
</el-table>
</div>
@ -869,8 +878,9 @@ export default {
// });
// row.changeInTime = row.minumumTimes;
// }
row.prices = (row.transactionMoney / row.changeInTime).toFixed(2)*1
if (row.minumumPriceMember > row.prices) {
this.$alert("单价不可以低于最低单价: ", "提示", {
this.$alert(`单价不可以低于最低单价: ${row.minumumPriceMember}`, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
@ -880,7 +890,7 @@ export default {
});
row.prices = row.minumumPriceMember
} else if (row.priceMember < row.prices) {
this.$alert("单价不可以高于标准单价: ", "提示", {
this.$alert(`单价不可以高于标准单价: ${row.priceMember}`, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",

@ -121,6 +121,7 @@ export default {
//
pageNum: 1,
pageSize: 10,
storeList:[]
},
list: [], //
activeName: "现付",
@ -138,16 +139,22 @@ export default {
},
methods: {
handleExport(){
if(!this.queryForm.storeList.length){
return this.$message.error({
message: "请至少选择一个门店!",
});
}
this.$refs.dateExport.searchDialog = true
},
handleDateExport(val){
this.exportLoad = true
let params = {
strDate:this.formatTime(val, "YYYY-MM")
strDate:this.formatTime(val, "YYYY-MM"),
storeIds:this.queryForm.storeList
}
exporCardChange(params).then(res=>{
this.exportLoad = false
let blob = new Blob([res]);
let blob = new Blob([res]);
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);
console.log(url);
@ -221,7 +228,11 @@ export default {
this.listLoading = true;
let selectDate = this.formatTime(this.selectDate, "YYYYMM");
this.queryForm.selectDate = selectDate;
cardChangePage(this.queryForm).then((res) => {
let params = {
...this.queryForm,
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
cardChangePage(params).then((res) => {
this.listLoading = false;
if (res.code == "000000") {

@ -8,6 +8,11 @@
}" >
<el-table-column align="center" prop="courseReatmentNum" label="单号" min-width="130"></el-table-column>
<el-table-column align="center" prop="date" label="单据日期" min-width="150"> </el-table-column>
<el-table-column show-overflow-tooltip min-width="100" align="center" label="提成明细" v-if="isShow">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleCommission(scope.row)"></el-button>
</template>
</el-table-column>
<el-table-column align="center" prop="memberName" label="名字" min-width="70"> </el-table-column>
<el-table-column align="center" prop="mobilePhone" label="手机号码" min-width="100"> </el-table-column>
<el-table-column align="center" prop="projectNum" label="疗程编码" min-width="100"> </el-table-column>
@ -23,11 +28,6 @@
</template>
</el-table-column>
<el-table-column align="center" prop="description" label="说明" min-width="120"> </el-table-column>
<el-table-column show-overflow-tooltip min-width="100" align="center" label="提成明细">
<template slot-scope="scope">
<el-button type="primary" size="mini" @click="handleCommission(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="text-bold padding-xs">卡付/现付</div>
<div class="flex justify-start align-start ">
@ -64,7 +64,7 @@
<admin ref="admin" @adminData="adminData"></admin>
<manager ref="manager" @managerData="managerData"></manager>
</div>
<span slot="footer" class="dialog-footer" v-if="title=='明细'">
<span slot="footer" class="dialog-footer" v-if="title=='明细'&& !isShow">
<el-button size="mini" type="primary" @click="detailDialog=false"></el-button>
</span>
<span v-else slot="footer" class="dialog-footer">
@ -114,6 +114,11 @@ export default {
created(){
this.init()
},
computed:{
isShow(){ //
return this.$route.path == '/errorOrder'
}
},
methods: {
handleCommission(){
this.$refs.detail.show(this.project)

@ -522,6 +522,7 @@ export default {
//
pageNum: 1, //
pageSize: 10, // ,
storeList:[]
},
selectDate: new Date(),
payMoney: "",
@ -703,9 +704,15 @@ export default {
},
methods: {
exportachis(){
if(!this.queryForm.storeList.length){
return this.$message.error({
message: "请至少选择一个门店!",
});
}
this.exportloading = true
let params = {
date:this.formatTime(this.selectDate, "YYYY-MM-DD hh:mm:ss")
date:this.formatTime(this.selectDate, "YYYY-MM-DD hh:mm:ss"),
storeIds:this.queryForm.storeList
}
exportachis(params).then(res=>{
this.exportloading = false

@ -177,7 +177,7 @@
<div style="display: flex;justify-content:center;margin-right:50px">
<div>
<el-button size="mini" type="info" @click="reset"> </el-button>
<el-button size="mini" type="primary" plain @click="openRefList (refDialogVisible=true)" v-role='5007001'>列表</el-button>
<el-button size="mini" type="primary" plain @click="openRefList(refDialogVisible=true)" v-role='5007001'>列表</el-button>
<el-button size="mini" type="primary" :loading="loading" @click="submit(loading=true)" v-role='5007002'> </el-button>
</div>
</div>
@ -663,6 +663,7 @@ export default {
pageNum: 10,
pageNum: 1,
type: 2,
storeList:[]
},
total: 0,
list: [],
@ -782,12 +783,18 @@ export default {
},
methods: {
exportRefundCash(){
if(!this.queryForm.storeList.length){
return this.$message.error({
message: "请至少选择一个门店导出!",
});
}
this.$refs.dateExport.show()
},
handleDateExport(val){
this.exportloading = true
let params = {
strDate:this.formatTime(val, "YYYY-MM")
strDate:this.formatTime(val, "YYYY-MM"),
storeIds:this.queryForm.storeList
}
exportRefundCash(params).then(res=>{
this.exportloading = false
@ -1727,7 +1734,11 @@ export default {
this.getOrder();
},
getOrder() {
refOrderPage(this.queryForm).then((res) => {
let params = {
...this.queryForm,
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
refOrderPage(params).then((res) => {
if (res.code == "000000") {
this.list = res.pageInfo.list;
this.total = res.pageInfo.total;

@ -605,6 +605,7 @@ export default {
pageNum: 10,
pageNum: 1,
type: 1,
storeList:[]
},
total: 0,
list: [],
@ -643,12 +644,18 @@ export default {
},
methods: {
handleExport(){
if(!this.queryForm.storeList.length){
return this.$message.error({
message: "请至少选择一个门店导出!",
});
}
this.$refs.dateExport.searchDialog = true
},
exportRefCourse(val){
this.exportloading = true
let params = {
strDate:this.formatTime(val, "YYYY-MM")
strDate:this.formatTime(val, "YYYY-MM"),
storeIds:this.queryForm.storeList
}
exportRefCourse(params).then(res=>{
this.exportloading = false
@ -1073,7 +1080,11 @@ export default {
}
},
getOrder() {
refOrderPage(this.queryForm).then((res) => {
let params = {
...this.queryForm,
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
refOrderPage(params).then((res) => {
if (res.code == "000000") {
this.list = res.pageInfo.list;
this.total = res.pageInfo.total;

@ -1269,7 +1269,7 @@ export default {
queryForm: {
pageNum: 10,
pageNum: 1,
type: 0
type: 0,
},
total: 0,
list: [],
@ -1313,12 +1313,19 @@ export default {
},
methods: {
exportRefundRec(){
console.log(this.queryForm.storeList)
if(!this.queryForm.storeList){
return this.$message.error({
message: "请至少选择一个门店导出!",
});
}
this.$refs.dateExport.show()
},
handleExport(val){
this.exportloading = true
let params = {
strDate:this.formatTime(val, "YYYY-MM")
strDate:this.formatTime(val, "YYYY-MM"),
storeIds:this.queryForm.storeList
}
exportRefundRec(params).then(res=>{
this.exportloading = false
@ -1808,7 +1815,11 @@ export default {
}
},
getOrder() {
refOrderPage(this.queryForm).then(res => {
let params = {
...this.queryForm,
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
refOrderPage(params).then(res => {
if (res.code == "000000") {
this.list = res.pageInfo.list;
this.total = res.pageInfo.total;

@ -4,7 +4,7 @@
<el-tabs v-model="activeName" @tab-click="handleClick">
<el-tab-pane label="还款单" name="还款单">
<el-select v-if="headOffice == 1" ref="select" multiple collapse-tags filterable default-first-option v-model="queryForm.storeList" clearable @clear="getData" placeholder="请选择门店" @change="getData">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
<el-option v-for="item in options" :key="item.id" :label="item.storeNum + '-' + item.storeName" :value="item.storeId">
</el-option>
</el-select>
<el-input size="medium" class="form-width-ms" v-model="queryForm.repayNum" placeholder="输入要查询的单据号" clearable></el-input>
@ -56,152 +56,7 @@
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryForm.pageNum" :page-sizes="[10,20,30,40,50]" :page-size="queryForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
</el-tab-pane>
<!-- <el-tab-pane label="取消欠款" name="取消欠款">
<selec v-if="headOffice == 1" ref="selec" @selecData="selecData"></selec>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的单据号" clearable></el-input>
<el-input size="medium" class="form-width-ms" v-model="queryForm.memberName" placeholder="输入要查询的会员名字" clearable></el-input>
<el-input size="medium" class="form-width-ms" maxlength="11" v-model="queryForm.mobilePhone" placeholder="输入要查询的11位会员手机号" oninput="this.value=this.value.replace(/\D/g,'')" pattern="[0-9]*" clearable></el-input>
<el-button size="mini" type="primary" plain @click="getData"></el-button>
<el-button @click="confirms(radioList)" size="mini" type="primary" :disabled="radioList.state==undefined">明细</el-button>
<el-button @click="editOrder(1)" size="mini" type="primary" :disabled="radioList.state==3||radioList.state==5 ||radioList.state==1 ||radioList.state==undefined">送审</el-button>
<el-button @click="editOrder(2)" size="mini" type="primary" :disabled="radioList.state==0||radioList.state==5||radioList.state==2||radioList.state==3||radioList.state==4||radioList.state==undefined" plain>回收</el-button>
<el-button @click="editOrder(3)" size="mini" type="primary" :disabled="radioList.state==2||radioList.state==5||radioList.state==3 || radioList.state==0|| radioList.state==4||radioList.state==undefined">审核</el-button>
<el-button @click="editOrder(4)" size="mini" type="primary" :disabled="radioList.state==0||radioList.state==5|| radioList.state==1||radioList.state==2|| radioList.state==4||radioList.state==undefined">反审核</el-button>
<el-table :data="list" class="margin-top-xs" @row-dblclick="confirms" @row-click="clickRow" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}" ref="multipleTable" highlight-current-row tooltip-effect="dark" stripe>
<el-table-column align="center" label="状态" min-width="130">
<template slot-scope="scope">
<div class="flex align-center">
<el-radio v-model="radioValue" :label="scope.row.id" @change.native="(scope.row)">{{''}}
</el-radio>
<el-tag size="medium" effect="dark" :type="scope.row.state==0?'info':''||scope.row.state==1?'primary':''||scope.row.state==2?'info':''||scope.row.state==3?'success':''||scope.row.state==4?'warning':scope.row.state==5?'primary':''">
<span v-show="scope.row.state==0"></span>
<span v-show="scope.row.state==1"></span>
<span v-show="scope.row.state==2"></span>
<span v-show="scope.row.state==3"></span>
<span v-show="scope.row.state==4"></span>
<span v-show="scope.row.state==5"></span>
<span v-show="scope.row.state==null"></span>
</el-tag>
</div>
</template>
</el-table-column>
<el-table-column prop="docType" label="类型" align="center" width="75">
<template slot-scope="scope">
<div>{{scope.row.docType=='card_use'?'疗程':scope.row.docType=='promotion_card_use'?'促销':scope.row.liftType==1?'升降级':'正常充值'}}</div>
</template>
</el-table-column>
<el-table-column align="center" prop="docNum" show-overflow-tooltip label="单号" min-width="120"></el-table-column>
<el-table-column align="center" prop="docDate" show-overflow-tooltip label="日期" min-width="105"></el-table-column>
<el-table-column align="center" prop="memberName" label="会员名字" min-width="80"></el-table-column>
<el-table-column align="center" prop="mobilePhone" label="手机号码" min-width="100"></el-table-column>
<el-table-column align="center" prop="tradeName" label="名称" min-width="120"></el-table-column>
<el-table-column align="center" prop="tradeMoney" label="成交金额" min-width="80"></el-table-column>
<el-table-column align="center" prop="debtMoney" label="待付金额" min-width="80"></el-table-column>
<el-table-column align="center" prop="cancelMoney" label="取消欠款金额" min-width="110"></el-table-column>
<el-table-column align="center" prop="cancelNum" label="取消欠款次数" min-width="110"></el-table-column>
<el-table-column align="center" label="操作" width="150">
<template slot-scope="scope">
<el-button size="mini" type="primary" :disabled="!(scope.row.state==4||scope.row.state==2||scope.row.state==0)" plain @click="(cancelForm=scope.row,cancelDialogVisible=true,title='修改')"></el-button>
<el-button size="mini" type="primary" plain @click="del(scope.row)"></el-button>
</template>
</el-table-column>
</el-table>
<div class="block" style="margin-top:15px;"> -->
<!-- 分页组件 -->
<!-- <el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryForm.pageNum" :page-sizes="[10,20,30,40,50]" :page-size="queryForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
</el-tab-pane> -->
</el-tabs>
<!-- <el-dialog :close-on-click-modal="false" v-dialogDrag :title="title" :visible.sync="cancelDialogVisible" width="650px" append-to-body>
<el-form label-width="120px" inline>
<div v-if="cancelForm.docType=='promotion_card_use'">
<el-form-item label="会员名称">
{{cancelForm.memberName}}
</el-form-item>
<el-form-item label="手机号码">
{{cancelForm.memberName}}
</el-form-item>
<el-form-item label="促销名称">
{{cancelForm.tradeName}}
</el-form-item>
<el-form-item label="成交金额">
<span class="text-red text-price">
{{cancelForm.tradeMoney}}
</span>
</el-form-item>
<el-form-item label="欠款金额">
<span class="text-cyan text-price">
{{cancelForm.debtMoney}}
</span>
</el-form-item>
<el-form-item label="取消欠款">
<span class="text-cyan text-price">
{{cancelForm.cancelMoney}}
</span>
</el-form-item>
<el-table :data="cancelForm.cancelDebtMxes" highlight-current-row tooltip-effect="dark">
<el-table-column prop="courseProjectNum" show-overflow-tooltip label="项目编码" align="center" min-width="80"></el-table-column>
<el-table-column prop="courseProjectName" show-overflow-tooltip label="项目名称" align="center" min-width="120"></el-table-column>
<el-table-column prop="price" show-overflow-tooltip label="欠款" align="center" min-width="80">
<el-table-column prop="debtMoney" show-overflow-tooltip label="金额" align="center" min-width="80"></el-table-column>
<el-table-column prop="debtCount" show-overflow-tooltip label="次数" align="center" min-width="80"></el-table-column>
</el-table-column>
<el-table-column prop="price" show-overflow-tooltip label="取消欠款" align="center" min-width="80">
<el-table-column prop="cancelMoney" show-overflow-tooltip label="金额" align="center" min-width="80">
<template slot-scope="scope">
<div @click.stop v-if="title=='修改'">
<div class="text-cyan" v-if="editCancelMIndex!=scope.$index" @click="openEditCancelM(scope.row,scope.$index,editCancelMIndex=scope.$index)">
{{scope.row.cancelMoney}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus type="number" class="form-input-width-xs" v-else @blur="endEditCancelM(scope.row,editCancelMIndex=-1)" v-model="scope.row.cancelMoney"></el-input>
</div>
<div v-else>{{scope.row.cancelMoney}}</div>
</template>
</el-table-column>
<el-table-column prop="cancelNum" show-overflow-tooltip label="次数" align="center" min-width="80">
<template slot-scope="scope">
<div @click.stop v-if="title=='修改'">
<div class="text-cyan" v-if="editCancelCIndex!=scope.$index" @click="openEditCancelC(scope.row,scope.$index,editCancelCIndex=scope.$index)">
{{scope.row.cancelNum}}
<i class="el-icon-edit text-cyan"></i>
</div>
<el-input v-focus type="number" class="form-input-width-xs" v-else @blur="endEditCancelC(scope.row,editCancelCIndex=-1)" v-model="scope.row.cancelNum"></el-input>
</div>
<div v-else>{{scope.row.cancelNum}}</div>
</template>
</el-table-column>
</el-table-column>
</el-table>
</div>
<div v-else>
<el-form-item label="欠款帐户">
{{cancelForm.tradeName}}
</el-form-item>
<el-form-item label="成交金额">
<span class="text-red text-price">
{{cancelForm.tradeMoney}}
</span>
</el-form-item>
<el-form-item label="欠款金额">
<span class="text-cyan text-price">
{{cancelForm.debtMoney}}
</span>
</el-form-item>
<el-form-item label="取消欠款金额">
<el-input type="number" class="form-width-ms" v-model="cancelForm.cancelMoney"></el-input>
</el-form-item>
<el-form-item label="取消欠款次数" v-if="cancelForm.docType == 'card_use'">
<el-input pattern="[0-9]*\" type="number" class="form-width-ms" v-model="cancelForm.cancelNum"></el-input>
</el-form-item>
</div>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="cancelDialogVisible = false"> </el-button>
<el-button size="mini" v-if="title=='修改'" type="primary" @click="confirmCancel()"> </el-button>
</span>
</el-dialog> -->
<el-dialog :close-on-click-modal="false" v-dialogDrag title="打印" :visible.sync="printDialogVisible" width="60%">
<div id="printService" class="printDiv">
<div class="text-center text-grey padding-xs">
@ -279,7 +134,7 @@ import {
submitCancelDebtList,
exportrepay
} from "@/api/eashier.js";
import { organizations } from "@/api/storeManage.js";
import { SysRoleStore } from "@/api/storeManage.js";
import excel from "@/components/excel";
import admin from "@/components/staffList/admin/index";
import manager from "@/components/staffList/manager/index";
@ -342,6 +197,7 @@ export default {
//
pageNum: 1,
pageSize: 10,
storeList:[]
},
infoDialog: false, //
editCancelCIndex: -1,
@ -351,12 +207,18 @@ export default {
},
methods: {
handleDateShow(){
if(!this.queryForm.storeList.length){
return this.$message.error({
message: "请至少选择一个门店导出!",
});
}
this.$refs.dateExport.show()
},
handleDateExport(val){
this.exportLoad = true
let params = {
strDate:this.formatTime(val, "YYYY-MM")
strDate:this.formatTime(val, "YYYY-MM"),
storeIds:this.queryForm.storeList
}
exportrepay(params).then(res=>{
this.exportLoad = false
@ -692,12 +554,9 @@ export default {
list.forEach((item) => {
if (item.id == 5008001) {
this.getData();
organizations({ pageSize: 999 }).then((res) => {
SysRoleStore({ roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId }).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",

@ -107,6 +107,7 @@ export default {
pageNum: 1,
pageSize: 10,
type: 1,
storeList:[]
},
printForm: {},
month: "",
@ -115,9 +116,15 @@ export default {
},
methods: {
exporSyList(){
if(!this.queryForm.storeList.length){
return this.$message.error({
message: "请至少选择一个门店!",
});
}
this.exportloading = true
let params = {
cashDate:this.formatTime(this.month, "YYYY-MM-DD hh:mm:ss")
cashDate:this.formatTime(this.month, "YYYY-MM-DD hh:mm:ss"),
storeIds:this.queryForm.storeList
}
exporSyList(params).then(res=>{
this.exportloading = false

@ -187,7 +187,7 @@
<!-- 只有补单才需要重发短信 -->
<el-button type="primary" size="mini" @click="reissueSms()"></el-button>
<el-button type="primary" plain size="mini" @click="handleClose"></el-button>
<el-button :disabled="form.isCancel==1" type="primary" size="mini" @click="confirm()">{{title==''?title:""}}</el-button>
<el-button :disabled="form.isCancel==1" type="primary" size="mini" @click="confirm()" :loading="isLoading">{{title=='作废'?title:"确定"}}</el-button>
</div>
</el-dialog>
</template>
@ -207,6 +207,7 @@ export default {
components: { staffratio },
data() {
return {
isLoading:false,
form: {}, //
list: [], //
dialogVisible: false, //
@ -555,7 +556,9 @@ export default {
};
list.push(items);
});
this.isLoading = true
cashcancel(list).then((res) => {
this.isLoading = false
if (res.code == "000000") {
this.$message.success({
message: res.message,
@ -635,8 +638,9 @@ export default {
};
list.push(item2);
});
this.isLoading = true
cashEditStaff(list).then((res) => {
this.isLoading = false
if (res.code == "000000") {
this.$message.success({
message: res.message,

@ -2,10 +2,10 @@
<div>
<el-dialog :close-on-click-modal="false" append-to-body v-dialogDrag :title="title" :visible.sync="dialogVisible" width="80%" :before-close="handleClose">
<div style="text-align: center">
<el-transfer style="text-align: left; display: inline-block" v-model="dataList" filterable :left-default-audited="leftData" :right-default-audited="rightData" :render-content="renderFunc" :titles="['门店列表', '适用门店']" :button-texts="['', '']" :format="{
<el-transfer style="text-align: left; display: inline-block" v-model="dataList" filterable :left-default-audited="leftData" :left-default-checked='leftArr' :right-default-audited="rightData" :render-content="renderFunc" :titles="['门店列表', '适用门店']" :button-texts="['', '']" :format="{
noAudited: '${total}',
hasAudited: '${audited}/${total}'
}" @change="handleChange" :data="data">
}" @change="handleChange" :data="data" @left-check-change="handleLeftChange">
</el-transfer>
</div>
<div class="transferFooter">
@ -17,7 +17,7 @@
</template>
<script>
import { organizations } from "@/api/storeManage.js";
import { organizations,pageStore } from "@/api/storeManage.js";
export default {
data() {
return {
@ -27,9 +27,11 @@ export default {
data: [],
title: "门店列表",
leftData: [],
leftArr:[],
rightData: [],
storeList: [],
backMemberList: [],
ascriptionList:[],
renderFunc(h, option) {
return (
<span>
@ -41,6 +43,24 @@ export default {
},
methods: {
handleLeftChange(arr,value){
// let list = []
// this.leftArr = arr
// this.ascriptionList.forEach(item=>{
// arr.forEach(item2=>{
// if(item2 === item){
// list.push(item)
// }
// })
// })
// if(list.length){
// list.forEach(item=>{
// this.leftArr = this.leftArr.concat(this.data.filter(item2 => item2.description === item).map(item3=>item3.key))
// let index = this.leftArr.findIndex(item2=>item2===item)
// this.leftArr.splice(index,1)
// })
// }
},
//
show(form) {
this.dataList = [];
@ -92,22 +112,42 @@ export default {
} else {
this.backMemberList = [];
}
console.log(this.backMemberList);
},
updataData(arr){
let params = {}
pageStore(params).then(res=>{
if(res.code = "000000"){
this.ascriptionList = res.data
let ascriptionList = res.data.filter(item=>item!='无') //
let noAscriptionList = arr.filter(item => !item.description) //
let existAscriptionList = arr.filter(item => item.description) //
let list = []
ascriptionList.forEach((item,index)=>{
list.push({
key:item,
storeId:null,
disabled:true,
storeName:item
})
list = list.concat( existAscriptionList.filter(item2=>item2.description == item) )
})
this.data = noAscriptionList.concat(list)
}
})
},
//
async getData() {
let parentId = JSON.parse(sessionStorage.getItem("storeInfo")).id;
organizations({ pageSize: 999 }).then((res) => {
res.rows.forEach((item) => {
item.key = item.id;
item.storeId = item.id;
item.key = item.id
item.storeId = item.id
});
this.data = res.rows;
// this.data = res.rows;
this.updataData(res.rows)
});
},
},
mounted() {},
created() {},
};
</script>

@ -29,7 +29,7 @@
</el-form-item>
<el-form-item label="所属门店:" prop="storeNames">
<el-select filterable default-first-option v-model="form.storeNames" placeholder="请选择" @change="radioChange" :disabled="title!='添加'">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.storeId">
</el-option>
</el-select>
</el-form-item>
@ -68,7 +68,7 @@ import staffsles from "@/components/staffList/staff/index";
import admin from "@/components/staffList/admin/index";
import member from "@/components/member/index";
import { partten } from "../../../../../partten/index";
import { organizations } from "@/api/storeManage.js";
import { organizations,SysRoleStore } from "@/api/storeManage.js";
export default {
components: {
member,
@ -275,12 +275,15 @@ export default {
//
async getData() {
organizations({ pageSize: 999 }).then((res) => {
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
res.pageInfo.list.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",

@ -1423,7 +1423,7 @@ export default {
};
</script>
<style>
<style scoped>
.packing .el-date-editor.el-input,
.packing .el-date-editor.el-input__inner {
width: 150px;

@ -190,6 +190,7 @@ export default {
options: [],
proList: [],
queryForm: {
storeList:[],
storeType: 0,
pageSize: 10, // ,
pageNum: 1, //
@ -243,11 +244,17 @@ export default {
methods: {
handleExportShow(){
if(!this.queryForm.storeList.length){
return this.$message.error({
message: "请至少选择一个门店导出!",
});
}
this.$refs.dateExport.show()
},
handleDateExport(val){
let params = {
strDate:this.formatTime(val, "YYYY-MM")
strDate:this.formatTime(val, "YYYY-MM"),
storeIds:this.queryForm.storeList
}
exportDocPromotion(params).then(res=>{
this.exportLoad = false
@ -297,7 +304,11 @@ export default {
//
this.searchForm.pageNum = this.queryForm.pageNum;
this.searchForm.pageSize = this.queryForm.pageSize;
docPromotionPageNew(this.searchForm).then((res) => {
let params = {
...this.searchForm,
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
docPromotionPageNew(params).then((res) => {
if (res.code == "000000") {
this.refreshtext = true;
this.list = res.pageInfo.list;
@ -370,7 +381,11 @@ export default {
},
//
getList() {
docPromotionPageNew(this.queryForm).then((res) => {
let params = {
...this.searchForm,
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
docPromotionPageNew(params).then((res) => {
//console.log(res);
if (res.code == "000000") {
this.list = res.pageInfo.list;

@ -0,0 +1,164 @@
<template>
<el-dialog :title="title+'项目类别'" :visible.sync="dialogFormVisible" width="500px" :before-close="handleClose">
<el-form ref="form" :model="form" :rules="rules" label-width="100px">
<el-form-item label="上级" prop="parentId" v-if="!form.children">
<treeselect v-model="form.parentId" :options="options" :disable-branch-nodes="false" :show-count="true" :normalizer="normalizer" :flatten-search-results="false" noOptionsText="无上级可选" placeholder="请选择上级" />
</el-form-item>
<el-form-item label="编码:" prop='projectTypeNum'>
<el-input ref="projectTypeNum" type="number" v-model="form.projectTypeNum" autocomplete="on" style="width:200px"></el-input>
</el-form-item>
<el-form-item label="名称:" prop='projectTypeName'>
<el-input v-model="form.projectTypeName" autocomplete="on" style="width:200px"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="handleClose" size="mini"> </el-button>
<el-button type="primary" size="mini" @click="save"> </el-button>
</div>
</el-dialog>
</template>
<script>
import "@riophae/vue-treeselect/dist/vue-treeselect.css";
import Treeselect from "@riophae/vue-treeselect";
import { handleTree } from "@/utils/index";
import {
proTypepage,
proTypeStates,
addproType,
delproType,
editproType,
proTypeDownload,
proTypeExport,
proTypeImport,
} from "@/api/storeManage.js";
export default {
name: "DeptEdit",
components: { Treeselect },
data() {
return {
form: {}, //
rules: {
projectTypeNum: [
{
required: true,
message: "请输入项目类别编码",
trigger: ["blur", "change"],
},
],
deptName: [
{
required: true,
message: "请输入项目类别名称",
trigger: ["blur", "change"],
},
],
},
title: "", //
dialogFormVisible: false, //
options: [],
};
},
methods: {
//
handleClose() {
this.form = {};
this.dialogFormVisible = false;
this.$refs.form.clearValidate();
},
async fetchData() {
await proTypepage({ pageSize: 9999 }).then((res) => {
if (res.code == "000000") {
let list = [];
res.pageInfo.list.forEach((item) => {
if (this.form.projectTypeNum == item.projectTypeNum) {
} else {
list.push(item);
}
});
this.options = handleTree(
list,
"projectTypeNum",
"parentId",
"children",
0
);
}
});
},
normalizer(node) {
if (node.children && !node.children.length) {
delete node.children;
}
return {
id: node.id,
label: node.projectTypeNum + "--" + node.projectTypeName,
children: node.children,
};
},
//
show(row) {
this.form = Object.assign({});
if (row == "添加") {
this.title = row;
} else {
this.title = "修改";
this.form = Object.assign({}, row);
if (this.form.parentId == 0) {
this.form.parentId = null;
}
}
setTimeout(() => {
this.$refs.projectTypeNum.focus();
this.$refs.projectTypeNum.select();
this.$refs.form.clearValidate();
}, 300);
this.fetchData();
this.dialogFormVisible = true;
},
close() {
this.$refs["form"].resetFields();
this.form = this.$options.data().form;
this.dialogFormVisible = false;
},
//
save() {
this.$refs["form"].validate(async (valid) => {
if (valid) {
if (this.title == "添加") {
await addproType(this.form).then((res) => this.callbackFun(res));
} else {
var form = {
id: this.form.id,
projectTypeName: this.form.projectTypeName,
projectTypeNum: this.form.projectTypeNum,
parentId: this.form.parentId,
};
await editproType(form).then((res) => this.callbackFun(res));
}
} else {
return false;
}
});
},
callbackFun(res) {
if (res.code == "000000") {
this.$message.success({ message: this.title + "成功" });
this.$emit("editData");
this.close();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
},
},
};
</script>

@ -0,0 +1,76 @@
<template>
<div>
<el-dialog title="导出" :visible.sync="searchDialog" :modal-append-to-body="false" append-to-body :close-on-click-modal="false">
<el-form :model="searchForm">
<el-form-item label="请选择日期:" label-width="120px">
<div class="block">
<el-date-picker style="width: 2rem;" @change='changeDate' size="large" v-model="date" type="daterange" align="center" unlink-panels range-separator="" start-placeholder="" end-placeholder="" >
</el-date-picker>
</div>
</el-form-item>
<el-form-item label="请选择门店:" label-width="120px">
<div class="block">
<selec @selecData="selecData"/>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="searchDialog = false"> </el-button>
<el-button type="primary" size="mini" @click="search "> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
import selec from "@/components/store/select/index";
export default {
components:{
selec
},
data() {
return {
searchDialog:false,
storeIds:[],
searchForm:{},
date:[new Date(),new Date()]
}
},
methods: {
selecData(v){
this.storeIds = v
},
show(){
this.searchDialog = true
this.date = [new Date(),new Date()]
},
search(){
if(!this.date){
this.$message.warning({ message: "请选择正确日期" });
}else{
if(!this.storeIds.length){
this.$message.warning({ message: "请选择门店" });
}else{
this.searchDialog = false
let date1 = this.formatTime(this.date[0], "YYYY-MM-DD 00:00:00");
let date2 = this.formatTime(this.date[1], "YYYY-MM-DD 23:59:59");
let params = {
storeIds:this.storeIds,
startTime:date1,
endTime:date2
}
this.$emit('confirmExport',params)
}
}
},
changeDate(date){
if(!date){
this.date = []
}
}
},
}
</script>
<style scoped>
</style>

@ -1,58 +0,0 @@
<template>
<div>
<el-dialog title="搜索" :visible.sync="searchDialog">
<el-form :model="searchForm">
<el-form-item label="单据号搜索:" label-width="120px">
<div class="searchDiv">
<el-input size="medium" v-model="searchForm.refundNum" placeholder="输入要查询的单据号" clearable></el-input>
</div>
</el-form-item>
<el-form-item label="跟单人员:" label-width="120px">
<div class="searchDiv">
<el-input size="medium" v-model="searchForm.memberName" placeholder="输入跟单人员" clearable></el-input>
</div>
</el-form-item>
<el-form-item label="次数金额:" label-width="120px">
<div class="searchDiv">
<el-input size="medium" v-model="searchForm.mobilePhone" placeholder="输入次数金额" oninput="this.value=this.value.replace(/\D/g,'')" maxlength="11" pattern="[0-9]*" clearable></el-input>
</div>
</el-form-item>
<el-form-item label="单据日期搜索:" label-width="120px">
<div class="block">
<el-date-picker style="width:1.25rem" @change='changeDate' size="large" v-model="searchForm.date" type="daterange" :default-time="['00:00:01', '23:59:59']" value-format="yyyy-MM-dd HH:mm:ss" align="center" unlink-panels range-separator="" start-placeholder="" end-placeholder="" >
</el-date-picker>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="searchDialog = false"> </el-button>
<el-button type="primary" size="mini" @click="search(searchDialog = false) "> </el-button>
</span>
</el-dialog>
</div>
</template>
<script>
export default {
data() {
return {
searchDialog:false,
searchForm:{}
}
},
methods: {
show(){
this.searchDialog = true
},
search(){},
changeDate(date){
if(!date){
this.searchForm.date = ''
}
}
},
}
</script>
<style scoped>
</style>

@ -1,75 +1,481 @@
<template>
<div class="proType">
<div class="header_flex">
</div>
<el-table style="width: 100%;margin-top:5px" max-height="700" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)' ,color:'#eeeeee'}" ref="deptRef" border v-loading="listLoading" :data="list" :element-loading-text="elementLoadingText" default-expand-all row-key="id" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" @row-click="handleRowClick">
<el-table-column align="center" prop="projectTypeNum" sortable label="编码" min-width="100"></el-table-column>
<el-table-column align="center" prop="projectTypeName" :show-overflow-tooltip="true" label="名称" min-width="100"></el-table-column>
<el-table-column align="center" fixed="right" label="操作" width="76" >
<template slot-scope="scope">
<el-button size="mini" type="primary" @click="handleExport(scope.row)" plain>导出</el-button>
</template>
</el-table-column>
</el-table>
<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="selectShow"></el-button>
<el-button size="mini" type="primary" @click="exit"></el-button>
<el-dialog :close-on-click-modal="false" title="修改" :visible.sync="dialogFormVisible" width="50%" v-dialogDrag>
<el-form :model="editForm">
<el-form-item label="编码:" :label-width="formLabelwidth">
<el-input oninput="this.value=this.value.replace(/[^\w_]/g,'');" v-model="editForm.projectTypeNum" style="width:200px" autocomplete="on" :disabled="true">
</el-input>
</el-form-item>
<el-form-item label="名称:" :label-width="formLabelwidth">
<el-input v-model="editForm.projectTypeName" style="width:200px" autocomplete="on"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" @click="dialogFormVisible = false"> </el-button>
<el-button size="mini" type="primary" @click="confirm(dialogFormVisible=false)"> </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="90" prop="date" label="顾客姓名"></el-table-column>
<el-table-column align="center" min-width="50" prop="allRows" label="项目名称"></el-table-column>
<el-table-column align="center" min-width="50" prop="cashRows" label="数量"></el-table-column>
<el-table-column align="center" min-width="50" prop="courseRows" label="会员编码"></el-table-column>
<el-table-column align="center" min-width="50" prop="rechargeRows" label="单据号"></el-table-column>
<el-table-column align="center" min-width="60" prop="allCashNumber" label="业绩(元)"></el-table-column>
<el-table-column align="center" min-width="50" prop="cashManNumber" label="次数"></el-table-column>
<el-table-column align="center" min-width="50" prop="cashWomanNumber" label="员工工号"></el-table-column>
<el-table-column align="center" min-width="95" prop="allAmount" label="跟蛋管理层"></el-table-column>
<el-table-column align="center" min-width="95" prop="allCardAmount" label="专家组老师"></el-table-column>
<el-table-column align="center" min-width="75" prop="allRepayAmount" label="备注"></el-table-column>
</el-table>
<select-dialog ref="select" />
</el-dialog>
</div>
</template>
<script>
import selectDialog from './components/select.vue'
export default {
components:{
selectDialog
},
data() {
return {
loading: false,
list: [],
Time:new Date()
};
},
methods:{
selectShow(){
this.$refs.select.show()
},
dateChange(date){
},
exit(){
<el-dialog title="搜索" :visible.sync="searchDialog">
<el-form :model="searchForm">
<el-form-item label="类别名称搜索:" label-width="120px">
<div class="searchDiv">
<el-input size="medium" v-model="searchForm.projectTypeName" placeholder="输入要查询的项目类别名称" clearable></el-input>
</div>
</el-form-item>
<el-form-item label="根据状态搜索:" label-width="120px">
<div class="searchDiv">
<el-radio-group v-model="searchForm.state" fill="#f78989">
<el-radio :label="1" @click.native.prevent="clickitem(1)" size="medium" type="primary">启用中</el-radio>
<el-radio :label="0" @click.native.prevent="clickitem(0)" size="medium" type="primary">已停用</el-radio>
</el-radio-group>
</div>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="searchDialog = false"> </el-button>
<el-button type="primary" size="mini" @click="search(searchDialog = false) "> </el-button>
</span>
</el-dialog>
<el-dialog title="导入表格" :visible.sync="infoDialog" :close-on-click-modal='false'>
<excel @fileData='fileData' @infoDialogV='infoDialogV'></excel>
</el-dialog>
<el-dialog title="导入提示" :visible.sync="infoErrorDialog">
<span>以下导入的项目类别的 <q>编码</q> 或者 <q>名称</q> 存在重复 , 请检查修改后重新导入</span>
<el-table :data="infoList">
<el-table-column align="center" prop="projectTypeNum" label="编码" sortable min-width="100">
</el-table-column>
<el-table-column align="center" prop="projectTypeName" :show-overflow-tooltip="true" label="名称" min-width="100"></el-table-column>
<el-table-column align="center" label="状态" min-width="80" v-role='4004005'>
<template slot-scope="scope">
<el-switch v-model="scope.row.state" active-text=" " inactive-text="" :active-value="1" :inactive-value="0" inactive-color="#cccccc" class="demo" @change="state(scope.row)" />
</template>
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button size="mini" type="primary" plain @click="infoErrorDialog = false"> </el-button>
</span>
</el-dialog>
<edit ref="edit" @editData="getData"></edit>
<date-export ref="dateExport" @confirmExport="handleDateExport"/>
</div>
</template>
<style>
.proType .el-table th {
padding: 5px 0;
}
</style>
<script>
import edit from "./components/Edit.vue";
import excel from "@/components/excel";
import { handleTree } from "@/utils/index";
import dateExport from './components/dateExport.vue'
import {
proTypepage,
proTypeStates,
delproType,
proTypeDownload,
proTypeExport,
proTypeImport,
queryTree,
groupCourse
} from "@/api/storeManage.js";
export default {
components: {
excel,
edit,
dateExport
},
data() {
return {
currentRow:null,
listLoading: true,
elementLoadingText: "正在加载...",
dialogFormVisible: false, //
addialogFormVisible: false,
searchDialog: false, //
refreshtext: false, //
infoErrorDialog: false,
infoList: [],
headOffice: sessionStorage.getItem("headOffice") * 1,
searchForm: {
//
state: 1,
projectTypeName: "",
},
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;
value1: 0,
date: [],
list: [], //
formLabelwidth: "180px",
formLabelwidth1: "180px",
pageNum: 1, //
total: 0, // //
pageSize: 999, // ,
editForm: [],
addForm: {},
pageInfo: {
total: 0, //
tableList: [],
},
init(){
this.loading = true
searchTrue: false, //
infoDialog: false, //
};
},
methods: {
handleDateExport(v){
let params = {
...v,
projectType:this.currentRow.id
}
console.log(params)
groupCourse(params).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);
})
},
handleExport(row){
this.currentRow = {...row}
this.$refs.dateExport.show()
},
handleRowClick(row, event, column) {
this.$refs.deptRef.toggleRowExpansion(row);
},
//
hasChildren(row) {
if (row.children) {
return true;
}
return false;
},
clickitem(e) {
e === this.searchForm.state
? (this.searchForm.state = null)
: (this.searchForm.state = e);
},
//
download() {
proTypeDownload().then((res) => {
let blob = new Blob([res]);
console.log(blob);
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);
});
},
//
exit() {
if (this.searchForm.projectTypeName == "") {
delete this.searchForm.projectTypeName;
}
proTypeExport(this.searchForm).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);
});
},
//
fileData(v) {
console.log(v);
var fileData = new FormData();
if (v == null) {
this.$alert("请选择需要上传的文件", "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
} else {
fileData.append("multipartFile", v);
proTypeImport(fileData).then((res) => {
if (res.rows != undefined) {
this.infoList = res.rows;
this.infoErrorDialog = true;
} else {
if (res.code == "000000") {
this.$message.success({
message: res.message,
});
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
}
});
}
},
//
infoDialogV(v) {
this.infoDialog = v;
},
//
search() {
//
proTypepage(this.searchForm).then((res) => {
if (res.code == "000000") {
this.searchTrue = true;
this.list = res.pageInfo.list;
this.pageInfo = res.pageInfo;
if (res.pageInfo.total == 0) {
this.$message.warning({
message: "没有找到相对应的项目类别",
});
}
} else {
this.$message.error({
message: res.message,
});
}
});
},
change(value) {
var da = new Date(value).toLocaleString("chinese", {
hour12: false,
});
//console.log(da);
// if(da.indexOf("")||da.indexOf("")){
// //console.log("");
// }
this.date = da;
},
//
edit(row) {
this.$refs.edit.show(row);
},
//
del(row) {
var id = {
id: row.id,
};
this.$confirm("此操作将永久删除该数据, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
cancelButtonClass: "cancelbtnFalses",
confirmButtonClass: "confirmbtnFalses",
})
.then(() => {
delproType(id).then((res) => {
if (res.code == "000000") {
this.$message.success({
message: row.projectTypeName + " 删除成功!",
});
if (this.pageInfo.total % this.pageSize == 1) {
this.pageNum = this.pageNum - 1;
}
this.getData();
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
})
.catch(() => {
this.$message.info({
message: "已取消操作!",
});
});
},
// 0 1
state(row) {
var state = {
id: row.id,
state: row.state,
};
if (row.state == 0) {
this.$confirm(
"如有该项目类别的项目在启用中,不能停用此项目类别, 是否继续?",
"提示",
{
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
cancelButtonClass: "cancelbtnFalses",
confirmButtonClass: "confirmbtnFalses",
}
)
.then(() => {
proTypeStates(state).then((res) => {
//console.log(res);
if (res.code == "000000") {
this.getData();
this.$message({
type: "success",
message: "项目类别已停用",
});
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
this.getData();
}
});
})
.catch(() => {
row.state = 1;
this.$message({
type: "info",
message: "取消停用!",
});
});
} else {
this.$confirm("启用项目类别, 是否继续?", "提示", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning",
cancelButtonClass: "cancelbtnFalses",
confirmButtonClass: "confirmbtnFalses",
})
.then(() => {
proTypeStates(state).then((res) => {
//console.log(res);
if (res.code == "000000") {
this.getData();
this.$message({
type: "success",
message: "启用成功!",
});
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
})
.catch(() => {
row.state = 0;
this.$message({
type: "info",
message: "取消启用",
});
});
}
},
//
handleSizeChange(val) {
this.pageSize = val;
if (this.searchTrue == true) {
this.search();
} else {
this.getData();
}
},
handleCurrentChange(val) {
this.pageNum = val;
if (this.searchTrue == true) {
this.search();
} else {
this.getData();
}
},
//
async getData() {
var page = {
pageNum: this.pageNum,
pageSize: this.pageSize,
};
queryTree().then();
proTypepage(page).then((res) => {
this.listLoading = false;
if (res.code == "000000") {
if (this.refreshtext == true) {
this.$message.success({
message: "已刷新最新数据",
});
this.refreshtext = false;
this.searchTrue = false;
}
let list = [
{ id: "1", projectTypeNum: "1001", parentId: 0 },
{ id: "1002", projectTypeNum: "1002", parentId: "1" },
{ id: "1003", projectTypeNum: "1003", parentId: "1" },
{ id: "1004", projectTypeNum: "1004", parentId: "1" },
];
res.pageInfo.list.forEach((item) => {
// console.log(JSON.parse(JSON.stringify(item)));
if (!item.parentId) {
item.parentId = 0;
}
});
this.list = handleTree(
res.pageInfo.list,
"id",
"parentId",
"children",
0
);
this.pageInfo = res.pageInfo;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
},
},
created() {
let list = JSON.parse(sessionStorage.getItem("list"));
list.forEach((item) => {
if (item.id == 4004001) {
this.getData();
}
}
};
</script>
<style scoped>
</style>
});
},
};
</script>

@ -2,7 +2,7 @@
<!-- 负卡金 -->
<div>
<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 v-for="item in options" :key="item.id" :label="item.label" :value="item.storeId">
</el-option>
</el-select>
<div>
@ -41,7 +41,7 @@
<div>
<el-table :data="tableDate1"
:header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)', color: '#eeeeee' }" style="margin-bottom: 10%; width: 90%;
margin-left: 5%;">
margin-left: 5%;">
<el-table-column align="center" label="疗程">
<el-table-column align="center" prop="openning" label="期初"></el-table-column>
<el-table-column align="center" prop="storeName" label="门店"></el-table-column>
@ -88,7 +88,7 @@
<script>
import { partten } from "../../../../partten/index";
import { organizations } from "@/api/storeManage.js";
import { organizations,SysRoleStore } from "@/api/storeManage.js";
import { dayStatisticRecharge, dayStatisticTreatment } from "../../../api/statistics.js";
export default {
data() {
@ -103,12 +103,15 @@ export default {
},
methods: {
init(){
organizations({ pageSize: 999 }).then((res) => {
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
res.pageInfo.list.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
@ -118,7 +121,7 @@ export default {
callback: (action) => {},
});
}
});
});
},
getData(ids){
if(ids){

@ -5,7 +5,7 @@
<div class="block">
<span class="demonstration padding-left-xs">选择日</span>
<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 v-for="(item,index) in options" :key="index" :label="item.storeNum + '-' + item.storeName" :value="item.storeId">
</el-option>
</el-select>
<el-date-picker v-model="date" type="month" value-format="yyyyMM" :clearable="false">
@ -66,7 +66,7 @@ import {
serviceActive,
balance
} from "../../../api/statistics.js";
import { organizations } from "@/api/storeManage.js";
import { organizations,SysRoleStore } from "@/api/storeManage.js";
export default {
data() {
return {
@ -147,14 +147,14 @@ export default {
})
},
getStoreInit(){
organizations({ pageSize: 999 }).then((res) => {
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
this.$alert(res.message, "获取门店信息", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",

@ -8,8 +8,8 @@
<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-select filterable default-first-option clearable v-model="storeId" placeholder="请选择" v-if="headOffice" multiple collapse-tags>
<el-option v-for="(item,index) in options" :key="index" :label="item.storeNum + '-' + item.storeName" :value="item.storeId">
</el-option>
</el-select>
<span class="demonstration padding-left-xs">选择日</span>
@ -25,6 +25,11 @@
background: 'linear-gradient(#6cb3ff, #1873d4)',
color: '#eeeeee',
}" :summary-method="getSummaries" show-summary border max-height="700">
<el-table-column align="center" prop="brandNumber" label="门店" min-width="120" v-if="headOffice">
<template slot-scope="scope">
{{ scope.row.storeNum +'--'+ scope.row.storeName }}
</template>
</el-table-column>
<el-table-column align="center" prop="brandNumber" label="水牌号"></el-table-column>
<el-table-column align="center" prop="staffName" label="员工名称"></el-table-column>
<el-table-column align="center" min-width="80" prop="baseSalary" label="底薪">
@ -134,7 +139,7 @@ import {
exportachi,
exportachiwhole,
} from "@/api/statistics.js";
import { organizations } from "@/api/storeManage.js";
import { organizations,SysRoleStore } from "@/api/storeManage.js";
import { partten } from "../../../../partten/index";
import perform from "./examine/index";
export default {
@ -190,9 +195,12 @@ export default {
},
methods: {
async getData() {
organizations({ pageSize: 999 }).then((res) => {
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
this.options = res.rows;
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "获取门店信息", {
confirmButtonText: "确定",
@ -210,7 +218,7 @@ export default {
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
form.storeIds = this.storeId
}
exportachi(form).then((res) => {
let blob = new Blob([res]);
@ -227,7 +235,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
if(this.storeId)form.storeIds = this.storeId
exportachiwhole(form).then((res) => {
let blob = new Blob([res]);
var a = document.createElement("a");
@ -296,7 +304,7 @@ export default {
let month = this.formatTime(this.month, "YYYY-MM");
this.loading = true
this.disabled = true
if(this.storeId)form.storeId = this.storeId
if(this.storeId)form.storeIds = this.storeId
achiCommListsgroup(form).then((res) => {
this.loading = false
this.disabled = false

@ -31,16 +31,16 @@
<el-table-column align="center" min-width="50" prop="cashManNumber" label="男客"></el-table-column>
<el-table-column align="center" min-width="50" prop="cashWomanNumber" label="女客"></el-table-column>
</el-table-column>
<el-table-column align="center" min-width="75" prop="allAmount" label="实际营业额"></el-table-column>
<el-table-column align="center" min-width="75" prop="allCardAmount" label="总卡付金额"></el-table-column>
<el-table-column align="center" min-width="75" prop="allRepayAmount" label="还款总金额"></el-table-column>
<el-table-column align="center" min-width="95" prop="allAmount" label="实际营业额"></el-table-column>
<el-table-column align="center" min-width="95" prop="allCardAmount" label="总卡付金额"></el-table-column>
<el-table-column align="center" min-width="95" prop="allRepayAmount" label="还款总金额"></el-table-column>
<el-table-column align="center" label="疗程">
<el-table-column align="center" min-width="75" prop="allCourseAmount" label="总金额"></el-table-column>
<el-table-column align="center" min-width="75" prop="courseCashAmount" label="实收金额"></el-table-column>
<el-table-column align="center" min-width="75" prop="courseRepayAmount" label="还款金额"></el-table-column>
<el-table-column align="center" min-width="75" prop="courseDebtAmount" label="下欠金额"></el-table-column>
<el-table-column align="center" min-width="75" prop="courseCardAmount" label="卡付金额"></el-table-column>
<el-table-column align="center" min-width="85" prop="allCourseAmount" label="总金额"></el-table-column>
<el-table-column align="center" min-width="85" prop="courseCashAmount" label="实收金额"></el-table-column>
<el-table-column align="center" min-width="85" prop="courseRepayAmount" label="还款金额"></el-table-column>
<el-table-column align="center" min-width="85" prop="courseDebtAmount" label="下欠金额"></el-table-column>
<el-table-column align="center" min-width="85" prop="courseCardAmount" label="卡付金额"></el-table-column>
</el-table-column>
<el-table-column align="center" label="充值">
@ -51,11 +51,11 @@
<el-table-column align="center" min-width="75" prop="rechargeCashAmount" label="卡付金额"></el-table-column>
</el-table-column>
<el-table-column align="center" min-width="75" prop="cashAmount" label="收银实收金额"></el-table-column>
<el-table-column align="center" min-width="75" prop="refundAmount" label="退款金额"></el-table-column>
<el-table-column align="center" min-width="75" prop="allCashAchi" label="实收总业绩"></el-table-column>
<el-table-column align="center" min-width="75" prop="cashAchi" label="公司实业绩"></el-table-column>
<el-table-column align="center" min-width="75" prop="storeCashAchi" label="门店实业绩"></el-table-column>
<el-table-column align="center" min-width="85" prop="cashAmount" label="收银实收金额"></el-table-column>
<el-table-column align="center" min-width="85" prop="refundAmount" label="退款金额"></el-table-column>
<el-table-column align="center" min-width="95" prop="allCashAchi" label="实收总业绩"></el-table-column>
<el-table-column align="center" min-width="85" prop="cashAchi" label="公司实业绩"></el-table-column>
<el-table-column align="center" min-width="95" prop="storeCashAchi" label="门店实业绩"></el-table-column>
<el-table-column align="center" label="现付">
<el-table-column
@ -64,15 +64,14 @@
:key="index"
:label="item.label"
:prop="item.prop"
width="80"
width="90"
></el-table-column>
</el-table-column>
</el-table>
</div>
</template>
<script>
import { storeByDayDailys,exportStoreByDayDailys } from "@/api/statistics.js";
import { storeByDayDailys,exportStoreByDayDailys } from "@/api/statistics.js";
export default {
data() {
return {

@ -3,16 +3,8 @@
<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">
<el-button size="mini" slot="append" icon="el-icon-search" @click="openStore"></el-button>
</el-input> -->
<store @selecData="selecData"></store>
</el-form-item>
<!-- <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 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">
@ -29,16 +21,10 @@
</el-date-picker>
<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-button size="mini" type="success" v-role="40013002" @click="exits()" :loading="exitLoad"></el-button>
<el-button size="mini" type="success" @click="handleExport" v-if="headOffice==1" :loading="locumentsLoad"></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="40013002" @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>
@ -67,7 +53,7 @@
<!-- 分页组件 -->
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryForm.pageNum" :page-sizes="[10,20,30,40,50]" :page-size="queryForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
<store ref="store" @storeData="storeData" :storeId='storeId'></store>
<!-- <store ref="store" @storeData="storeData" :storeId='storeId'></store> -->
<admin ref="admin" @adminData="adminData"></admin>
<detail ref="detail" @detailData="detailData"></detail>
</div>
@ -77,6 +63,7 @@ import {
salesmans,
salesmanExportachis,
exportachiMXswhole,
exportachiMXs
} from "@/api/storeManage.js";
import store from "@/components/store/select/index";
// import store from "@/components/store/radio/index";
@ -86,6 +73,8 @@ export default {
components: { store, admin, detail },
data() {
return {
exitLoad:false,
locumentsLoad:false,
headOffice: sessionStorage.getItem("headOffice") * 1, //
disabled:false,
storeId:'',
@ -132,12 +121,39 @@ export default {
};
},
methods: {
handleExport(){
if(!this.queryForm.storeIds){
return this.$message.error({
message: "请至少选择一个门店!",
});
}
let params = {
startDate:this.days[0],
endDate:this.formatTime(this.days[1], "YYYY-MM-DD 23:59:59"),
storeIds:this.queryForm.storeIds,
staffType:1
}
this.locumentsLoad = true
exportachiMXs(params).then(res=>{
this.locumentsLoad = false
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);
})
},
selecData(list){
this.queryForm.storeIds = list
},
//
exit() {
this.exitLoad = true
salesmanExportachis(this.queryForm).then((res) => {
this.exitLoad = true
let blob = new Blob([res]);
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);

@ -1,7 +1,7 @@
<template>
<el-dialog title="门店列表" :visible.sync="dialogFormVisible" append-to-body width="75%" @close="close">
<el-select filterable default-first-option v-model="radio" placeholder="请选择门店" @change="radioChange">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.storeId">
</el-option>
</el-select>
<el-table class="margin-top-xs" max-height="600" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color: '#eeeeee'}" border v-loading="listLoading" :data="list" ref="list" :element-loading-text="elementLoadingText" @row-click="getCurrentRow" :row-class-name="rowName" @selection-change="handleSelectionChange">
@ -52,7 +52,7 @@
</template>
<script>
import { propage, organization, importProject } from "@/api/storeManage.js";
import { propage, organization, importProject,SysRoleStore } from "@/api/storeManage.js";
export default {
data() {
return {
@ -102,12 +102,15 @@ export default {
},
//
async getData() {
organization({ pageSize: 999 }).then((res) => {
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
res.pageInfo.list.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
@ -117,7 +120,7 @@ export default {
callback: (action) => {},
});
}
});
})
},
//
getCurrentRow(row) {

@ -4,8 +4,8 @@
选择日期
<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-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-select filterable default-first-option clearable v-model="storeIds" placeholder="请选择" v-if="headOffice" multiple collapse-tags>
<el-option v-for="(item,index) in options" :key="index" :label="item.storeNum + '-' + item.storeName" :value="item.storeId">
</el-option>
</el-select>
<el-button type="primary" size="mini" @click="exit" v-if="headOffice"></el-button>
@ -84,7 +84,7 @@
</template>
<script>
import { departmentPerformance,organizations,exportachi } from "@/api/storeManage.js";
import { departmentPerformance,organizations,exportachi,SysRoleStore } from "@/api/storeManage.js";
import detail from "./components/index";
export default {
@ -94,7 +94,7 @@ export default {
return {
headOffice: sessionStorage.getItem("headOffice") * 1,
options:[],
storeId:"",
storeIds:"",
pickerOptions: {
//
onPick: ({ maxDate, minDate }) => {
@ -131,7 +131,7 @@ export default {
list: [], //
queryForm: {
//
storeId: sessionStorage.getItem("parentId"),
storeIds: sessionStorage.getItem("parentId"),
pageSize: 10,
pageNum: 1,
},
@ -142,8 +142,8 @@ 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
if(this.storeIds){
form.storeIds = this.storeIds
}
exportachi(form).then(res=>{
let blob = new Blob([res]);
@ -157,9 +157,12 @@ export default {
})
},
async getStore() {
organizations({ pageSize: 999 }).then((res) => {
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
this.options = res.rows;
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "获取门店信息", {
confirmButtonText: "确定",
@ -197,8 +200,8 @@ 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
if(this.storeIds){
form.storeIds = this.storeIds
}
this.loading = true
this.disabled = true

@ -2,8 +2,7 @@
<!-- 引入商品 -->
<el-dialog title="门店列表" :visible.sync="dialogFormVisible" append-to-body width="75%" @close="close">
<el-select filterable default-first-option v-model="radio" placeholder="请选择" @change="radioChange">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
</el-option>
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.storeId"></el-option>
</el-select>
<el-table border v-loading="listLoading" :data="list" ref="list" :element-loading-text="elementLoadingText" @row-click="getCurrentRow" :row-class-name="rowName" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55"></el-table-column>
@ -55,7 +54,7 @@
</template>
<script>
import { propage, organization, importProject } from "@/api/storeManage.js";
import { propage, organization, importProject,SysRoleStore } from "@/api/storeManage.js";
export default {
data() {
return {
@ -107,12 +106,15 @@ export default {
},
//
async getData() {
organization({ pageSize: 999 }).then((res) => {
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
res.pageInfo.list.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
@ -122,7 +124,7 @@ export default {
callback: (action) => {},
});
}
});
})
},
//
getCurrentRow(row) {

@ -20,7 +20,9 @@
{{scope.row.type==0?"服务":scope.row.type==1?"充值":scope.row.type==2?"疗程":scope.row.type==3?"加价转疗程":scope.row.type==4?"充值退":scope.row.type==5?"疗程退":scope.row.type==6?"消费退":scope.row.type==7?"还款":scope.row.type==8?"促销单":'无'}}
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="90" prop="chia" label="成交业绩"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="90" prop="chia" label="需业绩"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="90" prop="cooperationAchi" label="实业绩"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="90" prop="money" label="总业绩"></el-table-column>
</el-table>
<div class="block margin-top-xs">
<!-- 分页组件 -->

@ -4,16 +4,8 @@
<el-form inline>
<el-form-item label="门店编码" v-if="headOffice==1">
<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-form-item>
<br>
<!-- <el-form-item label="门店名称" v-if="headOffice==1">
<div class="form-width">
{{queryForm.storeName}}
</div>
</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>
@ -28,7 +20,8 @@
<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" :disabled="disabled">查询</el-button>
<el-button size="mini" type="success" @click="exit()"></el-button>
<el-button size="mini" type="success" @click="exit()" :loading="exitLoad">导出</el-button>
<el-button size="mini" type="success" @click="handleExport()" v-if="headOffice" :loading="locumentsLoad"></el-button>
</el-form-item>
</el-form>
</div>
@ -60,7 +53,7 @@
<!-- 分页组件 -->
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="queryForm.pageNum" :page-sizes="[10,20,30,40,50]" :page-size="queryForm.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
</div>
<store ref="store" @storeData="storeData"></store>
<!-- <store ref="store" @storeData="storeData"></store> -->
<manager ref="manager" @managerData="managerData"></manager>
<detail ref="detail" @detailData="detailData"></detail>
<staff ref="staff" @staffData="staffData"></staff>
@ -72,6 +65,7 @@ import {
salesman,
salesmanExportachi,
exportachiMXwhole,
exportachiMX
} from "@/api/storeManage.js";
import store from "@/components/store/select/index";
// import store from "@/components/store/radio/index";
@ -82,6 +76,8 @@ export default {
components: { store, manager, detail, staff },
data() {
return {
locumentsLoad:false,
exitLoad:false,
options:[],
disabled:false,
days: [], //
@ -128,12 +124,39 @@ export default {
};
},
methods: {
handleExport(){
if(!this.queryForm.storeIds){
return this.$message.error({
message: "请至少选择一个门店!",
});
}
let params = {
startDate:this.days[0],
endDate:this.formatTime(this.days[1], "YYYY-MM-DD 23:59:59"),
storeIds:this.queryForm.storeIds,
staffType:0
}
this.locumentsLoad = true
exportachiMX(params).then(res=>{
this.locumentsLoad = false
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);
})
},
selecData(list){
this.queryForm.storeIds = list
},
//
exit() {
this.exitLoad = true
salesmanExportachi(this.queryForm).then((res) => {
this.exitLoad = false
let blob = new Blob([res]);
var a = document.createElement("a");
var url = window.URL.createObjectURL(blob);

@ -7,8 +7,7 @@
>
<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-option v-for="item in options" :key="item.id" :label="item.label" :value="item.storeId"></el-option>
</el-select>
</div>
<span slot="footer" class="dialog-footer">
@ -19,7 +18,7 @@
</template>
<script>
import { organizations } from "@/api/storeManage.js";
import { organizations,SysRoleStore } from "@/api/storeManage.js";
export default {
props:['storeIds'],
watch:{
@ -57,22 +56,25 @@
},
//
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) => {},
});
}
});
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
res.pageInfo.list.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
})
}
}
};

@ -7,7 +7,7 @@
>
<div>
<el-select ref="select" collapse-tags filterable default-first-option 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 v-for="item in options" :key="item.id" :label="item.label" :value="item.storeId">
</el-option>
</el-select>
</div>
@ -19,7 +19,7 @@
</template>
<script>
import { organizations,allStores } from "@/api/storeManage.js";
import { organizations,allStores,SysRoleStore } from "@/api/storeManage.js";
export default {
watch:{
showVisible:{
@ -103,22 +103,25 @@ export default {
},
//
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) => {},
});
}
});
let params = {
roleId:JSON.parse(sessionStorage.getItem("userInfo")).roleId
}
SysRoleStore(params).then((res) => {
if (res.code == "000000") {
res.pageInfo.list.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.pageInfo.list;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
})
}
}
};

@ -781,7 +781,6 @@ const router = new VueRouter({
index: "firmAnalyse"
}
},
//关于我们
{
path: "/AboutUs",

@ -122,9 +122,9 @@ body {
.el-header {
/* 头部样式 */
/* background: linear-gradient(#fda1a1, #fd7b7b); */
/* background-color: #1873d4; */
/* background: linear-gradient(#6cb3ff, #1873d4); */
/* 代收 */
/* background: linear-gradient(#6cb3ff, #1873d4); */
/* 常规 */
background: linear-gradient(#6cb3ff, #008000);
border-top: 2px solid linear-gradient(#f78989, #5e9af5);
width: 100%;

Loading…
Cancel
Save