Wangxubin1999 3 years ago
commit c8c073997c

@ -26,9 +26,9 @@ module.exports = {
assetsPublicPath: "/",
proxyTable: {
"/api": {
// target: "http://192.168.31.214:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
target: "http://192.168.31.214:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
//target: "http://192.168.31.209:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
target: "http://192.168.31.201:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
// target: "http://192.168.31.201:8084/", //设置你调用的接口域名和端口号 别忘了加http 本地
// target: "http://139.9.185.131:8098/", //设置你调用的接口域名和端口号 别忘了加http 天懿达正式
// target: "http://139.9.58.205:8084/", //设置你调用的接口域名和端口号 别忘了加http 天懿达正式华为云
// target: "http://139.9.185.131:9094/", //设置你调用的接口域名和端口号 别忘了加http 盛联
@ -46,7 +46,7 @@ module.exports = {
}
},
// Various Dev Server settingsss
host: "192.168.31.194", // can be overwritten by process.env.HOST
host: "192.168.31.193", // can be overwritten by process.env.HOST
port: 3000, // can be overwritten by process.env.PORT, if port is in use, a free one will be determined
autoOpenBrowser: false,
errorOverlay: true,

@ -61,7 +61,7 @@ export function dayStatistic(params) {
// 当日负卡金疗程记录查询
export function dayStatisticTreatment(params) {
return service({
url: "/api" + "/demay/ssm/negativeCard/CourseDayStatistic",
url: "/api" + "/demay/ssm/negativeCard/CourseDayStatistics",
method: "post",
data: params
});
@ -69,7 +69,7 @@ export function dayStatisticTreatment(params) {
//当日负卡金充值记录查询
export function dayStatisticRecharge(params) {
return service({
url: "/api" + "/demay/ssm/negativeCard/rechargeDayStatistic",
url: "/api" + "/demay/ssm/negativeCard/rechargeDayStatistics",
method: "post",
data: params
});

@ -5,6 +5,24 @@ import {
localPath
} from "./api.js";
// 获取某门店参数
export function allStores(data){
return service({
url: "/api" + '/demay/ssm/storePara/list',
method: "post",
data
})
}
// 同步总店数据
export function totalData(params){
return service({
url: "/api" + '/demay/ssm/storePara/update1',
method: 'post',
params: params
})
}
// 添加门店参数
export function addstorePara(params) {
return service({
@ -27,7 +45,9 @@ export function storeParaList(params) {
method: "post",
data: params
});
} // 修改门店参数
}
// 修改门店参数
export function editstorePara(params) {
return service({
url: "/api" + "/demay/ssm/storePara/update",

@ -248,7 +248,7 @@ export default {
// arr.push(item);
// }
// });
this.staffList = this.noRepeat(arr);
if(arr.length)this.staffList = this.noRepeat(arr);
},
//
//

@ -246,7 +246,7 @@ export default {
// arr.push(item);
// }
// });
this.staffList = this.noRepeat(arr);
if(arr.length)this.staffList = this.noRepeat(arr);
},
//
//

@ -127,7 +127,6 @@ export default {
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
console.l
}
this.staffLists[0].ratio = 100 - number
});
@ -146,7 +145,6 @@ export default {
this.staffLists.forEach((item, index) => {
if (index != 0) {
number += item.ratio * 1;
console.l
}
this.staffLists[0].ratio = 100 - number
});
@ -230,7 +228,6 @@ export default {
});
this.$emit("staffslesData", list);
console.log("🚀 ~ file: index.vue ~ line 222 ~ confirm ~ list", list)
},
//
changeStaff() {
@ -240,7 +237,7 @@ export default {
let list = [];
this.staffListCopy.forEach((items) => {
if (item.id != items.id) {
list.push(items);
arr.push(items);
}
});
arr = list;
@ -258,8 +255,7 @@ export default {
// arr.push(item);
// }
// });
this.staffList = this.noRepeat(arr);
if(arr.length){this.staffList = this.noRepeat(arr);}
},
//
//

@ -22,6 +22,13 @@
<script>
import { organizations } from "@/api/storeManage.js";
export default {
props:{
//
storeId:{
type:String,
default:""
}
},
data() {
return {
radio: null, //
@ -54,7 +61,13 @@ export default {
organizations({ parentId: parentId }).then((res) => {
this.listLoading = false;
if (res.code == "000000") {
this.list = [...res.rows];
let list = [...res.rows];
if( this.storeId ){
let index = list.findIndex(item=>item.id == this.storeId)
this.list = [list[index]]
}else{
this.list = list
}
} else {
this.$alert(res.message, "获取门店信息", {
confirmButtonText: "确定",

@ -62,6 +62,16 @@
<el-table-column prop="courseConsumeCountNew" label="可用" align="center" min-width="80">
</el-table-column>
</el-table-column>
<el-table-column prop="explainModify" label="异常说明" align="center" min-width="150">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" placement="top" v-if="scope.row.explainModify">
<template slot="content">
<p style="max-width: 200px">{{ scope.row.explainModify }}</p>
</template>
<p style="width:100%;height:30px;overflow :hidden;text-overflow :ellipsis;white-space:nowrap;line-height:30px">{{ scope.row.explainModify }}</p>
</el-tooltip>
</template>
</el-table-column>
<el-table-column prop="modifyBy" label="修改人" align="center" min-width="80"></el-table-column>
<el-table-column prop="modifyTime" label="修改时间" align="center" min-width="160"></el-table-column>
</el-table>
@ -111,6 +121,16 @@
<el-table-column prop="courseConsumeCountNew" label="可用" align="center" min-width="80">
</el-table-column>
</el-table-column>
<el-table-column prop="explainModify" label="异常说明" align="center" min-width="150">
<template slot-scope="scope">
<el-tooltip class="item" effect="dark" placement="top">
<template slot="content">
<p style="max-width: 200px">{{ scope.row.explainModify }}</p>
</template>
<p style="width:100%;height:30px;overflow :hidden;text-overflow :ellipsis;white-space:nowrap;line-height:30px">{{ scope.row.explainModify }}</p>
</el-tooltip>
</template>
</el-table-column>
<el-table-column prop="modifyBy" label="修改人" align="center" min-width="80"></el-table-column>
<el-table-column prop="modifyTime" label="修改时间" align="center" min-width="160"></el-table-column>
</el-table>
@ -194,14 +214,23 @@
</el-table-column>
<el-table-column align="center" label="异常说明" min-width="150" v-if="radioAccount==0||radioAccount==1">
<template slot-scope='scope'>
<div style="width:250px">
<div style="width:250px;" v-if="scope.$index==1">
<el-input
type="textarea"
maxlength="100"
show-word-limit
:autosize="{ minRows: 2, maxRows: 4}"
placeholder="请输入内容"
v-model="scope.row.textarea"/>
@change="abnormalDetailsTest"
v-model="scope.row.explainModify"/>
</div>
<div v-else-if=" scope.row.explainModify">
<el-tooltip class="item" effect="dark" placement="top">
<template slot="content">
<p style="max-width: 200px">{{ scope.row.explainModify }}</p>
</template>
<p style="width:250px;height:30px;overflow :hidden;text-overflow :ellipsis;white-space:nowrap;line-height:30px">{{ scope.row.explainModify }}</p>
</el-tooltip>
</div>
</template>
</el-table-column>
@ -290,6 +319,11 @@ export default {
};
},
methods: {
//
abnormalDetailsTest(inp){
console.log(inp)
this.$set(this.accountList[2],'explainModify',inp)
},
//
handleClose() {
this.accountList = [];
@ -511,6 +545,8 @@ export default {
this.accountList[2]
);
delete form.id;
console.log(form)
// return
if (this.radioAccount == 0) {
//cz
recAdd(form).then((res) => {

@ -981,9 +981,9 @@ export default {
//
changesales() {
if (this.sessionStorageData.minimum == true) {
console.log(this.form);
this.form.salesPrice = this.form.salesPrice*1
if (
this.form.salesPric > this.form.topPriceMember ||
this.form.salesPrice > this.form.topPriceMember ||
this.form.salesPrice < this.form.minumumPriceMember
) {
this.form.salesPrice = this.form.priceMember;
@ -998,6 +998,7 @@ export default {
this.menberShow = false;
}
} else {
console.log('来到了这里')
this.menberShow = false;
}
this.form.amount =
@ -1805,7 +1806,7 @@ export default {
};
</script>
<style scoped>
>>>.el-input-group--append .el-input__inner{
*>>>.el-input-group--append .el-input__inner{
width: 123px;
}
.reatmen {

@ -7,7 +7,7 @@
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
</el-option>
</el-select>
<el-input size="medium" class="form-width-ms" v-model="queryForm.docNum" placeholder="输入要查询的单据号" clearable></el-input>
<el-input size="medium" class="form-width-ms" v-model="queryForm.repayNum" 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>

@ -277,6 +277,7 @@ export default {
item.staffNames = "";
}
});
console.log('this.staffList',this.staffList)
setTimeout(() => {
this.$refs.staffsles.show(this.staffList);
}, 500);

@ -1,6 +1,10 @@
<template>
<!-- 负卡金 -->
<div>
<el-select ref="select" collapse-tags filterable default-first-option :multiple='true' v-model="storeId" clearable @clear="getData" placeholder="请选择门店" @change="getData">
<el-option v-for="item in options" :key="item.id" :label="item.label" :value="item.id">
</el-option>
</el-select>
<div>
<el-button size="mini" type="primary" @click="refresh" style="margin-left: 95%;">刷新</el-button>
</div>
@ -13,6 +17,7 @@
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>
<el-table-column align="center" label="收入">
<el-table-column align="center" prop="rechargeMoney" label="充值开卡" min-width="50"></el-table-column>
<el-table-column align="center" prop="rechargeRepay" label="充值还款" min-width="50"></el-table-column>
@ -39,6 +44,7 @@
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>
<el-table-column align="center" label="收入">
<el-table-column align="center" prop="courseMoney" label="疗程开卡" min-width="50"></el-table-column>
<el-table-column align="center" prop="courseRepay" label="还款" min-width="50"></el-table-column>
@ -82,21 +88,56 @@
<script>
import { partten } from "../../../../partten/index";
import { organizations } from "@/api/storeManage.js";
import { dayStatisticRecharge, dayStatisticTreatment } from "../../../api/statistics.js";
export default {
data() {
return {
tableDate: [],
tableDate1: [],
storeIds:[],
options:[],
storeId:''
};
},
methods: {
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) => {},
});
}
});
},
getData(ids){
if(ids){
this.storeIds = ids
}else{
this.storeIds = []
}
this.dayStatisticRecharge()
this.dayStatisticTreatment()
},
dayStatisticRecharge() {
dayStatisticRecharge({ date: partten.dayStatisticDate }).then((res) => {
let params = {
date: partten.dayStatisticDate,
storeIdl:this.storeIds
}
dayStatisticRecharge(params).then((res) => {
if (res.code == "000000") {
var arr=[];
arr.push(res.data)
this.tableDate = arr;
// var arr=[];
// arr.push(res.rows)
this.tableDate = res.rows;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
@ -109,11 +150,15 @@ export default {
});
},
dayStatisticTreatment() {
dayStatisticTreatment({ date: partten.dayStatisticDate }).then((res) => {
let params = {
date: partten.dayStatisticDate,
storeIdl:this.storeIds
}
dayStatisticTreatment(params).then((res) => {
if (res.code == "000000") {
var arr=[];
arr.push(res.data)
this.tableDate1 = arr;
// var arr=[];
// arr.push(res.rows)
this.tableDate1 = res.rows;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
@ -146,6 +191,7 @@ export default {
},
},
created() {
this.init()
this.dayStatisticTreatment();
this.dayStatisticRecharge();
},

@ -44,7 +44,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" :storeId='storeId'></store>
<admin ref="admin" @adminData="adminData"></admin>
<detail ref="detail" @detailData="detailData"></detail>
</div>
@ -62,6 +62,7 @@ export default {
components: { store, admin, detail },
data() {
return {
storeId:'',
days: [],
form: {}, //
list: [], //
@ -197,6 +198,11 @@ export default {
},
},
created() {
if(JSON.parse(sessionStorage.getItem("headOffice"))*1 != 1){
//
let storeInfo = JSON.parse(sessionStorage.getItem('storeInfo'))
this.storeId = storeInfo.id
}
let sDate = this.formatTime(new Date(), "YYYY-MM-DD 00:00:00");
let eDate = this.formatTime(new Date(), "YYYY-MM-DD 23:59:59");
this.days = [sDate, eDate];

@ -0,0 +1,126 @@
<template>
<el-dialog
title="同步数据"
:visible.sync="showVisible"
width="30%"
:before-close="handleClose"
>
<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>
</el-select>
</div>
<span slot="footer" class="dialog-footer">
<el-button @click="handleCancel" size='mini'> </el-button>
<el-button type="primary" @click="handleConfirm" :loading='loading' size='mini'> </el-button>
</span>
</el-dialog>
</template>
<script>
import { organizations,allStores,totalData } from "@/api/storeManage.js";
export default {
watch:{
showVisible:{
handler(show){
if(show){
this.storeId = ''
this.form = {}
this.init()
}
},
immediate:true
}
},
data() {
return {
loading:false,
showVisible:false,
storeId:"",
options:[],
form:{},
};
},
methods:{
handleConfirm(){
if(!this.form.maximumAmount){
return this.$message({
type: "info",
message: "请先选择门店",
});
}else{
this.$emit('getData',null,this.storeId,true)
this.$emit('updataStore')
sessionStorage.setItem('formData',JSON.stringify(this.form))
this.handleCancel()
// this.loading = true
// totalData( this.form ).then(res=>{
// if(res.code == '000000'){
// this.loading = false
// this.$message.success({ message: "" });
// this.handleCancel()
// }else{
// this.loading = false
// }
// })
}
},
handleCancel(){
this.showVisible = false
this.form = {}
this.storeId = ''
},
handleClose(done){
this.storeId = ''
done();
},
getData(id){
if(id){
//
let storeName = this.options[this.options.findIndex(item=>item.id === id)].storeName
this.form = { toreIds:id+'|'+storeName }
this.getOtherStore(id)
}else{
this.form = {}
}
},
//
getOtherStore(id){
allStores({ storeId:id }).then(res=>{
if(res.code == '000000'){
let params = {}
res.rows.forEach((item)=>{
if(!params[item.paramentName]){
params[item.paramentName] = item.paramentValue+'|'+item.remark
}
})
this.form = Object.assign({...params},this.form)
}
})
},
//
init(){
organizations({ pageSize: 999 }).then((res) => {
if (res.code == "000000") {
res.rows.forEach((item) => {
item.label = item.storeNum + "-" + item.storeName;
});
this.options = res.rows;
} else {
this.$alert(res.message, "提示", {
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {},
});
}
});
}
}
};
</script>
<style scoped>
</style>

@ -5,8 +5,9 @@
<div style="margin: 10px auto">
<el-button type="primary" size="mini" v-if="headOffice!=1" @click="copy" v-role="4001003"></el-button>
<el-button type="primary" size="mini" v-show="!editInput" @click="editInput = true,loading = false" v-role="4001003"></el-button>
<el-button type="primary" size="mini" plain v-show="editInput" @click="getData( editInput = false,loading = false)" v-role="4001003"></el-button>
<el-button type="primary" size="mini" plain v-show="editInput" @click="getData( editInput = false,loading = false,isTrue=null)" v-role="4001003"></el-button>
<el-button type="success" size="mini" v-show="editInput" @click="editconfirm((loading = true))" :loading="loading" v-role="4001003"></el-button>
<el-button type="success" size="mini" @click="shopShow" v-if="headOffice==1"></el-button>
</div>
<el-form :model="dataList" :inline="true" v-show="buttonShow" :style="{ color: !editInput ? '#bbb' : '' }">
<el-row :gutter="10">
@ -324,19 +325,26 @@
</el-row>
</el-form>
</div>
<store ref="shop" @getData='getData' @updataStore='updataStore'/>
</div>
</template>
<script>
import store from './component/store.vue'
import {
editstorePara,
storeParaList,
pagesorganizationone,
totalData
} from "@/api/storeManage.js";
import { TimeSelect } from 'element-ui';
export default {
components:{
store
},
data() {
return {
isTrue:null,
headOffice: sessionStorage.getItem("headOffice") * 1, // 0 1
buttonShow: false, //
editInput: false, //
@ -377,9 +385,18 @@ export default {
},
computed: {},
methods: {
shopShow(){
this.$refs.shop.showVisible = true
},
//
updataStore(){
this.editInput = true
this.loading = false
this.isTrue = true
},
// number
getData(number) {
var page = { page: "" };
getData(number,storeId) {
var page = { page: '' };
if (number == 1) {
pagesorganizationone(page).then((res) => {
if (res.code == "000000") {
@ -392,10 +409,12 @@ export default {
}
});
} else {
if(storeId){
page = { storeId }
}
storeParaList(page).then((res) => {
if (res.code == "000000") {
this.toPar(res.rows);
console.log("🚀 ~ file: storeParameters.vue ~ line 398 ~ storeParaList ~ res.rows", res.rows)
if (res.rows.length > 0) {
this.buttonShow = true;
}
@ -712,7 +731,6 @@ export default {
dataList.memberUsing = 1 * dataList.memberUsing;
}
}
this.dataList = dataList;
if (
this.dataList.expMoneyByIntegral != null &&
@ -1038,6 +1056,37 @@ export default {
},
});
} else {
if(this.isTrue){
// false
let params = JSON.parse(sessionStorage.getItem('formData'))
let data = {
...dataList,
toreIds:params.toreIds
}
totalData(data).then(res=>{
if(res.code == '000000'){
this.getData();
this.$message.success({ message: res.message });
this.editInput = false;
this.isTrue = false
if (this.dataList.allowValid == 1) {
this.$alert(
"充值/疗程设置有效时间 , 请检查相关充值类别/项目有无设置有效期 , 若没有设置有效日期请前往充值类别/项目 设置有效期限 , 没有设置有效期限会影响项目运行",
"提示",
{
confirmButtonText: "确定",
confirmButtonClass: "confirmbtnFalses",
type: "warning",
center: true,
callback: (action) => {
this.getData();
},
}
);
}
}
})
}else{
editstorePara(dataList).then((res) => {
this.loading = false;
if (res.code == "000000") {
@ -1072,6 +1121,7 @@ export default {
});
}
});
}
}
} else {
this.loading = false;

@ -51,6 +51,11 @@
<el-table-column show-overflow-tooltip align="center" min-width="90" prop="cardMoney" label="卡付总金额"></el-table-column> -->
<el-table-column show-overflow-tooltip align="center" min-width="90" prop="cashMoney" label="现付总金额"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="90" prop="cardMoney" label="卡付总金额"></el-table-column>
<el-table-column show-overflow-tooltip align="center" min-width="90" prop="additionDate" label="补单日期">
<template slot-scope="scope">
<span>{{ scope.row.additionDate?scope.row.additionDate:"暂无" }}</span>
</template>
</el-table-column>
<el-table-column show-overflow-tooltip align="center" label="剩余">
<el-table-column show-overflow-tooltip align="center" min-width="80" prop="accountRestCount" label="次数">
<template slot-scope="scope">
@ -149,6 +154,10 @@ export default {
docType: "card_use",
docTypeName: "疗程开卡",
},
{
docType: "card_use_additione",
docTypeName: "疗程开卡补单",
},
{
docType: "store_cash",
docTypeName: "收银",
@ -243,12 +252,15 @@ export default {
}
if (item.type == "card_repay") {
if (item.orderType == "course") {
item.docTypeName = "疗程" + item.docTypeName;
item.docTypeName = "疗程" + item.docTypeName+'测试----';
}
if (item.orderType == "recharge") {
item.docTypeName = "充值" + item.docTypeName;
}
}
if(item.docType == 'card_use_addition'){
item.docTypeName = '疗程开卡补单'
}
if (item.docType == "refund_cash_room") {
if (item.accountType == "refund_cash_unaudit_room") {
item.docTypeName = "房间退反审核";
@ -305,7 +317,8 @@ export default {
}
}
});
this.list.forEach((item)=>{
this.list.forEach((item)=>{
item.tradeMoney=item.cashMoney+item.cardMoney
})
this.list = res.pageInfo.list;

Loading…
Cancel
Save