master
yujialong 2 years ago
parent 8e1f5fa658
commit a346cc0db3
  1. 4
      apis/modules/user.js
  2. 2
      apis/request.js
  3. 8
      components/empty/empty.vue
  4. 6
      order/addCourse/addCourse.vue
  5. 5
      order/editCourse/editCourse.vue
  6. 11
      order/orderDetail/orderDetail.vue
  7. 2
      order/ordered/ordered.vue
  8. 2
      order/orders/orders.vue
  9. 9
      pages.json
  10. 2
      pages/addStaff/addStaff.vue
  11. 18
      pages/clientDetail/clientDetail.vue
  12. 4
      pages/clients/clients.vue
  13. 9
      pages/phone/phone.vue
  14. 6
      pages/qrcode/qrcode.vue
  15. 1
      pages/teams/teams.vue
  16. 8
      styles/common.scss

@ -45,4 +45,8 @@ export const checkIfAnAccountExists = account => {
return post(`users/applets/mine/checkIfAnAccountExists?account=${account}`) return post(`users/applets/mine/checkIfAnAccountExists?account=${account}`)
} }
export const checkIfThePhoneNumberExists = phone => {
return post(`users/applets/mine/checkIfThePhoneNumberExists?phone=${phone}`)
}
export const updateUserAvatars = `http://39.108.250.202:9000/users/users/userAccount/updateUserAvatars` export const updateUserAvatars = `http://39.108.250.202:9000/users/users/userAccount/updateUserAvatars`

@ -19,7 +19,7 @@ const request = options => {
const { url } = options const { url } = options
uni.request({ uni.request({
header, header,
url: (otherUrl.find(e => url.includes(e)) ? 'http://192.168.31.137:9000/' : config.baseURL) + url, url: (otherUrl.find(e => url.includes(e)) ? 'http://192.168.31.151:9000/' : config.baseURL) + url,
method: options.method || 'GET', // 请求类型,默认为GET method: options.method || 'GET', // 请求类型,默认为GET
data: options.data || {}, // 请求参数,默认空对象 data: options.data || {}, // 请求参数,默认空对象
success: ({ data }) => { success: ({ data }) => {

@ -1,12 +1,18 @@
<template> <template>
<view class="none"> <view class="none">
<image src="../../static/image/none.png" mode="widthFix"></image> <image src="../../static/image/none.png" mode="widthFix"></image>
<view class="text">暂无数据</view> <view class="text">{{ text }}</view>
</view> </view>
</template> </template>
<script> <script>
export default { export default {
props: {
text: {
type: String,
default: '暂无数据'
},
},
data() { data() {
return { return {

@ -155,6 +155,7 @@
}, },
// //
createParam(e) { createParam(e) {
const { orderType } = this
return { return {
dataOrCourseId: e.id, // id dataOrCourseId: e.id, // id
productName: e.productName, // productName: e.productName, //
@ -164,7 +165,7 @@
remainingPeriod: '', // remainingPeriod: '', //
marketValue: '', // marketValue: '', //
marketPrice: e.marketPrice, // marketPrice: e.marketPrice, //
finalPrice: this.orderType === 2 ? 0 : '', // finalPrice: orderType == 2 ? 0 : '', //
discountRate: '', // discountRate: '', //
accountNum: e.productType === 2 ? '' : 1, // accountNum: e.productType === 2 ? '' : 1, //
totalAmount: '', // totalAmount: '', //
@ -174,7 +175,7 @@
productType: e.productType, // (0-> 1- 2 ) productType: e.productType, // (0-> 1- 2 )
options: 1, options: 1,
miniProgramPictureAddress: e.miniProgramPictureAddress, // miniProgramPictureAddress: e.miniProgramPictureAddress, //
settlementPrice: '', // settlementPrice: orderType == 2 ? 0 : '', //
settlementMethod: e.settlementMethod, // 01 settlementMethod: e.settlementMethod, // 01
settlementPriceUnit: e.settlementPrice, // settlementPriceUnit: e.settlementPrice, //
businessProportion: e.businessProportion, // businessProportion: e.businessProportion, //
@ -273,6 +274,7 @@
} }
} }
.btn-wrap { .btn-wrap {
position: fixed;
justify-content: space-between; justify-content: space-between;
.btn { .btn {
width: 340rpx; width: 340rpx;

@ -309,8 +309,9 @@
<style scoped lang="scss"> <style scoped lang="scss">
.page { .page {
height: calc(100vh - 140rpx - env(safe-area-inset-bottom)); padding-bottom: 130rpx;
overflow: auto; // height: calc(100vh - 140rpx - env(safe-area-inset-bottom));
// overflow: auto;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
} }
.block { .block {

@ -400,12 +400,10 @@
<style scoped lang="scss"> <style scoped lang="scss">
.page { .page {
height: calc(100vh - 300rpx - env(safe-area-inset-bottom)); padding-bottom: 400rpx;
overflow: auto;
-webkit-overflow-scrolling: touch;
} }
.show { .show {
height: calc(100vh - 130rpx - env(safe-area-inset-bottom)); padding-bottom: 260rpx;
} }
.pro-wrap { .pro-wrap {
position: relative; position: relative;
@ -471,8 +469,11 @@
} }
.bottom { .bottom {
position: fixed; position: fixed;
bottom: env(safe-area-inset-bottom); bottom: 0;
padding-bottom: env(safe-area-inset-bottom);
width: 100%; width: 100%;
background-color: #fff;
box-sizing: border-box;
} }
/deep/.add-btn { /deep/.add-btn {
display: flex; display: flex;

@ -2,7 +2,7 @@
<view> <view>
<view class="filter"> <view class="filter">
<uni-search-bar class="search" radius="30" placeholder="请输入产品名称" v-model="keyword" clearButton="auto" cancelButton="none" /> <uni-search-bar class="search" radius="30" placeholder="请输入产品名称" v-model="keyword" clearButton="auto" cancelButton="none" />
<uni-icons class="icon" custom-prefix="iconfont" type="icon-filter" size="18" color="#007eff" @click="popup = true"></uni-icons> <uni-icons class="icon" custom-prefix="iconfont" type="icon-filter" size="22" color="#007eff" @click="popup = true"></uni-icons>
</view> </view>
<ul class="tab"> <ul class="tab">

@ -3,7 +3,7 @@
<view class="filter"> <view class="filter">
<uni-search-bar class="search" radius="30" placeholder="请输入姓名、订单号" v-model="keyword" clearButton="auto" cancelButton="none" /> <uni-search-bar class="search" radius="30" placeholder="请输入姓名、订单号" v-model="keyword" clearButton="auto" cancelButton="none" />
<view :class="['sort', sort]" @click="switchSort"></view> <view :class="['sort', sort]" @click="switchSort"></view>
<uni-icons class="icon" custom-prefix="iconfont" type="icon-filter" size="18" color="#007eff" @click="popup = true"></uni-icons> <uni-icons class="icon" custom-prefix="iconfont" type="icon-filter" size="22" color="#007eff" @click="popup = true"></uni-icons>
</view> </view>
<ul class="tab"> <ul class="tab">
<li v-for="(tab, i) in tabs" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.name }}</li> <li v-for="(tab, i) in tabs" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.name }}</li>

@ -52,7 +52,7 @@
"path" : "pages/addStaff/addStaff", "path" : "pages/addStaff/addStaff",
"style" : "style" :
{ {
"navigationBarTitleText": "添加成员", "navigationBarTitleText": "邀请成员",
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
}, },
@ -189,7 +189,7 @@
}, },
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "white", "navigationBarTextStyle": "white",
"navigationBarTitleText": "或然CRM系统", "navigationBarTitleText": "或然合伙人运营管理平台",
"navigationBarBackgroundColor": "#007EFF", "navigationBarBackgroundColor": "#007EFF",
"backgroundColor": "#f5f5f5", "backgroundColor": "#f5f5f5",
"app-plus": { "app-plus": {
@ -201,6 +201,8 @@
"selectedColor": "#007FFF", "selectedColor": "#007FFF",
"borderStyle": "white", "borderStyle": "white",
"backgroundColor": "#ffffff", "backgroundColor": "#ffffff",
"fontSize": "16px",
"iconWidth": "30px",
"list": [{ "list": [{
"pagePath": "pages/index/index", "pagePath": "pages/index/index",
"iconPath": "static/image/tab1.png", "iconPath": "static/image/tab1.png",
@ -210,8 +212,7 @@
"pagePath": "pages/teams/teams", "pagePath": "pages/teams/teams",
"iconPath": "static/image/tab2.png", "iconPath": "static/image/tab2.png",
"selectedIconPath": "static/image/tab2-1.png", "selectedIconPath": "static/image/tab2-1.png",
"text": "团队", "text": "团队"
"visible": false
}, { }, {
"pagePath": "pages/person/person", "pagePath": "pages/person/person",
"iconPath": "static/image/tab3.png", "iconPath": "static/image/tab3.png",

@ -1,6 +1,6 @@
<template> <template>
<view> <view>
<uni-section title="邀请员" type="line"> <uni-section title="邀请员" type="line">
<uni-list> <uni-list>
<uni-list-item thumb-size="sm" showArrow title="二维码邀请" clickable :to="`../qrcode/qrcode`"> <uni-list-item thumb-size="sm" showArrow title="二维码邀请" clickable :to="`../qrcode/qrcode`">
<template v-slot:header> <template v-slot:header>

@ -59,11 +59,11 @@
<view v-if="isDetail" class="val">{{ form.email }}</view> <view v-if="isDetail" class="val">{{ form.email }}</view>
<input v-else type="text" placeholder="请输入" v-model="form.email"> <input v-else type="text" placeholder="请输入" v-model="form.email">
</view> </view>
<view class="line"> <view v-if="customerId" class="line">
<view class="name">产品到期时间</view> <view class="name">产品到期时间</view>
<view class="val">{{ form.expireDate }}</view> <view class="val">{{ form.expireDate }}</view>
</view> </view>
<view class="line"> <view v-if="customerId" class="line">
<view class="name">客户类型</view> <view class="name">客户类型</view>
<view class="val">{{ customerType }}</view> <view class="val">{{ customerType }}</view>
</view> </view>
@ -215,8 +215,8 @@
// //
schoolChange(school) { schoolChange(school) {
const { form } = this const { form } = this
const { schoolId } = form const { schoolId } = school
form.schoolId = school.schoolId form.schoolId = schoolId
form.customerName = school.schoolName form.customerName = school.schoolName
form.provinceId = school.provinceId form.provinceId = school.provinceId
form.provinceName = school.provinceName form.provinceName = school.provinceName
@ -269,7 +269,7 @@
}).catch(res => {}) }).catch(res => {})
} else { } else {
addCustomer(form).then(res => { addCustomer(form).then(res => {
this.$util.sucMsg('添加成功') this.$util.sucMsg('创建客户成功!你现在可以去订单给客户下单了。')
setTimeout(() => { setTimeout(() => {
uni.navigateBack() uni.navigateBack()
}, 1500) }, 1500)
@ -282,8 +282,9 @@
<style scoped lang="scss"> <style scoped lang="scss">
.page { .page {
height: calc(100vh - 120rpx - env(safe-area-inset-bottom)); padding-bottom: 170rpx;
overflow: auto; // height: calc(100vh - 120rpx - env(safe-area-inset-bottom));
// overflow: auto;
-webkit-overflow-scrolling: touch; -webkit-overflow-scrolling: touch;
} }
.info { .info {
@ -296,11 +297,12 @@
.action { .action {
z-index: 2; z-index: 2;
position: fixed; position: fixed;
bottom: env(safe-area-inset-bottom); bottom: 0;
display: flex; display: flex;
justify-content: space-around; justify-content: space-around;
width: 100%; width: 100%;
padding: 5px 10px; padding: 5px 10px;
padding-bottom: env(safe-area-inset-bottom);
background-color: #fff; background-color: #fff;
border-top: 1px solid #f3f3f3; border-top: 1px solid #f3f3f3;
box-sizing: border-box; box-sizing: border-box;

@ -2,7 +2,7 @@
<view class="page"> <view class="page">
<view class="filter"> <view class="filter">
<uni-search-bar class="search" radius="30" placeholder="请输入客户名称" v-model="keyword" clearButton="auto" cancelButton="none" /> <uni-search-bar class="search" radius="30" placeholder="请输入客户名称" v-model="keyword" clearButton="auto" cancelButton="none" />
<uni-icons class="icon" custom-prefix="iconfont" type="icon-filter" size="18" color="#007eff" @click="popup = true"></uni-icons> <uni-icons class="icon" custom-prefix="iconfont" type="icon-filter" size="22" color="#007eff" @click="popup = true"></uni-icons>
</view> </view>
<ul class="tab"> <ul class="tab">
<li v-for="(tab, i) in tabs" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.name }}</li> <li v-for="(tab, i) in tabs" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.name }}</li>
@ -39,7 +39,7 @@
</ul> </ul>
<uni-load-more :status="status" /> <uni-load-more :status="status" />
</template> </template>
<empty v-else></empty> <empty v-else text="您当前暂无有下单的客户,请快去给客户下订单吧"></empty>
<uni-icons class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../clientDetail/clientDetail')"></uni-icons> <uni-icons class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../clientDetail/clientDetail')"></uni-icons>
<filter-popup :data="filterData" :form.sync="filterForm" v-model="popup" title="全部筛选" height="1104rpx" @finsh="subFinsh"></filter-popup> <filter-popup :data="filterData" :form.sync="filterForm" v-model="popup" title="全部筛选" height="1104rpx" @finsh="subFinsh"></filter-popup>

@ -1,10 +1,10 @@
<template> <template>
<view class="page"> <view class="page">
<view class="input"> <view class="input">
<uni-easyinput v-model="form.phone" placeholder="请填写你的手机号" :clearable="false" /> <uni-easyinput v-model="form.phone" placeholder="请填写你的手机号" maxlength="11" :clearable="false" />
</view> </view>
<view class="input code-wrap"> <view class="input code-wrap">
<uni-easyinput class="code" v-model="form.code" placeholder="验证码" :clearable="false" /> <uni-easyinput class="code" v-model="form.code" placeholder="验证码" maxlength="6" :clearable="false" />
<view class="send-code" @click="sendCode" :disabled="codeDisabled">{{ btnText }}</view> <view class="send-code" @click="sendCode" :disabled="codeDisabled">{{ btnText }}</view>
</view> </view>
<button type="primary" @click="submit">确认</button> <button type="primary" @click="submit">确认</button>
@ -12,7 +12,7 @@
</template> </template>
<script> <script>
import { sendPhoneOrEmailCode, changePhoneNumber } from '@/apis/modules/user.js' import { sendPhoneOrEmailCode, changePhoneNumber, checkIfThePhoneNumberExists } from '@/apis/modules/user.js'
export default { export default {
data() { data() {
return { return {
@ -36,6 +36,8 @@
const { phone } = this.form const { phone } = this.form
if (!phone) return this.$util.errMsg('请输入手机号') if (!phone) return this.$util.errMsg('请输入手机号')
if (!/^1[3456789]\d{9}$/.test(phone) && !/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(phone)) return this.$util.errMsg('请输入正确的手机号') if (!/^1[3456789]\d{9}$/.test(phone) && !/^([a-zA-Z]|[0-9])(\w|\-)+@[a-zA-Z0-9]+\.([a-zA-Z]{2,4})$/.test(phone)) return this.$util.errMsg('请输入正确的手机号')
//
checkIfThePhoneNumberExists(phone).then(() => {
sendPhoneOrEmailCode({ sendPhoneOrEmailCode({
userId: this.userId, userId: this.userId,
phone, phone,
@ -48,6 +50,7 @@
this.$util.errMsg(message) this.$util.errMsg(message)
} }
}).catch(res => {}) }).catch(res => {})
}).catch(res => {})
}, },
// //
phoneCountdown() { phoneCountdown() {

@ -6,7 +6,7 @@
<image class="avatar" :src="avatar" mode=""></image> <image class="avatar" :src="avatar" mode=""></image>
<view class="text"> <view class="text">
<view class="invite"> <view class="invite">
<text class="name">{{ userName }}</text> 邀请你加入 <text class="name">{{ userName }}</text> 邀请你加入城市合伙人计划
</view> </view>
<view class="com">{{ team.partnerClassificationName }}</view> <view class="com">{{ team.partnerClassificationName }}</view>
</view> </view>
@ -66,6 +66,10 @@
text-align: center; text-align: center;
background-color: #fff; background-color: #fff;
.inner { .inner {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
padding: 40rpx 80rpx 0; padding: 40rpx 80rpx 0;
} }
.info { .info {

@ -84,6 +84,7 @@
// //
getList() { getList() {
teamList({ teamList({
type: 1,
pageNum: this.page, pageNum: this.page,
pageSize: this.pageSize, pageSize: this.pageSize,
keyWord: this.keyword, keyWord: this.keyword,

@ -49,13 +49,13 @@ ul {
content: ''; content: '';
display: block; display: block;
margin-bottom: 5rpx; margin-bottom: 5rpx;
border: 11rpx solid transparent; border: 15rpx solid transparent;
border-bottom-color: #B9B9B9; border-bottom-color: #B9B9B9;
} }
&:after { &:after {
content: ''; content: '';
display: block; display: block;
border: 11rpx solid transparent; border: 15rpx solid transparent;
border-top-color: #B9B9B9; border-top-color: #B9B9B9;
} }
&.desc:before { &.desc:before {
@ -175,9 +175,9 @@ ul {
} }
} }
.btn-wrap { .btn-wrap {
z-index: 2; z-index: 10;
position: fixed; position: fixed;
// bottom: env(safe-area-inset-bottom); bottom: env(safe-area-inset-bottom);
bottom: 0; bottom: 0;
display: flex; display: flex;
justify-content: flex-end; justify-content: flex-end;

Loading…
Cancel
Save