地图定位考勤打卡组件引入前备份

master
十七 5 years ago
parent a6d7c54cb8
commit 55ba00d30d

@ -5,6 +5,7 @@
},
onShow: function() {
console.log('App Show')
// console.log(38+24+54+18+32.4 + 630 + 294.95 + 427.38 + 267.2 + 200 + 450 + 400 + 200);
},
onHide: function() {
console.log('App Hide')
@ -28,4 +29,5 @@
width: 100%;
text-align: center;
}
</style>

@ -46,6 +46,41 @@
"speech" : {
"ifly" : {}
}
},
"icons" : {
"android" : {
"hdpi" : "unpackage/res/icons/72x72.png",
"xhdpi" : "unpackage/res/icons/96x96.png",
"xxhdpi" : "unpackage/res/icons/144x144.png",
"xxxhdpi" : "unpackage/res/icons/192x192.png"
},
"ios" : {
"appstore" : "unpackage/res/icons/1024x1024.png",
"ipad" : {
"app" : "unpackage/res/icons/76x76.png",
"app@2x" : "unpackage/res/icons/152x152.png",
"notification" : "unpackage/res/icons/20x20.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"proapp@2x" : "unpackage/res/icons/167x167.png",
"settings" : "unpackage/res/icons/29x29.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"spotlight" : "unpackage/res/icons/40x40.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png"
},
"iphone" : {
"app@2x" : "unpackage/res/icons/120x120.png",
"app@3x" : "unpackage/res/icons/180x180.png",
"notification@2x" : "unpackage/res/icons/40x40.png",
"notification@3x" : "unpackage/res/icons/60x60.png",
"settings@2x" : "unpackage/res/icons/58x58.png",
"settings@3x" : "unpackage/res/icons/87x87.png",
"spotlight@2x" : "unpackage/res/icons/80x80.png",
"spotlight@3x" : "unpackage/res/icons/120x120.png"
}
}
},
"splashscreen" : {
"androidStyle" : "common"
}
}
},

@ -142,4 +142,31 @@ module.exports = {
phonePassLogin(data) {
return request('/demay/ssm/staffLogin/phonePassLogin', 'post', data);
},
// 当日负卡金记录查询
dayStatistic(data) {
return request('/demay/ssm/staff/dayStatistic', 'post', data);
},
// 门店月度任务统计 APP-门店月度任务-门店月度任务统计
statistic(data) {
return request('/demay/ssm/staff/statistic', 'post', data);
},
// 查询员工工资 APP-统计报表-查询员工工资\
selectSalary(data) {
return request('/demay/ssm/staff/selectSalary', 'post', data);
},
// 门店项目统计列表 APP-门店统计-门店项目统计列表
projectList(data) {
return request('/demay/ssm/staff/projectList', 'post', data);
},
// 门店会员统计列表 APP-门店统计-门店会员统计列表
memberList(data) {
return request('/demay/ssm/staff/memberList', 'post', data);
},
}

@ -4,7 +4,7 @@
"path": "pages/tabBar/mySet/mySet",
"style": {
"navigationBarTitleText": "我的",
"navigationBarBackgroundColor": "#e83131",
"enablePullDownRefresh": true,
"app-plus": {
"bounce": "vertical",
@ -16,7 +16,7 @@
}, {
"path": "pages/tabBar/mySet/common/message/message",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "我的信息",
"enablePullDownRefresh": false,
"app-plus": {
@ -30,7 +30,7 @@
}, {
"path": "pages/tabBar/mySet/common/my-card/my-card",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "我的卡包",
"enablePullDownRefresh": false,
"app-plus": {
@ -44,9 +44,9 @@
}, {
"path": "pages/tabBar/mySet/common/expense/expense",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "评价记录",
"enablePullDownRefresh": false,
"enablePullDownRefresh": true,
"app-plus": {
"bounce": "vertical",
"titleNView": {
@ -58,7 +58,7 @@
}, {
"path": "pages/tabBar/mySet/common/change-password/change-password",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "修改密码",
"enablePullDownRefresh": false,
"app-plus": {
@ -72,7 +72,8 @@
}, {
"path": "pages/login/login",
"style": {
"navigationBarBackgroundColor": "#e83131",
"enablePullDownRefresh": true,
"navigationBarTitleText": "登录",
"app-plus": {
"titleNView": {
@ -84,7 +85,7 @@
}, {
"path": "pages/tabBar/mySet/common/expense/appraise/appraise",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "服务评价",
"enablePullDownRefresh": false,
"app-plus": {
@ -98,7 +99,7 @@
}, {
"path": "pages/tabBar/myHome/myHome",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "首页",
"enablePullDownRefresh": true,
"app-plus": {
@ -112,7 +113,7 @@
}, {
"path": "pages/tabBar/myHome/service-log/service-log",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "疗程服务日志",
"app-plus": {
"titleNView": {
@ -123,7 +124,7 @@
}, {
"path": "pages/tabBar/myHome/sales-commission/sales-commission",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "业绩提成",
"enablePullDownRefresh": false,
"app-plus": {
@ -137,7 +138,7 @@
}, {
"path": "pages/tabBar/myHome/client-evaluation/client-evaluation",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "客户评价",
"enablePullDownRefresh": false,
"app-plus": {
@ -150,8 +151,8 @@
}, {
"path": "pages/tabBar/myHome/client-follow/client-follow",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "客户跟进",
"navigationBarTitleText": "我的会员",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
@ -178,7 +179,7 @@
}, {
"path": "pages/tabBar/myHome/sales-commission/sales-month/sales-month",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "本月业绩提成",
"enablePullDownRefresh": false,
"app-plus": {
@ -191,7 +192,7 @@
}, {
"path": "pages/tabBar/myHome/sales-commission/last-month/last-month",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "上月业绩提成",
"enablePullDownRefresh": false,
"app-plus": {
@ -204,7 +205,7 @@
}, {
"path": "pages/tabBar/myHome/sales-commission/classify/classify",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "分类",
"enablePullDownRefresh": false,
"app-plus": {
@ -218,7 +219,7 @@
}, {
"path": "pages/tabBar/myHome/sales-commission/detail/detail",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "明细",
"enablePullDownRefresh": false,
"app-plus": {
@ -231,7 +232,7 @@
}, {
"path": "pages/tabBar/mySet/common/expense-record/expense-record",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "消费记录",
"enablePullDownRefresh": false,
"app-plus": {
@ -247,7 +248,7 @@
, {
"path": "pages/tabBar/myHome/todays-star/todays-star",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "今日之星",
"enablePullDownRefresh": true,
"app-plus": {
@ -260,7 +261,7 @@
}, {
"path": "pages/tabBar/myHome/reservation/reservation",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "预约服务",
"enablePullDownRefresh": false,
"app-plus": {
@ -274,7 +275,7 @@
}, {
"path": "pages/tabBar/myHome/service-feedback/service-feedback",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "服务反馈",
"enablePullDownRefresh": false,
"app-plus": {
@ -288,14 +289,14 @@
}, {
"path": "pages/tabBar/myHome/service-feedback/feedback/feedback",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "反馈意见",
"navigationBarTitleText": "服务反馈",
"enablePullDownRefresh": false
}
}, {
"path": "pages/tabBar/mySet/common/message/edit-message/edit-message",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "修改信息",
"enablePullDownRefresh": false
}
@ -303,7 +304,7 @@
}, {
"path": "pages/tabBar/myHome/reservation/resevation-project/resevation-project",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "预约信息",
"enablePullDownRefresh": false,
"app-plus": {
@ -314,42 +315,223 @@
}
}
}, {
"path": "pages/tabBar/myHome/service-log/service-detail/service-detail",
"style": {
"navigationBarTitleText": "服务反馈明细",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/mySet/common/salary/salary",
"style": {
"navigationBarTitleText": "我的工资",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/myHome/projectRanking/projectRanking",
"style": {
"navigationBarTitleText": "项目排行榜",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/myHome/memberRanking/memberRanking",
"style": {
"navigationBarTitleText": "会员排行榜",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/myHome/negativeCard/negativeCard",
"style": {
"navigationBarTitleText": "负卡金",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/myHome/staffSalary/staffSalary",
"style": {
"navigationBarTitleText": "员工工资",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/myHome/monthlyTaking/monthlyTaking",
"style": {
"navigationBarTitleText": "月度营业额",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}
, {
"path": "pages/tabBar/mySet/common/cost/cost",
"style": {
"navigationBarTitleText": "成本利润清单",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/myHome/results/results",
"style": {
"navigationBarTitleText": "个人业绩排行榜",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
},
{
"path": "pages/tabBar/myHome/myTarget/myTarget",
"style": {
"navigationBarTitleText": "个人目标",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/myHome/backlog/backlog",
"style": {
"navigationBarTitleText": "待办事项",
"enablePullDownRefresh": true,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}
, {
"path": "pages/tabBar/myHome/yieldRate/yieldRate",
"style": {
"navigationBarTitleText": "门店业绩达成率",
"enablePullDownRefresh": true,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/myHome/costList/costList",
"style": {
"navigationBarTitleText": "成本利润表",
"enablePullDownRefresh": true,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}, {
"path": "pages/tabBar/myHome/applyFor/applyFor",
"style": {
"navigationBarTitleText": "费用申请",
"enablePullDownRefresh": true,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}
,{
"path" : "pages/tabBar/myHome/service-log/service-detail/service-detail",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "服务反馈",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
}
}
,{
"path" : "pages/tabBar/mySet/common/salary/salary",
"style": {
"navigationBarBackgroundColor": "#e83131",
"navigationBarTitleText": "我的工资",
"enablePullDownRefresh": false,
"app-plus": {
"bounce": "vertical",
"titleNView": {
"titleColor": "#eeeeee"
}
}
"path" : "pages/tabBar/myHome/clocking-in/clocking-in",
"style" :
{
"navigationBarTitleText": "考勤",
"enablePullDownRefresh": true
}
}
],
"globalStyle": {
"navigationBarTextStyle": "white",
"navigationBarTitleText": "uni-app",
"navigationBarBackgroundColor": "#F8F8F8",
"backgroundColor": "#F8F8F8"
"navigationBarTitleText": "德财美业",
"navigationBarBackgroundColor": "#e83131",
"backgroundColor": "#f1f1f1"
},
"tabBar": {
"color": "#7A7E83",

@ -2,7 +2,7 @@
<view class="login">
<view class="avatorWrapper">
<view class="avator">
<image class="img" src="../../static/image/mySet1.png" mode="widthFix"></image>
<image class="img" src="../../static/image/header-icon.png" mode="widthFix"></image>
</view>
</view>
@ -31,6 +31,11 @@
<move-verify class="move-verify" @result='verifyResult' ref="verifyElement2"></move-verify>
</view>
</view>
<view class="margin-top margin-left">
<checkbox-group class="block flex align-center " @change="changeBox" >
<checkbox style="transform:scale(0.8);margin-right: 5upx;" :class="checkbox.checked?'checked':''" :checked="checkbox.checked?true:false" value="A"></checkbox><text class="">记住密码</text>
</checkbox-group>
</view>
<view class="flex justify-center margin-top">
<view v-show="!loginShow" @click="(loginShow=true)">
<text class="text-red">使用账号密码登录</text>
@ -44,7 +49,7 @@
</view>
<view class=" forgotBtn cu-bar ">
<text class="forgotBtn_hr"></text>
<text>德财美业</text>
<text>DCMY</text>
<text class="forgotBtn_hr"></text>
</view>
@ -65,6 +70,10 @@
resultData: {
flag: false
},
checkbox:{
value:'A',
checked:false,
},
loginShow: true,
getCodeText: null,
memberShow: false,
@ -86,9 +95,22 @@
},
onLoad() {},
methods: {
changeBox(e){
console.log(e);
this.checkbox.checked = !this.checkbox.checked
// if(this.checkbox.checked ==false){
// this.checkbox.checked = e.detail.value;
// }else{
// this.checkbox.checked = !e.detail.value;
// }
},
memberOne(e){
if (this.loginShow==false) {
this.$api.staffLoginList({
var that = this
if (that.loginShow==false) {
that.$api.staffLoginList({
mobilePhone: e.target.value,
state: 1
}).then(res => {
@ -100,7 +122,7 @@
showCancel: false,
})
} else{
this.storeId = res.rows[0].storeId
that.storeId = res.rows[0].storeId
}
} else {
uni.showModal({
@ -118,7 +140,6 @@
},
/* 校验插件重置 */
verifyReset() {
console.log(this.$refs.verifyElement2);
if (this.$refs.verifyElement1) {
this.$refs.verifyElement1.reset();
this.$refs.verifyElement2.reset();
@ -127,60 +148,76 @@
this.resultData = {};
},
logIn() {
this.loadingShow = true
var that = this
that.loadingShow = true
if (this.resultData.flag == true) {
if (that.resultData.flag == true) {
console.log(123);
if (this.form.passCode == null) {
this.$api.phonePassLogin(this.form).then(res => {
this.loadingShow = false
if (that.form.passCode == null) {
that.$api.phonePassLogin(that.form).then(res => {
that.loadingShow = false
if (res.code == '000000') {
var user = res.data
user.mobilePhone = this.form.mobilePhone
user.mobilePhone = that.form.mobilePhone
uni.setStorageSync('userInfo', user)
setTimeout(function() {
uni.switchTab({
url: '../tabBar/mySet/mySet'
});
uni.showToast({
title: '登录成功',
icon: "none",
icon: "success",
duration: 2000
});
}, 500)
} else {
uni.showToast({
title: res.message,
icon: "none",
duration: 2000
});
uni.showModal({
title: '提示',
content: res.message,
showCancel: false,
success: function(res) {
that.loadingShow = false
that.getCodeShow = false
that.time = 0;
}
})
}
})
} else {
this.$api.phoneLogin(this.form).then(res => {
this.loadingShow = false
that.$api.phoneLogin(that.form).then(res => {
that.loadingShow = false
if (res.code == '000000') {
var user = res.data
user.mobilePhone = this.form.mobilePhone
user.mobilePhone = that.form.mobilePhone
uni.setStorageSync('userInfo', user)
if(that.checkbox.checked==true){
uni.setStorageSync('userPassword',that.form)
}
setTimeout(function() {
uni.switchTab({
url: '../tabBar/mySet/mySet'
});
uni.showToast({
title: '登录成功',
icon: "none",
icon: "success",
duration: 2000
});
}, 500)
} else {
uni.showToast({
title: res.message,
icon: "none",
duration: 2000
});
uni.showModal({
title: '提示',
content: res.message,
showCancel: false,
success: function(res) {
that.loadingShow = false
that.getCodeShow = false
that.time = 0;
}
})
}
})
}
@ -191,8 +228,9 @@
content: "请拖动滑块验证信息",
showCancel: false,
success: function(res) {
this.getCodeShow = false
this.time = 0;
that.loadingShow = false
that.getCodeShow = false
that.time = 0;
}
})
}
@ -254,7 +292,26 @@
},
onShow: function() {
this.verifyReset()
}
let form = uni.getStorageSync('userPassword')
console.log(uni.getStorageSync('userPassword').password);
if(form.password!=undefined){
that.resultData.flag == true
this.logIn()
}
},
onPullDownRefresh: function() {
setTimeout(function() {
uni.stopPullDownRefresh();
uni.redirectTo({
url: 'pages/login/login',
});
uni.showToast({
title: '刷新成功',
icon: 'success',
duration: 2000
});
}, 500);
},
}
</script>
<style>

@ -0,0 +1,61 @@
<template>
<view>
<view v-show="pageInfo.total==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无数据</view>
</view>
<view class="cu-card article isCard">
<view class="cu-item" v-for="(item,index) in pageInfo.applyForList" :key='index'>
<view class="title flex justify-between margin-top">
<view class="text-cut ">申请人 : {{item.forName}}</view>
<button class=" cu-btn round bg-red">审批</button>
</view>
<view class="content">
<view class="desc">
<view>
<text class='text-gray '>申请时间</text>{{item.date}}
</view>
<view>
<text class='text-gray'>申请原因</text>{{item.cause}}
</view>
<view>
<text class='text-gray'>申请金额</text>{{item.causeMoney}}
</view>
<!-- <view>
<text class='text-gray text-lg'>申请人</text> {{item.forName}}
</view> -->
</view>
</view>
</view>
</view>
<view class="margin-left"> {{pageInfo.total}} 条记录</view>
</view>
</template>
<script>
export default {
data() {
return {
pageInfo: {
total: 16,
applyForList: [
{date:'2021-04-10 15:45:36',cause:'水润肌肤疗程服务材料不足 , 需要补充仓储 , 预计需要小金瓶精华液 * 30',causeMoney:9000,forName:'托尼·唐'},
{date:'2021-04-10 16:25:09',cause:'有关洗头系列洗发水用量见底 , 部分需要补充预计需要飘柔洗发水 * 20',causeMoney:1500,forName:'宇岚芓'},
{date:'2021-04-12 11:20:39',cause:'3月份出差费用报销',causeMoney:1500,forName:'伊伊'},
{date:'2021-04-12 12:39:58',cause:'3月份销售推广餐费打车费报销',causeMoney:500,forName:'黄颡鱼'},
]
}
}
},
methods: {
}
}
</script>
<style>
</style>

@ -0,0 +1,64 @@
<template>
<view>
<view v-show="pageInfo.total==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无待办事项</view>
</view>
<text style="padding-top: 10upx;" class="margin-left">点击列表进行处理</text>
<view class="cu-card article isCard">
<view class="cu-item" v-for="(item,index) in pageInfo.backlogList" :key='index'>
<view class="title flex justify-between">
<view class="text-cut ">{{item.name}}</view>
</view>
<view class="content">
<view class="desc">
<view>
<text class='text-gray'>标记</text> {{item.label}}
</view>
<view>
<text class='text-gray'>备注</text>{{item.remark}}
</view>
</view>
</view>
</view>
</view>
<view class="margin-left"> {{pageInfo.total}} 条记录</view>
</view>
</template>
<script>
export default {
data() {
return {
pageInfo: {
total: 3,
backlogList: [{
name: "工单评价",
label: "评价工单20210412162548",
remark: "在04-15日之前对工单20210412162548的服务进行评价"
},
{
name: "会员预约",
label: "04-13 15:30:00 有一位会员的预约",
remark: "会员预约了精品护肤项目, 请及时处理手上项目, 避免让客人久等"
},
{
name: "补单操作",
label: "在04-14之前 刘怡会员三张服务单进行补单",
remark: "时间为04-13 15:08:58 刘怡会员有三张单未录入 , 请在04-14日之前进行补单"
},
]
}
}
},
methods: {
}
}
</script>
<style>
.content text{
margin-bottom: 10upx;
}
</style>

@ -47,7 +47,7 @@
</view>
<view class="appraise" style="margin-bottom: 10upx;">
<text>评价内容:</text>
<text style="width: 60%; padding: 0 20upx; ">{{item.nr}}</text>
<text style="width: 60%; padding: 0 20upx; ">{{item.csAppraise}}</text>
</view>
</view>
</view>

@ -1,6 +1,39 @@
<template>
<view>
<!-- 疗程服务日志 -->
<view class='main'>
<view v-show="pageInfo.total==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无数据</view>
</view>
<view class="cu-card article isCard">
<view class="cu-item padding-top" v-for="(item,index) in pageInfo.memberList" :key='index'>
<view class="content">
<view class="desc">
<view>
<text class='text-gray'>会员信息</text>{{item.memberName }} - {{item.sex}}
</view>
<view>
<text class='text-gray'>联系方式</text>{{item.mobilePhone}}
</view>
<view>
<text class='text-gray'>累计充值</text> <text class="text-red text-price"> {{item.czMoney}}</text>
</view>
<view>
<text class='text-gray'>累计消费</text> <text class="text-red text-price">{{item.xfMoney}}</text>
</view>
<view>
<text class='text-gray'>最后消费</text>{{item.date}}
</view>
<view>
<text class='text-gray'>最多消费项目</text>{{item.project}}
</view>
</view>
</view>
</view>
</view>
<view class="margin-left"> {{pageInfo.total}} 条记录</view>
</view>
</template>
@ -8,11 +41,50 @@
export default {
data() {
return {
pageInfo: {
total: 4,
memberList: [{
memberName: '汪隼',
mobilePhone: '183****0326',
sex: '男',
czMoney: '36,530.00',
xfMoney: '29,860.60',
date: '2020-04-03 16:45:56',
project: '面部精华护理 * 12'
},
{
memberName: '伊莉莉',
mobilePhone: '188****5658',
sex: '女',
czMoney: '58,060.00',
xfMoney: '50,060.00',
date: '2020-04-012 09:58:03',
project: '精品小乳瓶精油护理 * 6'
},
{
memberName: '沈建林',
mobilePhone: '152****6688',
sex: '男',
czMoney: '100,500.00',
xfMoney: '81,550.50',
date: '2020-04-13 11:36:28',
project: '眼部SPS通络 * 15'
},
{
memberName: '张露露',
mobilePhone: '176****0090',
sex: '女',
czMoney: '40,865.00',
xfMoney: '35,600.50',
date: '2020-04-13 15:28:09',
project: '精品火山泥面部护理 * 4'
},
]
}
}
},
methods: {
}
}
</script>

@ -0,0 +1,105 @@
<template>
<view>
<button type="default" @tap="getDistance"></button>
<view>{{title}}</view>
<text>{{name}}</text>
</view>
</template>
<script>
export default {
data() {
return {
name:"我的名字",
key:'7IYBZ-RTIK3-62G3M-Y3Y7C-SCR6S-J6BDC',
bzText:{time:"",address:"",img:"",remarks:""},
type:"",
r : 80, //
Timer:[{time:"09:00",},{time:"18:00"}], //
isAm:false, //
isPm:false, //
amSign:{time:"",address:"",remarks:"",img:""}, //
pmSign:{time:"",address:"",remarks:"",img:""}, //
clickNum:0, //
is:null, //
isSign:false, //
time:formateDate(new Date(),'h:min:s'), //
date:formateDate(new Date(),'Y-M-D'),
latitude: "", //
longitude: "", //
address:"我的位置", //
wqInfo:null,
allSign:[], //
signInfo:{mode:"", latitude:"",longitude:"",address:"",time:"",remarks:""}, //
covers: [
//
{id:0,callout:{content:"*****科技有限公司",color:"red",display:"ALWAYS",},latitude:37.788338,longitude:113.269629,iconPath: '../../../static/img/location.png'},
],
circles:[
// (latitude:39.9085,longitude:116.39747 );
{latitude:37.788338,longitude:113.269629 ,radius:80,strokeWidth:1,fillColor:"#7fff0099"},
]
}
},
onPullDownRefresh: function() {
setTimeout(function() {
uni.stopPullDownRefresh();
uni.redirectTo({
url: 'pages/myHome/clocking-in/clocking-in',
});
uni.showToast({
title: '刷新成功',
icon: 'success',
duration: 2000
});
}, 500);
},
onLoad() {
},
onShow:function(){
// this.getDistance()
},
methods: {
getLocation(){
var that = this;
if(this.clickNum !== 0){
uni.showLoading({title:"获取中...",mask:true})
}
if(this.clickNum >= 3){
uni.showToast({title:"请稍后尝试!",icon:"none",mask:true});
return ;
}
this.clickNum++;
uni.getLocation({
type: 'gcj02', //uni.openLocation
success(res) {
console.log(res);
uni.hideLoading();
that.latitude = res.latitude;
that.longitude = res.longitude;
// console.log(res.latitude,"---",res.longitude)
that.covers[1] = {id:1,latitude:res.latitude,longitude : res.longitude,iconPath: '../../static/location.png'}
var s = pointInsideCircle([that.latitude,that.longitude],[that.circles[0].latitude,that.circles[0].longitude],that.r/100000);
that.is = s;
that.signInfo.latitude = res.latitude;
that.signInfo.longitude = res.longitude;
that.signInfo.mode = s ? "正常打卡" : "外勤打卡";
that.getAdd()
},
fail(err){
uni.hideLoading();
that.address = "请检查位置信息!"
uni.showToast({title:"请检查位置信息状态!",icon:"none", mask:true,duration:3000})
}
});
},
}
}
</script>
<style>
</style>

@ -0,0 +1,110 @@
<template>
<view>
<view class="cu-form-group " style="margin: 10upx;">
<view style="width: 21%;">
</view>
<view >
2021 年门店成本利润表
</view>
<button class="cu-btn bg-green shadow">上一年</button>
</view>
<view style="padding: 10upx;">
<view style="margin: 10upx auto;"
class="bg-red flex solid-bottom padding justify-start text-white text-center">
<view class="text-header" style="width:15%">
<text>月份</text>
</view>
<view class="text-header" style="width:20%">
<text>成本</text>
</view>
<view class="text-header" style="width:20%">
<text>收入</text>
</view>
<view class="text-header" style="width:20%">
<text>利润</text>
</view>
<view class="text-header" style="width:20%">
<text>利润率</text>
</view>
</view>
<view v-if="targetList.length==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无数据</view>
</view>
<view class=" light flex justify-start text-black text-center text-main"
style="padding-left: 10upx;" v-for="(item,index) in targetList" :key='index'>
<view class="text-header" style="width:15%">
<text>{{item.date}}</text>
</view>
<view class="text-header" style="width:20%">
<text>{{item.mbMoney}}</text>
</view>
<view class="text-header" style="width:20%">
<text>{{item.sjMoney}}</text>
</view>
<view class="text-header " style="width:20%;">
<text>{{item.difference}}</text>
</view>
<view class="text-header " style="width:20%;">
<text>{{item.ratio}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
targetList: [{
date: "2021-01",
mbMoney: 150000,
sjMoney: 265500,
difference: "115500",
ratio: "177.00%"
},
{
date: "2021-02",
mbMoney: 120000,
sjMoney: 138650,
difference: "18650",
ratio: "115.54%"
},
{
date: "2021-03",
mbMoney: 150000,
sjMoney: 289500,
difference: "139500",
ratio: "193.00%"
},
{
date: "2021-04",
mbMoney: 150000,
sjMoney: 250603,
difference: 100603,
ratio: "167.08%"
},
]
}
},
methods: {
}
}
</script>
<style>
.text-main {
font-size: 28upx;
height: 80upx;
width: 100%;
line-height: 80upx;
margin-top: 15upx;
color: #000000;
border-bottom: #e6e6e6 1upx solid;
text-align: center;
}
</style>

@ -0,0 +1,133 @@
<template>
<view class=" memberRanking">
<view class=" margin-top " style="padding: 10upx;">
<view style="margin: 10upx auto; width:1200upx;"
class="bg-red flex solid-bottom padding justify-start text-white text-center">
<view class="text-header" style="width:400upx">
<text>会员名字</text>
</view>
<view class="text-header" style="width:400upx">
<text>充值</text>
</view>
<view class="text-header" style="width:400upx">
<text>疗程</text>
</view>
<view class="text-header" style="width:400upx">
<text>服务</text>
</view>
<view class="text-header" style="width:400upx">
<text>充值还款</text>
</view>
<view class="text-header" style="width:400upx">
<text>充值退款</text>
</view>
<view class="text-header" style="width:400upx">
<text>疗程还款</text>
</view>
<view class="text-header" style="width:400upx">
<text>疗程退款</text>
</view>
</view>
<view v-if="starList.length==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无数据</view>
</view>
<view class=" light flex justify-start text-black text-center text-main" style="width: 1200upx;padding-left: 10upx;" v-for="(item,index) in starList"
:key='index'
:class="index+1==1?'bg-pink':'bg-grey' && index+1==2?'bg-red':'bg-grey' &&index+1==3?'bg-orange':'bg-grey' ">
<view class="cur" style="width: 20upx;">
<text>{{index+1}}</text>
</view>
<view class="text-header" style="width:400upx">
<text>{{item.memberName}}</text>
</view>
<view class="text-header" style="width:400upx">
<text>{{item.recStatisticMoney}}</text>
</view>
<view class="text-header" style="width:400upx">
<text>{{item.courseStatisticMoney}}</text>
</view>
<view class="text-header" style="width:400upx">
<text>{{item.cashStatisticMoney}}</text>
</view>
<view class="text-header" style="width:400upx">
<text>{{item.recRepayMoney}}</text>
</view>
<view class="text-header" style="width:400upx">
<text>{{item.recRefundMoney}}</text>
</view>
<view class="text-header" style="width:400upx">
<text>{{item.courseRepayMoney}}</text>
</view>
<view class="text-header" style="width:400upx">
<text>{{item.courseRefundMoney}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
import host from '../../../../utils/host.js'
export default {
data() {
return {
userInfo: {},
daylist: [],
starList: [],
}
},
methods: {
memberList() {
var that = this
uni.request({
url: host + '/demay/ssm/staff/memberList', //
data: {storeId:that.userInfo.storeId}, //
method: 'POST', //
header: {
'content-type': 'application/x-www-form-urlencoded',
'token': that.userInfo.token
}, //
dataType: 'json', //
success(response) {
console.log(response.data.rows);
that.starList = response.data.rows
},
fail(error) {},
complete(com) {}
})
}
},
onShow: function() {
this.daylist = this.starList
this.userInfo = uni.getStorageSync("userInfo")
this.memberList()
},
onPullDownRefresh: function() {
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
},
}
</script>
<style>
.text-main {
font-size: 28upx;
height: 80upx;
width: 100%;
line-height: 80upx;
margin-top: 10upx;
color: #000000;
}
.memberRanking {
overflow-y: auto;
}
</style>

@ -0,0 +1,133 @@
<template>
<view>
<view class=" bg-white margin-top flex justify-between " style="height: 120upx;font-size: 36upx;">
<view class=" flex align-center margin-left" style="width:50%">
<text class="cuIcon-titles text-red"></text>
<text>计划</text>
</view>
<view class="flex align-center margin-left" style="width: 50%;">
<text class="cuIcon-titles text-red"></text>
<text>实际</text>
</view>
</view>
<view class="flex justify-start cradtext">
<view class="margin-left" style="width: 50%;">
<view class="margin-top">
<text class="margin-left">充值</text>
<text class='text-price text-red'>{{form1.rechargeTask}}</text>
</view>
<view class="margin-top">
<text class="margin-left">疗程</text>
<text class='text-price text-red'>{{form1.courseTask}}</text>
</view>
<view class="margin-top">
<view class="cuIcon-titles text-red" style="display: inline-block;margin-left:5upx;margin-right: 50upx;"></view>
<text>服务</text> <text class="text-red">{{form1.storeCashTask}}</text>
</view>
<view class="margin-top">
<text class="margin-left">卡付</text>
<text class='text-price text-red'>{{form1.storeCashTask*3/12}}</text>
</view>
<view class="margin-top">
<text class="margin-left">疗程</text>
<text class='text-price text-red'>{{form1.storeCashTask*5/12}}</text>
</view>
<view class="margin-top">
<text class="margin-left">现付</text>
<text class='text-price text-red'>{{form1.storeCashTask*4/12}}</text>
</view>
</view>
<view class="margin-left" style="width: 50%;">
<view class="margin-top">
<text class="margin-left">充值</text>
<text class='text-price text-red'>{{form1.rechargeMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">疗程</text>
<text class='text-price text-red'>{{form1.courseMoney}}</text>
</view>
<view class="margin-top">
<view class="cuIcon-titles text-red" style="display: inline-block;margin-left:5upx;margin-right: 50upx;"></view>
<text>服务</text> <text class="text-red">{{(form1.recStoreCashMoney+form1.courseStoreCashMoney+form1.cashStoreCashMoney).toFixed(2)*1}}</text>
</view>
<view class="margin-top">
<text class="margin-left">卡付</text>
<text class='text-price text-red'>{{form1.recStoreCashMoney}}</text>
</view> <view class="margin-top">
<text class="margin-left">疗程</text>
<text class='text-price text-red'>{{form1.courseStoreCashMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">现付</text>
<text class='text-price text-red'>{{form1.cashStoreCashMoney}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
form1: {},
userInfo: {},
}
},
methods: {
statistic() {
const dates = new Date();
let year = dates.getFullYear();
let month = dates.getMonth() + 1;
let day = dates.getDate()
month = month > 9 ? month : '0' + month;;
let date= year+'-'+month
this.$api.statistic({
storeId: this.userInfo.storeId,date:date
}).then(res => {
if (res.code == '000000') {
this.form1 = res.data
} else {
uni.showToast({
title: res.message,
icon: "none",
duration: 2000
});
}
})
}
},
onShow: function() {
this.userInfo = uni.getStorageSync("userInfo")
this.statistic()
},
onPullDownRefresh: function() {
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
},
}
</script>
<style>
.text-main {
font-size: 28upx;
height: 80upx;
width: 100%;
line-height: 80upx;
margin-top: 10upx;
color: #000000;
}
.cradtext text {
display: inline-block;
width: 80upx;
}
</style>

@ -1,12 +1,14 @@
<template>
<view class="home">
<view class='main' >
<view class='main'>
<scroll-view scroll-x class=" nav">
<view class="flex text-center">
<view class="cu-item light flex-sub" :class="[TabCur==0?'bg-red text-white':'']" @tap="tabSelect" :data-id="0">
<view class="cu-item light flex-sub " :class="[TabCur==0?'bg-red text-white':'']" @tap="tabSelect"
:data-id="0">
<text class="cuIcon-circle"></text> 工作台
</view>
<view class="cu-item light flex-sub" :class="[TabCur==1?'bg-red text-white':'']" @tap="tabSelect" :data-id="1">
<view class="cu-item light flex-sub" :class="[TabCur==1?'bg-red text-white':'']" @tap="tabSelect"
:data-id="1">
<text class="cuIcon-activity"></text> 门店数据
</view>
</view>
@ -23,29 +25,72 @@
</navigator>
<!-- 业绩提成 -->
<navigator url='./sales-commission/sales-commission' class="cu-item">
<view class="cuIcon-rankfill text-red"></view>
<view class="cuIcon-rank text-red"></view>
<text>业绩提成</text>
</navigator>
<navigator url='./client-evaluation/client-evaluation' class="cu-item">
<view class="cuIcon-form text-red"></view>
<text>个人客户评价</text>
<text>客户评价</text>
</navigator>
<navigator url='./service-feedback/service-feedback' class="cu-item">
<view class="cuIcon-rankfill text-red"></view>
<text>疗程服务反馈</text>
<text>服务反馈</text>
</navigator>
<navigator url='./client-follow/client-follow' class="cu-item">
<view class="cuIcon-friend text-red"></view>
<text>我的会员</text>
</navigator>
<navigator url='./myTarget/myTarget' class="cu-item">
<view class="cuIcon-activity text-red"></view>
<text>个人目标</text>
</navigator>
<navigator url='./backlog/backlog' class="cu-item">
<view class="cuIcon-keyboard text-red">
<view class="cu-tag badge">3</view>
</view>
<text>待办事项</text>
</navigator>
<navigator url='./applyFor/applyFor' class="cu-item">
<view class="cuIcon-moneybag text-red">
<view class="cu-tag badge">16</view>
</view>
<text>费用申请</text>
</navigator>
<navigator url='./applyFor/applyFor' class="cu-item">
<view class="cuIcon-shop text-red">
<view class="cu-tag badge">NEW</view>
</view>
<text>微商城</text>
</navigator>
<navigator url='./applyFor/applyFor' class="cu-item">
<view class="cuIcon-read text-red"></view>
<text>学习</text>
</navigator>
<navigator url='./applyFor/applyFor' class="cu-item">
<view class="cuIcon-calendar text-red"></view>
<text>考试</text>
</navigator>
<navigator url='./clocking-in/clocking-in' class="cu-item">
<view class="cuIcon-font text-red"></view>
<text>考勤</text>
</navigator>
<navigator url='./applyFor/applyFor' class="cu-item">
<view class="cuIcon-attention text-red"></view>
<text>我的工资</text>
</navigator>
<navigator url='./applyFor/applyFor' class="cu-item">
<view class="cuIcon-mark text-red">
<view class="cu-tag badge">1</view>
</view>
<text>消息中心</text>
</navigator>
<!-- <navigator url='./client-follow/client-follow' class="cu-item">
<view class="cuIcon-edit text-red"></view>
<text>客户跟进</text>
</navigator> -->
</view>
</view>
<!-- 数据分析 -->
<view v-if="TabCur==1">
<view class="cu-list grid ">
<!-- 门店日报 -->
<!-- <navigator url='./all-powerful/all-powerful' class="cu-item">
<!-- <navigator url='./all-powerful/all-powerful' class="cu-item">
<view class="cuIcon-formfill text-red"></view>
<text>门店日报</text>
</navigator>
@ -57,10 +102,43 @@
<view class="cuIcon-rankfill text-red"></view>
<text>门店排行榜</text>
</navigator> -->
<navigator url='./todays-star/todays-star' class="cu-item">
<view class="cuIcon-favorfill text-red"></view>
<text>今日之星</text>
</navigator>
<navigator url='./projectRanking/projectRanking' class="cu-item">
<view class="cuIcon-hotfill text-red"></view>
<text>项目排行榜</text>
</navigator>
<navigator url='./memberRanking/memberRanking' class="cu-item">
<view class="cuIcon-vip text-red"></view>
<text>会员排行榜</text>
</navigator>
<navigator url='./negativeCard/negativeCard' class="cu-item">
<view class="cuIcon-medal text-red"></view>
<text>负卡金</text>
</navigator>
<navigator url='./staffSalary/staffSalary' class="cu-item">
<view class="cuIcon-pay text-red"></view>
<text>员工工资</text>
</navigator>
<navigator url='./monthlyTaking/monthlyTaking' class="cu-item">
<view class="cuIcon-shop text-red"></view>
<text>月度营业额</text>
</navigator>
<navigator url='./results/results' class="cu-item">
<view class="cuIcon-form text-red"></view>
<text>个人业绩排行榜</text>
</navigator>
<navigator url='./yieldRate/yieldRate' class="cu-item">
<view class="cuIcon-activityfill text-red"></view>
<text>门店绩达成率</text>
</navigator>
<navigator url='./costList/costList' class="cu-item">
<view class="cuIcon-attentionfavor text-red"></view>
<text>成本利润表</text>
</navigator>
</view>
</view>
<!-- 未开发菜单 -->
@ -102,23 +180,23 @@
}
},
onShow:function() {
onShow: function() {
this.userInfo = uni.getStorageSync('userInfo')
uni.stopPullDownRefresh();
},
onPullDownRefresh() {
onPullDownRefresh: function() {
setTimeout(function() {
// uni.showToast({
// title: '',
// duration: 1000
// });
uni.navigateTo({
url: './all-powerful/all-powerful'
})
uni.stopPullDownRefresh();
}, 1000);
}
uni.redirectTo({
url: 'pages/myHome/myHome',
});
uni.showToast({
title: '刷新成功',
icon: 'success',
duration: 2000
});
}, 500);
},
}
</script>

@ -0,0 +1,110 @@
<template>
<view>
<view class="cu-form-group " >
<view style="width: 21%;">
</view>
<view >
2021
</view>
<button class="cu-btn bg-green shadow">上一年</button>
</view>
<view style="padding: 10upx;">
<view style="margin: 10upx auto;"
class="bg-red flex solid-bottom padding justify-start text-white text-center">
<view class="text-header" style="width:15%">
<text>日期</text>
</view>
<view class="text-header" style="width:20%">
<text>目标业绩</text>
</view>
<view class="text-header" style="width:20%">
<text>实际业绩</text>
</view>
<view class="text-header" style="width:20%">
<text>差额</text>
</view>
<view class="text-header" style="width:20%">
<text>达成率</text>
</view>
</view>
<view v-if="targetList.length==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无数据</view>
</view>
<view class=" light flex justify-start text-black text-center text-main"
style="padding-left: 10upx;" v-for="(item,index) in targetList" :key='index'>
<view class="text-header" style="width:15%">
<text>{{item.date}}</text>
</view>
<view class="text-header" style="width:20%">
<text>{{item.mbMoney}}</text>
</view>
<view class="text-header" style="width:20%">
<text>{{item.sjMoney}}</text>
</view>
<view class="text-header " style="width:20%;">
<text>{{item.difference}}</text>
</view>
<view class="text-header " style="width:20%;">
<text>{{item.ratio}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
targetList: [{
date: "2021-01",
mbMoney: 40000,
sjMoney: 48500,
difference: "超额8500",
ratio: "121.25%"
},
{
date: "2021-02",
mbMoney: 15000,
sjMoney: 14500,
difference: "500",
ratio: "96.67%"
},
{
date: "2021-03",
mbMoney: 50000,
sjMoney: 52150,
difference: "超额2150",
ratio: "104.30%"
},
{
date: "2021-04",
mbMoney: 50000,
sjMoney: 45600,
difference: "4400",
ratio: "91.20%"
},
]
}
},
methods: {
}
}
</script>
<style>
.text-main {
font-size: 28upx;
height: 80upx;
width: 100%;
line-height: 80upx;
margin-top: 15upx;
color: #000000;
border-bottom: #e6e6e6 1upx solid;
text-align: center;
}
</style>

@ -0,0 +1,142 @@
<template>
<view>
<view class=" bg-white margin-top flex justify-between " style="height: 120upx;font-size: 36upx;">
<view class=" flex align-center margin-left" style="width:50%">
<text class="cuIcon-titles text-red"></text>
<text>充值</text>
</view>
<view class="flex align-center margin-left" style="width: 50%;">
<text class="cuIcon-titles text-red"></text>
<text>疗程</text>
</view>
</view>
<view class="flex justify-start cradtext">
<view class="margin-left" style="width: 50%;" >
<view class="margin-top">
<text class="margin-left">期初</text>
<text class='text-price text-red'>{{form1.startMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">收入</text>
<text class='text-price text-red'>{{form1.rechargeMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">还款</text>
<text class='text-price text-red'>{{form1.recRepayMoney+form1.cashRefundMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">服务</text>
<text class='text-price text-red'>{{form1.recStoreCashMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">退款</text>
<text class='text-price text-red'>{{form1.recRefundMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">购疗程</text>
<text class='text-price text-red'>{{form1.cardToCourseMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">结存</text>
<text class='text-price text-red'>{{form1.endMoney}}</text>
</view>
</view>
<view class="margin-left" style="width: 50%;">
<view class="margin-top">
<text class="margin-left">期初</text>
<text class='text-price text-red'>{{form2.startMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">收入</text>
<text class='text-price text-red'>{{form2.courseMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">还款</text>
<text class='text-price text-red'>{{form2.courseRepayMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">服务</text>
<text class='text-price text-red'>{{form2.courseStoreCashMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">退款</text>
<text class='text-price text-red'>{{form2.cashRefundMoney+form2.courseRefundMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">购疗程</text>
<text class='text-price text-red'>{{form2.cardToCourseMoney}}</text>
</view>
<view class="margin-top">
<text class="margin-left">结存</text>
<text class='text-price text-red'>{{form2.endMoney}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
form1:{},
form2:{},
userInfo: {},
}
},
methods: {
achiCommList() {
const dates = new Date();
let year = dates.getFullYear();
let month = dates.getMonth() + 1;
let day = dates.getDate()
month = month > 9 ? month : '0' + month;;
day = day > 9 ? day : '0' + day;;
let date= year+'-'+month+"-"+day
this.$api.dayStatistic({
date: date,storeId:this.userInfo.storeId
}).then(res => {
console.log(res);
if (res.code == '000000') {
this.form1 = res.rows[0]
this.form2 = res.rows[1]
} else {
uni.showToast({
title: res.message,
icon: "none",
duration: 2000
});
}
})
}
},
onShow: function() {
this.userInfo = uni.getStorageSync("userInfo")
this.achiCommList()
},
onPullDownRefresh: function() {
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
},
}
</script>
<style>
.text-main {
font-size: 28upx;
height: 80upx;
width: 100%;
line-height: 80upx;
margin-top: 10upx;
color: #000000;
}
.cradtext text{
display: inline-block;
width: 100upx;
}
</style>

@ -0,0 +1,137 @@
<template>
<view class="todaystar ">
<scroll-view scroll-x class="bg-white nav text-center ">
<view class="cu-item" :class="TabCur==1?'text-white light bg-red':''" @tap="tabSelect" :data-id="1">购卡
</view>
<view class="cu-item" :class="TabCur==2?'text-white light bg-red':''" @tap="tabSelect" :data-id="2">服务
</view>
<view class="cu-item" :class="TabCur==3?'text-white light bg-red':''" @tap="tabSelect" :data-id="3">结存
</view>
</scroll-view>
<view class=" margin-top " style="padding: 10upx;">
<view style="margin: 10upx auto;"
class="bg-red flex solid-bottom padding justify-start text-white text-center">
<view class="text-header" style="width: 5%;">
</view>
<view class="text-header" style="width: 50%;">
<text>项目名称</text>
</view>
<view class="text-header" style="width: 30%;">
<text v-show="TabCur==1"></text>
<text v-show="TabCur==2"></text>
<text v-show="TabCur==3"></text>
</view>
<view class="text-header" style="width:15%;">
<text>占比</text>
</view>
</view>
<view v-if="starList.length==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无数据</view>
</view>
<view class=" light flex justify-start text-black text-center text-main" v-for="(item,index) in starList"
:key='index'
:class="index+1==1?'bg-pink':'bg-grey' && index+1==2?'bg-red':'bg-grey' &&index+1==3?'bg-orange':'bg-grey' ">
<view class="cur" style="width: 5%;">
<text>{{index+1}}</text>
</view>
<view class="text-header" style="width: 50%;">
<text>{{item.projectName}}</text>
</view>
<view class="text-header" style="width: 25%;">
<text>{{item.projectStatisticMoney}}</text>
</view>
<view class="text-header" style="width: 20%;">
<text>{{item.ratio}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
import host from '../../../../utils/host.js'
export default {
data() {
return {
TabCur: 3,
userInfo: {},
daylist: [],
starList: [{
index: 1,
brandNumber: 100023,
staffName: "疾风弟弟",
commissionAmount: 10560
},
],
}
},
methods: {
tabSelect(e) {
this.TabCur = e.currentTarget.dataset.id * 1
this.starList = []
this.projectList()
},
projectList() {
var that = this
var formData = {type:this.TabCur,storeId:this.userInfo.storeId}
uni.request({
url: host + '/demay/ssm/staff/projectList', //
data: formData, //
method: 'post', //
header: {
'content-type': 'application/x-www-form-urlencoded',
'token':that.userInfo.token
}, //
dataType: 'json', //
success(response) {
console.log(response.data.rows);
that.starList = response.data.rows
that.starList.forEach(item=>{
// if(item.projectName==''){
// item.projectName='S'
// }
// if(item.projectName==''){
// item.projectName='SPS'
// }
item.ratio =( item.ratio*100).toFixed(2)*1+'%'
})
},
fail(error) {
},
complete(com) {
}
})
}
},
onShow: function() {
this.userInfo = uni.getStorageSync("userInfo")
this.projectList()
},
onPullDownRefresh: function() {
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
},
}
</script>
<style>
.text-main {
font-size: 28upx;
height: 80upx;
width: 100%;
line-height: 80upx;
margin-top: 10upx;
color: #000000;
}
</style>

@ -0,0 +1,167 @@
<template>
<view class="todaystar ">
<scroll-view scroll-x class="bg-white nav text-center ">
<view class="cu-item" :class="TabCur==1?'text-white light bg-red':''" @tap="tabSelect" :data-id="1">充值
</view>
<view class="cu-item" :class="TabCur==2?'text-white light bg-red':''" @tap="tabSelect" :data-id="2">疗程
</view>
<view class="cu-item" :class="TabCur==3?'text-white light bg-red':''" @tap="tabSelect" :data-id="3">服务
</view>
</scroll-view>
<view class=" margin-top " style="padding: 10upx;">
<view style="margin: 10upx auto;"
class="bg-red flex solid-bottom padding justify-start text-white text-center">
<view class="text-header" style="width: 2%;">
</view>
<view class="text-header" style="width:20%;">
<text>员工</text>
</view>
<view class="text-header" style="width: 20%;">
<text>目标</text>
</view>
<view class="text-header" style="width: 20%;">
<text>实际</text>
</view>
<view class="text-header" style="width:20%;">
<text>差额</text>
</view>
<view class="text-header" style="width:18%;">
<text>达成率</text>
</view>
</view>
<view v-if="starList.length==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无数据</view>
</view>
<view class=" light flex justify-start text-black text-center text-main" v-for="(item,index) in starList"
:key='index'
:class="index+1==1?'bg-pink':'bg-grey' && index+1==2?'bg-red':'bg-grey' &&index+1==3?'bg-orange':'bg-grey' ">
<view class="cur" style="width: 2%;">
<text>{{index+1}}</text>
</view>
<view class="text-header" style="width: 20%;">
<text>{{item.name}}</text>
</view>
<view class="text-header" style="width: 20%;">
<text>{{item.m}}</text>
</view>
<view class="text-header" style="width: 20%;">
<text>{{item.s}}</text>
</view>
<view class="text-header" style="width: 20%;">
<text>{{item.c}}</text>
</view>
<view class="text-header" style="width: 18%;">
<text>{{item.ratio}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
import host from '../../../../utils/host.js'
export default {
data() {
return {
TabCur: 1,
userInfo: {},
daylist: [],
starList: [{
name: '陈佳',
m: 50000,
s: 68750,
c: '超额18750',
ratio:'137.50%'
}, {
name: '赵晓琳',
m: 45000,
s: 60800,
c: '超额15800',
ratio:'135.11%'
}, {
name: '陈倩倩',
m: 45000,
s: 58685,
c: '超额13685',
ratio:'130.41%'
},
{
name: '于颐莲',
m: 40000,
s: 41150,
c: '超额1150',
ratio:'102.87%'
},
{
name: '沈嘉',
m: 10000,
s: 10500,
c: '超额500',
ratio:'105.00%'
},
{
name: '王胜胜',
m: 20000,
s: 18600,
c: 1400,
ratio:'107.00%'
},{
name: '李婕',
m: 40000,
s: 36005,
c: 3995,
ratio:'109.98%'
}, {
name: '张毅',
m: 10000,
s: 5000,
c: 5000,
ratio:'50.00%'
},{
name: '余姚勇',
m: 30000,
s: 21050,
c: 8050,
ratio:'126.67%'
}
],
}
},
methods: {
tabSelect(e) {
this.TabCur = e.currentTarget.dataset.id * 1
this.projectList()
},
projectList() {
}
},
onShow: function() {
this.userInfo = uni.getStorageSync("userInfo")
},
onPullDownRefresh: function() {
setTimeout(function() {
uni.stopPullDownRefresh();
}, 1000);
},
}
</script>
<style>
.text-main {
font-size: 28upx;
height: 80upx;
width: 100%;
line-height: 80upx;
margin-top: 10upx;
color: #000000;
}
</style>

@ -3,16 +3,20 @@
<view>
<scroll-view scroll-x class="bg-white nav text-center">
<view class="cu-item light flex-sub" :class="[TabCur==0?'bg-red cur text-white':'']" @tap="tabSelect" :data-id="0">
<view class="cu-item light flex-sub" :class="[TabCur==0?'bg-red cur text-white':'']" @tap="tabSelect"
:data-id="0">
上月
</view>
<view class="cu-item light flex-sub" :class="[TabCur==1?'bg-red cur text-white':'']" @tap="tabSelect" :data-id="1">
<view class="cu-item light flex-sub" :class="[TabCur==1?'bg-red cur text-white':'']" @tap="tabSelect"
:data-id="1">
昨天
</view>
<view class="cu-item light flex-sub" :class="[TabCur==2?'bg-red cur text-white':'']" @tap="tabSelect" :data-id="2">
<view class="cu-item light flex-sub" :class="[TabCur==2?'bg-red cur text-white':'']" @tap="tabSelect"
:data-id="2">
今天
</view>
<view class="cu-item light flex-sub" :class="[TabCur==3?'bg-red cur text-white':'']" @tap="tabSelect" :data-id="3">
<view class="cu-item light flex-sub" :class="[TabCur==3?'bg-red cur text-white':'']" @tap="tabSelect"
:data-id="3">
本月
</view>
</scroll-view>
@ -220,7 +224,7 @@
export default {
data() {
return {
TabCur: 1,
TabCur: 2,
scrollLeft: 0,
salesDay: 0,
userInfo: null,
@ -255,6 +259,8 @@
this.lastMonthAchi += item.achievementAmount
this.lastMonthComm += item.commissionAmount
})
this.lastMonthComm = this.lastMonthComm.toFixed(2) * 1
this.lastMonthAchi = this.lastMonthAchi.toFixed(2) * 1
this.lastMonth = res.rows
} else if (this.TabCur == 1) {
//
@ -268,6 +274,8 @@
this.monthlistAchi += item.achievementAmount
this.monthlistComm += item.commissionAmount
})
this.monthlistComm = this.monthlistComm.toFixed(2) * 1
this.monthlistAchi = this.monthlistAchi.toFixed(2) * 1
this.monthList = res.rows
}
} else {
@ -279,9 +287,9 @@
})
},
},
onShow:function() {
onShow: function() {
this.userInfo = uni.getStorageSync('userInfo')
this.achiCommList()
console.log(new Date());

@ -12,7 +12,7 @@
<view class="flex solid-bottom padding align-center">
<view v-for="(item,index) in before" :key='index'>
<view class="huiyuan_img">
<image style='width: 120upx;height: 120upx;' :src="item.url" ></image>
<image @tap="_previewImage(item.url)" style='width: 120upx;height: 120upx;' :src="item.url" ></image>
<text class="cuIcon-delete text-red" @click="delFile(item,index)" style="position: absolute;bottom: 5upx;right: 5upx; color: #000000;"></text>
</view>
</view>
@ -28,7 +28,7 @@
<view class="flex solid-bottom padding align-center">
<view v-for="(item,index) in later" :key='index'>
<view class="huiyuan_img">
<image style='width: 120upx;height: 120upx;' :src="item.url" ></image>
<image @tap="_previewImage(item.url)" style='width: 120upx;height: 120upx;' :src="item.url" ></image>
<text class="cuIcon-delete text-red" @click="delFile(item,index)" style="position: absolute;bottom: 5upx;right: 5upx; color: #000000;"></text>
</view>
</view>
@ -87,6 +87,15 @@
}
},
methods: {
_previewImage(image) {
var imgArr = [];
imgArr.push(image);
//
uni.previewImage({
urls: imgArr,
current: imgArr[0]
});
},
subit:function(){
this.form.source = 1
this.form.staffIds = this.form.staffId

@ -2,7 +2,7 @@
<view>
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-title text-orange "></text> 消费列表
<text class="cuIcon-title text-orange "></text> 服务清单
</view>
<view class="uni-list" style="padding-right: 10upx;">
<view class="uni-list-cell">
@ -58,7 +58,7 @@
</view>
</view>
<text> {{pageInfo.total}} 记录</text>
<text class="margin-left"> {{pageInfo.total}} 记录</text>
</view>
</view>
</template>

@ -7,7 +7,7 @@
</view>
<text class="margin-right">{{form.memberName}}</text>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-titles text-red"></text>
@ -24,8 +24,9 @@
<view class="margin-left margin-top">
{{form.symptomatic}}
</view>
<view class="flex justify-start" >
<image class="margin-left margin-top" v-for="(item,index) in beforeList" :key='index' :src="item.url" style="width: 100upx;height: 100upx;" mode=""></image>
<view class="flex justify-start">
<image class="margin-left margin-top" v-for="(item,index) in beforeList" :key='index' @tap="_previewImage(item.url)"
:src="item.url" style="width: 100upx;height: 100upx;"></image>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action">
@ -36,8 +37,9 @@
<view class="margin-left margin-top">
{{form.symptomatic}}
</view>
<view class="flex justify-start" style="display: flex;" >
<image class="margin-left margin-top" v-for="(item,index) in laterList" :key='index' :src="item.url" style="width: 100upx;height: 100upx;" mode=""></image>
<view class="flex justify-start" style="display: flex;">
<image @tap="_previewImage(item.url)" class="margin-left margin-top" v-for="(item,index) in laterList" :key='index' :src="item.url" style="width: 100upx;height: 100upx;"
mode=""></image>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action">
@ -48,7 +50,7 @@
<view class="margin-left margin-top">
{{form.feedBack}}
</view>
</view>
</template>
@ -60,11 +62,20 @@
userInfo: null,
form: null,
detailForm: {},
beforeList:[],
laterList:[],
beforeList: [],
laterList: [],
}
},
methods: {
_previewImage(image) {
var imgArr = [];
imgArr.push(image);
//
uni.previewImage({
urls: imgArr,
current: imgArr[0]
});
},
getProjectProgressDetail() {
this.$api.getProjectProgressDetail({
progressId: this.form.id
@ -73,11 +84,11 @@
console.log(res);
let beforeList = []
let laterList = []
res.rows.forEach(item=>{
item.url = http.http+"/img"+item.filePath+'/'+item.fileName
if(item.type==1){
res.rows.forEach(item => {
item.url = http.http + "/img" + item.filePath + '/' + item.fileName
if (item.type == 1) {
laterList.push(item)
}else{
} else {
beforeList.push(item)
}
})

@ -7,11 +7,14 @@
</view>
<view class="cu-card article isCard">
<view class="cu-item" v-for="(item,index) in pageInfo.projectProgress" :key='index'>
<view class="title ">
<view class="title flex justify-between">
<view class="text-cut ">{{item.projectName}}</view>
<navigator :url="'./service-detail/service-detail?item='+ JSON.stringify(item)">
<button class=" cu-btn round bg-red" >查看详情</button>
</navigator>
</view>
<view class="content flex justify-center align-center ">
<view class="desc ">
<view class="content">
<view class="desc">
<view>
<text class='text-gray'>会员</text>{{item.memberName}}
</view>
@ -22,7 +25,7 @@
<text class='text-gray'>日期</text>{{item.docDate}}
</view>
<view>
<text class='text-gray'>使用前效果</text>{{item.symptomatic}}
<text class='text-gray'>使用前效果</text> {{item.symptomatic}}
</view>
<view>
<text class='text-gray'>使用后效果</text>{{item.nursingEffect}}
@ -31,13 +34,11 @@
<text class='text-gray'>会员建议</text>{{item.feedBack}}
</view>
</view>
<navigator :url="'./service-detail/service-detail?item='+ JSON.stringify(item)">
<button class=" cu-btn round bg-red" >查看详情</button>
</navigator>
</view>
</view>
</view>
<view> {{pageInfo.total}} 数据</view>
<view class="margin-left"> {{pageInfo.total}} 记录</view>
</view>
</template>
<script>

@ -0,0 +1,154 @@
<template>
<view class="todaystar ">
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-titles text-red"></text>
<text>当前月份</text>
</view>
<picker fields="month" mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
<button class="cu-btn bg-green shadow" data-target="Modal">{{date}}</button>
</picker>
</view>
<view class=" margin-top " style="padding: 10upx;">
<view style="margin: 10upx auto;"
class="bg-red flex solid-bottom padding justify-start text-white text-center">
<view class="text-header" style="width: 35%;">
<text>员工</text>
</view>
<view class="text-header" style="width: 20%;">
<text>底薪</text>
</view>
<view class="text-header" style="width: 20%;">
<text>提成</text>
</view>
<view class="text-header" style="width: 25%;">
<text>合计</text>
</view>
</view>
<view v-if="staffList.length==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无数据</view>
</view>
<view class=" light flex justify-start text-black text-center text-main" v-for="(item,index) in staffList"
:key='index'>
<view class="text-header" style="width: 35%;">
<text>{{item.brandNumber }} - {{ item.staffName}}</text>
</view>
<view class="text-header" style="width: 20%;">
<text>{{item.baseSalary==null?'无底薪':item.baseSalary}}</text>
</view>
<view class="text-header" style="width: 20%;">
<text>{{item.commSalary}}</text>
</view>
<view class="text-header" style="width: 25%;">
<text>{{item.num}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
const currentDate = this.getDate({
format: true
})
return {
date: currentDate,
TabCur: 0,
userInfo: {},
daylist: [],
staffList: [],
}
},
//
// $ $
//
// 1.
// | |
// 2.
// | |
// 3.
// | |
computed: {
startDate() {
return this.getDate('start');
},
endDate() {
return this.getDate('end');
}
},
methods: {
getDate(type) {
//
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
if (type === 'start') {
month = month - 2;
} else if (type === 'end') {
month = month
}
month = month > 9 ? month : '0' + month;;
return `${year}-${month}`;
},
bindDateChange(e){
this.date = e.detail.value
this.selectSalary()
},
selectSalary() {
this.$api.selectSalary({
storeId: this.userInfo.storeId,
date: this.date
}).then(res => {
if (res.code == '000000') {
res.rows.forEach(item => {
item.commSalary = item.commSalary.toFixed(2) * 1
if (item.baseSalary == null) {
item.num = item.commSalary
} else {
item.num = (item.commSalary * 1 + item.baseSalary * 1).toFixed(2) * 1
}
})
this.staffList = res.rows
} else {
uni.showToast({
title: res.message,
icon: "none",
duration: 2000
});
}
})
}
},
onShow: function() {
this.daylist = this.staffList
this.userInfo = uni.getStorageSync("userInfo")
this.selectSalary()
},
onPullDownRefresh: function() {
setTimeout(function() {
uni.stopPullDownRefresh();
this.daylist = []
this.daylist = this.staffList
}, 1000);
},
}
</script>
<style>
.text-main {
font-size: 28upx;
height: 80upx;
width: 100%;
line-height: 80upx;
margin-top: 10upx;
color: #000000;
}
</style>

@ -37,7 +37,7 @@
<text>{{item.staffName}}</text>
</view>
<view class="text-header" style="width: 35%;">
<text>{{item.commissionAmount}}</text>
<text>{{item.achievementAmount}}</text>
</view>
</view>
@ -48,40 +48,12 @@
<script>
export default {
data() {
return {
TabCur: 0,
userInfo: {},
daylist: [],
starList: [{
index: 1,
brandNumber: 100023,
staffName: "疾风弟弟",
commissionAmount: 10560
},
{
index: 2,
brandNumber: 100023,
staffName: "疾风弟弟",
commissionAmount: 10500
},
{
index: 3,
brandNumber: 100023,
staffName: "疾风弟弟",
commissionAmount: 10160
},
{
index: 4,
brandNumber: 100023,
staffName: "疾风弟弟",
commissionAmount: 10060
},
{
index: 5,
brandNumber: 100023,
staffName: "疾风弟弟",
commissionAmount: 10060
},
starList: [
],
}
},

@ -0,0 +1,110 @@
<template>
<view>
<view class="cu-form-group " style="margin: 10upx;">
<view style="width: 21%;">
</view>
<view >
2021 年门店业绩
</view>
<button class="cu-btn bg-green shadow">上一年</button>
</view>
<view style="padding: 10upx;">
<view style="margin: 10upx auto;"
class="bg-red flex solid-bottom padding justify-start text-white text-center">
<view class="text-header" style="width:15%">
<text>月份</text>
</view>
<view class="text-header" style="width:20%">
<text>计划业绩</text>
</view>
<view class="text-header" style="width:20%">
<text>实际业绩</text>
</view>
<view class="text-header" style="width:20%">
<text>差额</text>
</view>
<view class="text-header" style="width:20%">
<text>达成率</text>
</view>
</view>
<view v-if="targetList.length==0">
<view class='empty cuIcon-info'></view>
<view class='empty-text text-gray'>暂无数据</view>
</view>
<view class=" light flex justify-start text-black text-center text-main"
style="padding-left: 10upx;" v-for="(item,index) in targetList" :key='index'>
<view class="text-header" style="width:15%">
<text>{{item.date}}</text>
</view>
<view class="text-header" style="width:20%">
<text>{{item.mbMoney}}</text>
</view>
<view class="text-header" style="width:20%">
<text>{{item.sjMoney}}</text>
</view>
<view class="text-header " style="width:20%;">
<text>{{item.difference}}</text>
</view>
<view class="text-header " style="width:20%;">
<text>{{item.ratio}}</text>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
targetList: [{
date: "2021-01",
mbMoney: 250000,
sjMoney: 265500,
difference: "超额15500",
ratio: "106.20%"
},
{
date: "2021-02",
mbMoney: 150000,
sjMoney: 138650,
difference: "11350",
ratio: "92.43%"
},
{
date: "2021-03",
mbMoney: 250000,
sjMoney: 289500,
difference: "超额39500",
ratio: "115.80%"
},
{
date: "2021-04",
mbMoney: 250000,
sjMoney: 250603,
difference: "超额603",
ratio: "100.24%"
},
]
}
},
methods: {
}
}
</script>
<style>
.text-main {
font-size: 28upx;
height: 80upx;
width: 100%;
line-height: 80upx;
margin-top: 15upx;
color: #000000;
border-bottom: #e6e6e6 1upx solid;
text-align: center;
}
</style>

@ -0,0 +1,140 @@
<template>
<view>
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-titles text-red"></text>
<text>当前月份</text>
</view>
<picker fields="month" mode="date" :value="date" :start="startDate" :end="endDate" @change="bindDateChange">
<button class="cu-btn bg-green shadow" data-target="Modal">{{date}}</button>
<button class="cu-btn bg-red shadow margin-left margin-right" data-target="Modal">上一月</button>
</picker>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-titles text-red"></text>
<text>收入</text>
</view>
<text class="margin-right text-price text-red">250,603.00</text>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-titles text-red"></text>
<text>提成</text>
</view>
<text class="margin-right text-price text-red">87,711.33</text>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-titles text-red"></text>
<text>员工餐补</text>
</view>
<text class="margin-right text-price text-red">8,000.00</text>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-titles text-red"></text>
<text>租金</text>
</view>
<text class="margin-right text-price text-red">18,500.00</text>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-titles text-red"></text>
<text>其他</text>
</view>
<text class="margin-right text-price text-red">62,608.50</text>
</view>
<view class="cu-bar bg-white margin-top">
<view class="action">
<text class="cuIcon-titles text-red"></text>
<text>结余</text>
</view>
<text class="margin-right text-price text-red">73,783.17</text>
</view>
</view>
</template>
<script>
export default {
data() {
const currentDate = this.getDate({
format: true
})
return {
userInfo: {},
date:currentDate,
form: {
staffName: "刘乐乐",
job: 5,
basePay: 1800,
performance: 156000,
royalty: 3200,
close: 5000
}
}
},
computed: {
startDate() {
return this.getDate('start');
},
endDate() {
return this.getDate('end');
}
},
methods: {
getDate(type) {
//
const date = new Date();
let year = date.getFullYear();
let month = date.getMonth() + 1;
if (type === 'start') {
month = month - 2;
} else if (type === 'end') {
month = month
}
month = month > 9 ? month : '0' + month;;
return `${year}-${month}`;
},
bindDateChange: function(e) {
this.date = e.target.value
this.salaryByStaff()
},
salaryByStaff() {
let date = this.date
var form = {
storeId: this.userInfo.storeId,
storeName: this.userInfo.storeName,
staffId: this.userInfo.id,
staffName: this.userInfo.staffName,
brandNumber: this.userInfo.brandNumber,
date: date
}
this.$api.salaryByStaff(form).then(res => {
if (res.code == '000000') {
this.form = res.data
} else {
uni.showModal({
title: '提示',
content: res.message,
showCancel: false,
success: function(res) {}
})
}
})
}
},
onShow: function() {
this.userInfo = uni.getStorageSync('userInfo')
this.salaryByStaff()
}
}
</script>
<style>
</style>

@ -124,7 +124,20 @@
console.log(this.date);
this.selectRecentRecord()
}
},
onPullDownRefresh: function() {
setTimeout(function() {
uni.stopPullDownRefresh();
uni.redirectTo({
url: 'pages/mySet/common/expense/expense',
});
uni.showToast({
title: '刷新成功',
icon: 'success',
duration: 2000
});
}, 500);
},
}
</script>

@ -1,19 +1,20 @@
<template>
<view>
<view class='nav'>
<image bindtap='chooseAvatar' class="cu-avatar xl round" src='../../../../../static/image/my.png'></image>
<image v-if="user.memberName" class="cu-avatar xl round" src='../../../../../static/image/my.png'></image>
<text v-else="!user.memberName" class="cu-avatar radius cu-avatar xl round "
style="border-radius: 50%;">{{user.staffName[0]}}</text>
</view>
<view class='module'>
<view class="cu-form-group" >
<view class="title" >员工水牌号</view>
<view class="cu-form-group">
<view class="title">水牌号</view>
{{user.brandNumber}}
</view>
<view class='common-hr'></view>
</view>
<view class='module'>
<view class="cu-form-group" >
<view class="cu-form-group">
<view class="title">姓名</view>
{{user.staffName}}
</view>
@ -32,14 +33,55 @@
<view class='module'>
<view class="cu-form-group">
<view class="title">性别</view>
<text @tap="showModal" data-target="RadioModal">
{{user.sex == 1 ? '男' : '女'}}
<text @tap="showModal" data-target="RadioModal">
{{user.sex == 1 ? '男' : '女'}}
</text>
</view>
</view>
<view class='module'>
<view class="cu-form-group">
<view class="title">职务</view>
<text>
{{user.grade == 1 ? '店长' : user.grade == 2 ? '美容经理' : user.grade == 3 ? '美发经理': user.grade == 4 ? '总监':user.grade == 6 ? '员工':user.grade[1]+'级美发师'}}
</text>
</view>
</view>
<view class='module' v-show="user.baseSalary!=null">
<view class="cu-form-group">
<view class="title">底薪</view>
<text class="text-price text-red">
{{user.baseSalary}}
</text>
</view>
</view>
<view v-show="false" class="flex justify-center" style="width: 100%;font-size: 28upx; color: #383838; margin-top: 50upx;">
<view class='module'>
<view class="cu-form-group" >
<view class="title">人气</view>
<text class="cuIcon-hot text-red">{{user.popularity*10}}</text>
</view>
<view class='common-hr'></view>
</view>
<view class='module'>
<view class="cu-form-group">
<view class="title">入职日期</view>
<text >
{{user.joinedDate}}
</text>
</view>
</view>
<view class='module'>
<view class="cu-form-group">
<view class="title">是否用户</view>
<text >
{{user.userState == 1 ? '是' : '否'}}
</text>
</view>
</view>
<view v-show="false" class="flex justify-center"
style="width: 100%;font-size: 28upx; color: #383838; margin-top: 50upx;">
<navigator url="edit-message/edit-message">
<button class="cu-btn round line-red">修改信息</button>
<button class="cu-btn round line-red">修改信息</button>
</navigator>
</view>
</view>
@ -49,79 +91,83 @@
export default {
data() {
return {
user:{
mobilePhone:'',
memberName:'',
sex:null,
memberNum:'',
user: {
mobilePhone: '',
memberName: '',
sex: null,
memberNum: '',
},
avatarPath:null
avatarPath: null
}
},
methods: {
},
onShow:function(){
onShow: function() {
},
onShow:function() {
onShow: function() {
this.user = uni.getStorageSync('userInfo')
}
}
</script>
<style>
.nav {
width: 130upx;
margin: 40upx auto;
padding-bottom: 20upx;
}
.nav>image {
background: white;
}
.module {
background-color: white;
padding: 10upx 30upx;
}
.radio {
display: inline-block;
width: 30upx;
margin: 0;
padding: 0;
}
.content {
margin-bottom: 5upx;
}
.login {
position: absolute;
bottom: 30upx;
}
.cu-form-group .title {
min-width: calc(4em + 30upx);
}
.cu-form-group input {
text-align: left;
}
.padding-xl{
background-color: #ffffff;
padding: 30upx;
}
.cu-btn{
padding: 0 20upx;
}
.submin{
margin-top: 50upx;
}
.submin button{
width: 570upx;
height: 60upx;
line-height: 60upx;
}
.nav {
width: 130upx;
margin: 40upx auto;
padding-bottom: 20upx;
}
.nav>image {
background: white;
}
.module {
background-color: white;
padding: 10upx 30upx;
}
.radio {
display: inline-block;
width: 30upx;
margin: 0;
padding: 0;
}
.content {
margin-bottom: 5upx;
}
.login {
position: absolute;
bottom: 30upx;
}
.cu-form-group .title {
min-width: calc(4em + 30upx);
}
.cu-form-group input {
text-align: left;
}
.padding-xl {
background-color: #ffffff;
padding: 30upx;
}
.cu-btn {
padding: 0 20upx;
}
.submin {
margin-top: 50upx;
}
.submin button {
width: 570upx;
height: 60upx;
line-height: 60upx;
}
</style>

@ -21,7 +21,7 @@
<text class="cuIcon-titles text-red"></text>
<text>水牌号</text>
</view>
<text class="margin-right text-price text-red">{{form.brandNumber}}</text>
<text class="margin-right text-cyan">{{form.brandNumber}}</text>
</view>
<!-- <view class="cu-bar bg-white margin-top">
<view class="action">
@ -49,7 +49,7 @@
<text class="cuIcon-titles text-red"></text>
<text>工资结算:</text>
</view>
<text class="margin-right text-price text-red">{{form.commSalary+form.baseSalary}}</text>
<text class="margin-right text-price text-red">{{((form.baseSalary==null?0:form.baseSalary)+form.commSalary).toFixed(2)*1}}</text>
</view>
</view>
</template>

@ -6,11 +6,17 @@
<view class="myset_main">
<view class="myset_main_up">
<navigator url="./common/message/message">
<view class="text_icon cuIcon-profile text-grey"></view>
<view class="text_icon cuIcon-profile text-red"></view>
我的信息
<view class="text_icon_right cuIcon-right"> </view>
</navigator>
<view class="hr"></view>
<navigator url="./common/cost/cost">
<view class="text_icon cuIcon-form text-cyan"></view>
成本列表
<view class="text_icon_right cuIcon-right"> </view>
</navigator>
<view class="hr"></view>
<navigator v-if="userInfo.user==0" url="./common/my-card/my-card">
<view class="text_icon cuIcon-card text-orange"></view>
我的卡包
@ -56,14 +62,18 @@
userInfo: null,
}
},
onPullDownRefresh() {
onPullDownRefresh: function() {
setTimeout(function() {
this.userInfo = uni.getStorageSync('userInfo')
uni.navigateTo({
url: "../myHome/all-powerful/all-powerful"
})
uni.stopPullDownRefresh();
}, 1000);
uni.redirectTo({
url: 'pages/mySet/mySet',
});
uni.showToast({
title: '刷新成功',
icon: 'success',
duration: 2000
});
}, 500);
},
methods: {
@ -80,7 +90,7 @@
icon: "none",
duration: 1000
})
uni.redirectTo({
uni.reLaunch({
url: '../../login/login'
});
}
@ -93,9 +103,11 @@
icon: "none",
duration: 1000
})
uni.redirectTo({
uni.reLaunch({
url: '../../login/login'
});
uni.removeStorageSync('userInfo')
uni.removeStorageSync('userPassword')
} else {
uni.showToast({
title: res.message,

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

@ -0,0 +1 @@
https://service.dcloud.net.cn/build/download/82a0e840-9b68-11eb-8b9d-b9a6d32943db

File diff suppressed because one or more lines are too long

@ -0,0 +1,3 @@
andrCertfile=G:/HBuilderX/plugins/app-safe-pack/Test.keystore
andrCertAlias=test
andrCertPass=ep/Tdjka4Y7WYqDB6/S7dw==

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 46 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

@ -0,0 +1,25 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<script>
var __UniViewStartTime__ = Date.now();
var coverSupport = 'CSS' in window && typeof CSS.supports === 'function' && (CSS.supports('top: env(a)') ||
CSS.supports('top: constant(a)'))
document.write(
'<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0' +
(coverSupport ? ', viewport-fit=cover' : '') + '" />')
</script>
<title>View</title>
<link rel="stylesheet" href="view.css" />
</head>
<body>
<div id="app"></div>
<script src="__uniappes6.js"></script>
<script src="view.umd.min.js"></script>
<script src="app-view.js"></script>
</body>
</html>

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
(function(e){function r(r){for(var n,l,i=r[0],p=r[1],a=r[2],c=0,s=[];c<i.length;c++)l=i[c],Object.prototype.hasOwnProperty.call(o,l)&&o[l]&&s.push(o[l][0]),o[l]=0;for(n in p)Object.prototype.hasOwnProperty.call(p,n)&&(e[n]=p[n]);f&&f(r);while(s.length)s.shift()();return u.push.apply(u,a||[]),t()}function t(){for(var e,r=0;r<u.length;r++){for(var t=u[r],n=!0,i=1;i<t.length;i++){var p=t[i];0!==o[p]&&(n=!1)}n&&(u.splice(r--,1),e=l(l.s=t[0]))}return e}var n={},o={"app-config":0},u=[];function l(r){if(n[r])return n[r].exports;var t=n[r]={i:r,l:!1,exports:{}};return e[r].call(t.exports,t,t.exports,l),t.l=!0,t.exports}l.m=e,l.c=n,l.d=function(e,r,t){l.o(e,r)||Object.defineProperty(e,r,{enumerable:!0,get:t})},l.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},l.t=function(e,r){if(1&r&&(e=l(e)),8&r)return e;if(4&r&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(l.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&r&&"string"!=typeof e)for(var n in e)l.d(t,n,function(r){return e[r]}.bind(null,n));return t},l.n=function(e){var r=e&&e.__esModule?function(){return e["default"]}:function(){return e};return l.d(r,"a",r),r},l.o=function(e,r){return Object.prototype.hasOwnProperty.call(e,r)},l.p="/";var i=this["webpackJsonp"]=this["webpackJsonp"]||[],p=i.push.bind(i);i.push=r,i=i.slice();for(var a=0;a<i.length;a++)r(i[a]);var f=p;t()})([]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -0,0 +1 @@
{"@platforms":["android","iPhone","iPad"],"id":"__UNI__4D77F26","name":"DeMay","version":{"name":"1.0.0","code":"100"},"description":"","launch_path":"__uniappview.html","developer":{"name":"","email":"","url":""},"permissions":{"UniNView":{"description":"UniNView原生渲染"}},"plus":{"useragent":{"value":"uni-app","concatenate":true},"splashscreen":{"target":"id:1","autoclose":true,"waiting":true,"delay":0},"popGesture":"close","launchwebview":{"id":"1","kernel":"WKWebview"},"statusbar":{"immersed":"supportedDevice","style":"light","background":"#F8F8F8"},"usingComponents":true,"nvueCompiler":"uni-app","compilerVersion":3,"distribute":{"icons":{"android":{"hdpi":"icon-android-hdpi.png","xhdpi":"icon-android-xhdpi.png","xxhdpi":"icon-android-xxhdpi.png","xxxhdpi":"icon-android-xxxhdpi.png"},"ios":{"appstore":"unpackage/res/icons/1024x1024.png","ipad":{"app":"unpackage/res/icons/76x76.png","app@2x":"unpackage/res/icons/152x152.png","proapp@2x":"unpackage/res/icons/167x167.png","spotlight":"unpackage/res/icons/40x40.png","spotlight@2x":"unpackage/res/icons/80x80.png","settings":"unpackage/res/icons/29x29.png","settings@2x":"unpackage/res/icons/58x58.png","notification":"unpackage/res/icons/20x20.png","notification@2x":"unpackage/res/icons/40x40.png"},"iphone":{"app@2x":"unpackage/res/icons/120x120.png","app@3x":"unpackage/res/icons/180x180.png","spotlight@2x":"unpackage/res/icons/80x80.png","spotlight@3x":"unpackage/res/icons/120x120.png","settings@2x":"unpackage/res/icons/58x58.png","settings@3x":"unpackage/res/icons/87x87.png","notification@2x":"unpackage/res/icons/40x40.png","notification@3x":"unpackage/res/icons/60x60.png"},"prerendered":"false"}},"splashscreen":{"androidStyle":"common"},"google":{"permissions":["<uses-permission android:name=\"android.permission.ACCESS_COARSE_LOCATION\"/>","<uses-permission android:name=\"android.permission.ACCESS_FINE_LOCATION\"/>","<uses-permission android:name=\"android.permission.CALL_PHONE\"/>","<uses-permission android:name=\"android.permission.CHANGE_WIFI_STATE\"/>","<uses-permission android:name=\"android.permission.MODIFY_AUDIO_SETTINGS\"/>","<uses-permission android:name=\"android.permission.MOUNT_UNMOUNT_FILESYSTEMS\"/>","<uses-permission android:name=\"android.permission.READ_LOGS\"/>","<uses-permission android:name=\"android.permission.VIBRATE\"/>","<uses-permission android:name=\"android.permission.WAKE_LOCK\"/>","<uses-permission android:name=\"android.permission.WRITE_SETTINGS\"/>"],"packagename":"deMay.uniapp","password":"","aliasname":"","keystore":"html5plus://test","custompermissions":true},"apple":{"devices":"universal"},"plugins":{"ad":{},"audio":{"mp3":{"description":"Android平台录音支持MP3格式文件"}}},"orientation":["portrait-primary"]},"allowsInlineMediaPlayback":true,"safearea":{"background":"#ffffff","bottom":{"offset":"auto"}},"uni-app":{"compilerVersion":"3.1.8","control":"uni-v3","nvueCompiler":"uni-app","renderer":"auto","nvue":{"flex-direction":"column"},"nvueLaunchMode":"normal"},"tabBar":{"color":"#7A7E83","selectedColor":"#e83131","borderStyle":"rgba(0,0,0,0.4)","backgroundColor":"#ffffff","list":[{"pagePath":"pages/tabBar/myHome/myHome","iconPath":"static/image/home.png","selectedIconPath":"static/image/home-select.png","text":"首页"},{"pagePath":"pages/tabBar/mySet/mySet","iconPath":"static/image/my.png","selectedIconPath":"static/image/my-select.png","text":"我的"}],"height":"50px","child":["lauchwebview"],"selected":1},"launch_path":"__uniappview.html","adid":"121927300401"}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 41 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 392 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

@ -1 +1 @@
forceInstall
installed

Binary file not shown.

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save