main
liudan 2 years ago
parent 00ae9f1e16
commit a61500087a
  1. 18
      App.vue
  2. 19
      api/modules/mine.js
  3. 36
      pages.json
  4. 25
      pages/mine.vue
  5. BIN
      static/1.png
  6. BIN
      static/2.png
  7. BIN
      static/3.png
  8. 44
      technician/pages/apply.vue
  9. 4
      unpackage/dist/dev/app-plus/app-config-service.js
  10. 27574
      unpackage/dist/dev/app-plus/app-service.js
  11. 17540
      unpackage/dist/dev/app-plus/app-view.js
  12. BIN
      unpackage/dist/dev/app-plus/static/logo-120.png
  13. BIN
      unpackage/dist/dev/app-plus/static/logo-180.png
  14. BIN
      unpackage/dist/dev/app-plus/static/logo-40.png
  15. BIN
      unpackage/dist/dev/app-plus/static/logo-58.png
  16. BIN
      unpackage/dist/dev/app-plus/static/logo-60.png
  17. BIN
      unpackage/dist/dev/app-plus/static/logo-80.png
  18. BIN
      unpackage/dist/dev/app-plus/static/logo-87.png
  19. BIN
      unpackage/dist/dev/app-plus/static/logo.png
  20. 12
      user/pages/apply-result.vue
  21. 12
      user/pages/distribution/income.vue
  22. 12
      user/pages/distribution/record.vue
  23. 12
      user/pages/distribution/team.vue
  24. 69
      user/pages/myGroup/myGroup.vue
  25. 94
      user/pages/myGroup/myGroupOrder.vue
  26. 12
      user/pages/order/evaluate.vue
  27. 71
      user/pages/score/score.vue
  28. 90
      user/pages/stored/list.vue

@ -2,7 +2,16 @@
import $api from "@/api/index.js"
import $store from "@/store/index.js"
export default {
data(){
return{
timer:null
}
},
async mounted() {
this.onlineStatus()
this.timer = setInterval(()=>{
this.onlineStatus()
},300000)
// #ifdef H5
if (typeof window.entryUrl === 'undefined' || window.entryUrl === '') {
window.entryUrl = window.location.href.split('#')[0]
@ -10,10 +19,13 @@
if (window.location.href.indexOf('?#') < 0) {
window.location.href = window.location.href.replace("#", "?#");
}
// #endif
console.log('App mounted')
},
async onLaunch() {
let configInfo = uni.getStorageSync('configInfo') || ''
if (configInfo) {
$store.commit('updateConfigItem', {
@ -50,6 +62,7 @@
await this.getBaseConfig()
},
async onShow() {
console.log('App Show')
},
onHide() {
@ -69,6 +82,11 @@
key: 'configInfo',
val: configInfo
})
},
async onlineStatus(){
console.log("uuuu")
let res = await this.$api.mine.onlineStatus()
console.log(res,"pppp")
}
}
}

@ -138,4 +138,23 @@ export default {
chapingList(param){
return req.post("/massage/app/negativeCommentList", param)
},
//技师店铺
companyList(param){
return req.post("/massage/app/Index/companyList", param)
},
//在线时长
onlineStatus(param){
return req.post("/massage/app/IndexUser/onlineStatus", param)
},
//技师月排序
companyMonth(param){
return req.post("/massage/app/IndexUser/companyMonth", param)
},
//
integralLogList(param){
return req.post("/massage/app/IndexUser/integralLogList", param)
},
}

@ -320,31 +320,57 @@
{
"path": "pages/complainList/complainList",
"style": {
"navigationBarTitleText": "投诉管理"
"navigationBarTitleText": "投诉管理",
"navigationBarTextStyle":"black"
}
},
{
"path": "pages/complainList/complain",
"style": {
"navigationBarTitleText": "投诉"
"navigationBarTitleText": "投诉",
"navigationBarTextStyle":"black"
}
},
{
"path": "pages/chapingList/chapingList",
"style": {
"navigationBarTitleText": "差评申诉"
"navigationBarTitleText": "差评申诉",
"navigationBarTextStyle":"black"
}
},
{
"path": "pages/traffic/index",
"style": {
"navigationBarTitleText": "车费管理"
"navigationBarTitleText": "车费管理",
"navigationBarTextStyle":"black"
}
},
{
"path": "pages/chapingList/shensu",
"style": {
"navigationBarTitleText": "申诉"
"navigationBarTitleText": "申诉",
"navigationBarTextStyle":"black"
}
},
{
"path": "pages/myGroup/myGroup",
"style": {
"navigationBarTitleText": "我的团队",
"navigationBarTextStyle":"black"
}
},
{
"path": "pages/myGroup/myGroupOrder",
"style": {
"navigationBarTitleText": "团队排行",
"navigationBarTextStyle":"black"
}
},
{
"path": "pages/score/score",
"style": {
"navigationBarTitleText": "积分明细",
"navigationBarTextStyle":"black"
}
}
]

@ -77,6 +77,9 @@
</view>
</auth>
<view class="" v-if="userPageType == 2">
<view style="padding-top:113upx;font-size: 36upx;color:#ffffff;text-align:center;position:relative">首页
<text style="position:absolute;font-size: 30rpx;color:#ffffff;right:25upx;top:120upx" @click="mygroup">我的团队</text>
</view>
<view class="jishicontent">
<view class="jishiItem" @click="timeManage">
<image src="../static/j1.png" mode=""></image>
@ -462,11 +465,18 @@
url: ''
},
],
toolList2: [{
toolList2: [
// {
// // icon: 'iconshenqingjishi',
// text: '',
// // url: '/technician/pages/apply?is_edit=1'
// },
{
// icon: 'iconshenqingjishi',
text: '合同管理',
// url: '/technician/pages/apply?is_edit=1'
}, {
text: '积分明细',
url: '/user/pages/score/score'
},
{
// icon: 'iconshijianguanli',
text: '差评申诉',
url: '/user/pages/chapingList/chapingList'
@ -533,6 +543,11 @@
url: `/technician/pages/time-manage`
})
},
async mygroup(){
this.$util.goUrl({
url:'/user/pages/myGroup/myGroup'
})
},
async initIndex(refresh = false) {
// #ifdef H5
// if (!refresh && this.$jweixin.isWechat()) {
@ -1144,7 +1159,7 @@
display:flex;
justify-content: space-around;
align-items: center;
padding-top:330rpx;
padding-top:160rpx;
.jishiItem{
display: flex;
justify-content: center;

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

@ -29,11 +29,28 @@
<input v-model="form.mobile" type="text" class="item-input flex-1"
:placeholder="rule[1].errorMsg" />
</view>
<view class="flex-between pl-lg pr-lg b-1px-b">
<view class="item-text">店铺名称</view>
<!-- <view class="flex-between pl-lg pr-lg b-1px-b">
<view class="item-text">商家名称</view> -->
<!-- <input v-model="form.store_name" type="text" class="item-input flex-1"
:placeholder="rule[2].errorMsg" /> -->
<!-- <picker @change="pickerChangeCompany($event)" :value="cityIndex" :range="companyListData"
range-key="title">
<view class="flex-y-center">
{{cityIndex!=-1?cityList[cityIndex].title:'请选择'}}
<i class="iconfont icon-right ml-sm" style="font-size: 28rpx;"></i>
</view>
</picker> -->
<!-- </view> -->
<view class="flex-between pl-lg pr-lg b-1px-b" @click="show=true">
<view class="item-text" >商家名称</view>
<input v-model="form.store_name" type="text" class="item-input flex-1"
:placeholder="rule[2].errorMsg" />
:placeholder="rule[2].errorMsg" disabled/>
</view>
<u-picker :show="show" :columns="companyListData"
confirmText="完成"
@cancel="cancelHandle"
@confirm="pickerChangeCompany"
keyName="name"></u-picker>
<view class="flex-between pl-lg pr-lg b-1px-b">
<view class="item-text">从业年份</view>
<input v-model="form.work_time" type="number" class="item-input flex-1"
@ -218,6 +235,7 @@
coach_name: '', //
mobile: '', //
store_name:'',//
company_id:null,
sex: 0, //
work_time: '', //
// city: '', //
@ -303,7 +321,9 @@
errorMsg: "请上传个人生活照"
},
],
lockTap: false
lockTap: false,
companyListData:[],
show:false
}
},
computed: mapState({
@ -316,6 +336,7 @@
let {
is_edit = 0
} = options
this.companyList()
options.is_edit = is_edit
options = await this.updateCommonOptions(options)
this.options = options
@ -335,6 +356,11 @@
methods: {
...mapActions(['getUserInfo', 'updateCommonOptions']),
...mapMutations(['updateUserItem']),
async companyList(){
let data = await this.$api.mine.companyList()
this.companyListData.push(data)
},
async initIndex(refresh = false) {
// #ifdef H5
// if (!refresh && this.$jweixin.isWechat()) {
@ -472,6 +498,16 @@
this.cityIndex = e.target.value
this.form.city_id = this.cityList[this.cityIndex].id
},
pickerChangeCompany(val) {
console.log('picker发送选择改变,携带值为', val.value)
// this.cityIndex = e.target.value
this.form.store_name = val.value[0].name
this.form.company_id = val.value[0].id
this.show = false
},
cancelHandle(){
this.show = false
},
imgUpload(e) {
let {
imagelist,

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.

Before

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

@ -90,12 +90,12 @@
...mapMutations(['updateUserItem']),
async initIndex(refresh = false) {
// #ifdef H5
if (!refresh && this.$jweixin.isWechat()) {
await this.$jweixin.initJssdk();
this.$jweixin.wxReady(() => {
this.$jweixin.hideOptionMenu()
})
}
// if (!refresh && this.$jweixin.isWechat()) {
// await this.$jweixin.initJssdk();
// this.$jweixin.wxReady(() => {
// this.$jweixin.hideOptionMenu()
// })
// }
// #endif
await this.getMineInfo()
let {

@ -84,12 +84,12 @@
...mapMutations([]),
async initIndex(refresh = false) {
// #ifdef H5
if (!refresh && this.$jweixin.isWechat()) {
await this.$jweixin.initJssdk();
this.$jweixin.wxReady(() => {
this.$jweixin.hideOptionMenu()
})
}
// if (!refresh && this.$jweixin.isWechat()) {
// await this.$jweixin.initJssdk();
// this.$jweixin.wxReady(() => {
// this.$jweixin.hideOptionMenu()
// })
// }
// #endif
this.$util.showLoading()
this.detail = await this.$api.mine.capCashInfo()

@ -118,12 +118,12 @@
...mapMutations([]),
async initIndex(refresh = false) {
// #ifdef H5
if (!refresh && this.$jweixin.isWechat()) {
await this.$jweixin.initJssdk();
this.$jweixin.wxReady(() => {
this.$jweixin.hideOptionMenu()
})
}
// if (!refresh && this.$jweixin.isWechat()) {
// await this.$jweixin.initJssdk();
// this.$jweixin.wxReady(() => {
// this.$jweixin.hideOptionMenu()
// })
// }
// #endif
await this.getList()
this.$util.setNavigationBarColor({

@ -64,12 +64,12 @@
...mapMutations(['']),
async initIndex(refresh = false) {
// #ifdef H5
if (!refresh && this.$jweixin.isWechat()) {
await this.$jweixin.initJssdk();
this.$jweixin.wxReady(() => {
this.$jweixin.hideOptionMenu()
})
}
// if (!refresh && this.$jweixin.isWechat()) {
// await this.$jweixin.initJssdk();
// this.$jweixin.wxReady(() => {
// this.$jweixin.hideOptionMenu()
// })
// }
// #endif
await this.getList()
this.$util.setNavigationBarColor({

@ -0,0 +1,69 @@
<template>
<view class="groupContent">
<view class="group">
<text class="guishu">归属商家</text>
<text class="order" @click="goGroupList">查看团队排行</text>
</view>
<view class="shop">
浦口区哈哈哈养生服务中心
</view>
<view class="group">
<text class="guishu">营业执照</text>
</view>
</view>
</template>
<script>
export default{
data(){
return{
}
},
methods:{
async getCompanyMonth() {
let res = await this.$api.mine.companyMonth()
console.log(res,"mm")
},
goGroupList(){
this.$util.goUrl({
url: '/user/pages/myGroup/myGroupOrder'
})
}
},
onLoad() {
this.getCompanyMonth()
}
}
</script>
<style lang="scss" scoped>
.groupContent{
margin: 0 24upx;
.group{
padding-top:40upx;
display: flex;
align-items: center;
justify-content: space-between;
.guishu{
font-size: 30rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #333333;
}
.order{
font-size: 30rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #08BF77;
}
}
.shop{
font-size: 30rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #333333;
margin-top:44rpx;
}
}
</style>

@ -0,0 +1,94 @@
<template>
<view class="groupContent">
<view class="titlecontent">
<view class="titleItem">排名</view>
<view class="titleItem">商家名称</view>
<view class="titleItem">技师人数</view>
<view class="titleItem">上月总积分</view>
</view>
<view class="orderContent" v-for="(item,index) in orderList" :key="index">
<view class="orderItem">
<image src="../../../static/1.png" v-if="index==0" mode=""></image>
<image src="../../../static/2.png" v-if="index==1" mode=""></image>
<image src="../../../static/3.png" v-if="index==2" mode=""></image>
<view class="orderText" v-if="index!=0&&index!=1&&index!=2">
{{index+1}}
</view>
</view>
<view class="orderItem">{{item.name}}</view>
<view class="orderItem">{{item.coach_num}}</view>
<view class="orderItem">{{item.integral}}</view>
</view>
</view>
</template>
<script>
export default{
data(){
return{
orderList:[]
}
},
methods:{
async getCompanyMonth() {
let res = await this.$api.mine.companyMonth()
console.log(res,"mm")
this.orderList = res
},
},
onLoad() {
this.getCompanyMonth()
}
}
</script>
<style lang="scss" scoped>
.groupContent{
padding: 0 24upx;
.titlecontent{
background: #FFFFFF;
border-radius: 30rpx;
display:flex;
margin:20rpx 0;
.titleItem{
width:25%;
font-size: 30rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #333333;
padding:27rpx 0;
text-align: center;
white-space: nowrap;
}
}
.orderContent{
background: #FFFFFF;
border-radius: 30rpx;
display:flex;
margin:20rpx 0;
.orderItem{
width:25%;
font-size: 30rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #333333;
padding:27rpx 0;
text-align: center;
white-space: nowrap;
image{
width:46upx;
height:37upx;
margin:0 auto;
}
.orderText{
font-size: 36rpx;
font-family: Alibaba PuHuiTi;
font-weight: bold;
color: #333333;
}
}
}
}
</style>

@ -82,12 +82,12 @@
...mapMutations([]),
async initIndex() {
// #ifdef H5
if (this.$jweixin.isWechat()) {
await this.$jweixin.initJssdk();
this.$jweixin.wxReady(() => {
this.$jweixin.hideOptionMenu()
})
}
// if (this.$jweixin.isWechat()) {
// await this.$jweixin.initJssdk();
// this.$jweixin.wxReady(() => {
// this.$jweixin.hideOptionMenu()
// })
// }
// #endif
let {
id

@ -0,0 +1,71 @@
<template>
<view style="min-height: calc(100vh);background-color: #ffffff;">
<view class="scoreList" v-for="(item,index) in scoreList" :key="index">
<view class="score">
<text>{{item.remake}}</text>
<view class="scoreNum">
<view>+{{item.integral}}</view>
<u-icon color="#999999" size="18" name="arrow-right"></u-icon>
</view>
</view>
<view class="time">
{{item.create_time}}
</view>
</view>
</view>
</template>
<script>
export default{
data(){
return{
scoreList:[]
}
},
methods:{
async integralLogList() {
let res = await this.$api.mine.integralLogList()
console.log(res,"mm")
this.scoreList = res.list
},
},
onLoad() {
this.integralLogList()
}
}
</script>
<style lang="scss" scoped>
.scoreList{
padding:24upx 0upx;
margin:0 30upx;
border-bottom: 1px solid #EAEAEA;
.score{
display:flex;
align-items: center;
justify-content: space-between;
text{
font-size: 34rpx;
font-family: PingFang SC;
font-weight: bold;
color: #333333;
}
.scoreNum{
display:flex;
align-items: center;
justify-content: space-between;
&>view{
font-size: 34rpx;
font-family: PingFang SC;
font-weight: bold;
color: #F4563C;
}
}
}
.time{
margin-top:25upx;
}
}
</style>

@ -36,16 +36,23 @@
<!-- :style="{color:primaryColor,border:`1rpx solid ${primaryColor}`}" -->
</view>
<view @tap="toPay(index)" class="list-item fill-base flex-between mt-md ml-lg mr-lg pd-lg radius-16"
v-for="(item,index) in list.data" :key="index">
<view class="flex-1">
<view class="f-title c-warning">¥{{item.price}}</view>
<view class="f-caption c-caption">{{item.title}}</view>
<view class="jineContent">
<view class="titleText">
充值金额
</view>
<view class="moneyContent">
<view @tap="chongzhiHandle(index)" :class="index==activeIndex?'list-item activeStyle fill-base mt-md pd-lg radius-16':'list-item fill-base mt-md pd-lg radius-16'"
v-for="(item,index) in list.data" :key="index">
<view class="priceNum">¥{{item.price}}</view>
<view class="name">{{item.title}}</view>
</view>
</view>
<view class="item-btn flex-center f-caption c-base radius-5" :style="{background:primaryColor}">立即充值
<view @click="toPay" class="item-btn flex-center f-caption c-base radius-5" :style="{background:primaryColor}">立即充值
</view>
</view>
<view class="list-item fill-base mt-md ml-lg mr-lg radius-16">
<view class="pd-lg b-1px-b">
@ -83,7 +90,8 @@
data: []
},
loading: true,
lockTap: false
lockTap: false,
activeIndex:0
}
},
computed: mapState({
@ -150,8 +158,12 @@
this.loading = false
this.$util.hideAll()
},
chongzhiHandle(index){
this.activeIndex = index
},
//
async toPay(index) {
async toPay() {
let index = this.activeIndex
let {
id: card_id,
true_price
@ -211,14 +223,64 @@
}
.list-item {
.jineContent{
background: #FFFFFF;
box-shadow: 0rpx 4rpx 10rpx 0rpx rgba(16,132,86,0.06);
border-radius: 20rpx;
margin:20rpx 30rpx;
padding:30rpx;
.titleText{
font-size: 30rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #09090B;
}
.item-btn {
width: 130rpx;
height: 54rpx;
height: 100rpx;
line-height: 100rpx;
background: #08BF77;
border-radius: 50px;
font-size: 30rpx;
font-family: PingFang SC;
font-weight: 500;
color: #FFFFFF;
margin-top:50rpx;
}
}
.moneyContent{
display:flex;
justify-content: space-between;
.list-item {
border: 1px solid #08BF77;
// flex:1;
width:48%;
text-align: center;
.priceNum{
font-size: 50rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #08BF77;
}
.name{
font-size: 28rpx;
font-family: Alibaba PuHuiTi;
font-weight: 400;
color: #08BF77;
}
}
}
.activeStyle{
background-color: #08BF77 !important;
.priceNum{
color: #fff !important;
}
.name{
color: #fff !important;
}
}
.item{
display:flex;

Loading…
Cancel
Save