Browse Source

xiuggaibug

master
王泽彦 10 months ago
parent
commit
d6b2a82455
  1. 1
      App.vue
  2. 18
      pages.json
  3. 255
      pages/market/clue/add_clues.vue
  4. 196
      pages/market/clue/class_arrangement.vue
  5. 148
      pages/market/clue/class_arrangement_detail.vue
  6. 83
      pages/market/clue/clue_info.vue
  7. 961
      pages/market/clue/edit_clues.vue
  8. 502
      pages/market/clue/index.vue
  9. 22
      pages/market/index/index.vue
  10. 5
      pages/student/login/login.vue
  11. 9
      uni.scss
  12. 8
      uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue

1
App.vue

@ -43,4 +43,5 @@
<style lang="scss"> <style lang="scss">
@import '~@/static/styles/app.scss'; @import '~@/static/styles/app.scss';
@import "@/uni.scss";
</style> </style>

18
pages.json

@ -573,6 +573,24 @@
"navigationBarBackgroundColor": "#fff", "navigationBarBackgroundColor": "#fff",
"navigationBarTextStyle": "black" "navigationBarTextStyle": "black"
} }
},
{
"path": "pages/market/clue/class_arrangement",
"style": {
"navigationBarTitleText": "课程安排",
"navigationStyle": "default",
"navigationBarBackgroundColor": "#232323",
"navigationBarTextStyle": "white"
}
},
{
"path": "pages/market/clue/class_arrangement_detail",
"style": {
"navigationBarTitleText": "课程安排详情",
"navigationStyle": "default",
"navigationBarBackgroundColor": "#232323",
"navigationBarTextStyle": "white"
}
} }

255
pages/market/clue/add_clues.vue

@ -26,11 +26,52 @@
<view class="title" style="margin-top: 20rpx;">基础信息</view> <view class="title" style="margin-top: 20rpx;">基础信息</view>
<view class="input-style"> <view class="input-style">
<!--姓名-->
<fui-form-item
label="姓名"
labelSize='26'
asterisk asteriskPosition="right"
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<fui-input
:borderBottom="false"
:padding="[0]"
placeholder="点击填写"
v-model="formData.name"
backgroundColor="#434544"
size="26"
color="#fff"
></fui-input>
</view>
</fui-form-item>
<!--联系电话-->
<fui-form-item
label="联系电话"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<fui-input
:borderBottom="false"
:padding="[0]"
placeholder="点击填写"
v-model="formData.phone_number"
backgroundColor="#434544"
size="26"
color="#fff"
@blur="handlePhoneBlur"
></fui-input>
</view>
</fui-form-item>
<!--来源--> <!--来源-->
<fui-form-item <fui-form-item
label="来源" label="来源"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="" prop=""
background='#434544' background='#434544'
@ -50,7 +91,6 @@
<fui-form-item <fui-form-item
v-if="formData.source == 1" v-if="formData.source == 1"
label="来源渠道" label="来源渠道"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="" prop=""
background='#434544' background='#434544'
@ -71,7 +111,7 @@
<!-- <!--
<fui-form-item <fui-form-item
label="顾问" label="顾问"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="" prop=""
background='#434544' background='#434544'
@ -91,7 +131,6 @@
<fui-form-item <fui-form-item
v-show="false" v-show="false"
label="顾问" label="顾问"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="title" prop="title"
background='#434544' background='#434544'
@ -110,33 +149,11 @@
></fui-input> ></fui-input>
</view> </view>
</fui-form-item> </fui-form-item>
<!--姓名-->
<fui-form-item
label="姓名"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<fui-input
:borderBottom="false"
:padding="[0]"
placeholder="点击填写"
v-model="formData.name"
backgroundColor="#434544"
size="26"
color="#fff"
></fui-input>
</view>
</fui-form-item>
<!--年龄--> <!--年龄-->
<fui-form-item <fui-form-item
label="年龄" label="年龄"
labelSize='26' labelSize='26'
asterisk
asteriskPosition="right"
prop="age" prop="age"
background='#434544' background='#434544'
labelColor='#fff' labelColor='#fff'
@ -149,7 +166,6 @@
<fui-form-item <fui-form-item
label="性别" label="性别"
labelSize='26' labelSize='26'
asterisk asteriskPosition="right"
prop="age" prop="age"
background='#434544' background='#434544'
labelColor='#fff' labelColor='#fff'
@ -173,32 +189,11 @@
</fui-radio-group> </fui-radio-group>
</view> </view>
</fui-form-item> </fui-form-item>
<!--联系电话-->
<fui-form-item
label="联系电话"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<fui-input
:borderBottom="false"
:padding="[0]"
placeholder="点击填写"
v-model="formData.phone_number"
backgroundColor="#434544"
size="26"
color="#fff"
@blur="handlePhoneBlur"
></fui-input>
</view>
</fui-form-item>
<!--需求--> <!--需求-->
<fui-form-item <fui-form-item
label="需求" label="需求"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="title" prop="title"
background='#434544' background='#434544'
@ -219,7 +214,7 @@
<!--决策人--> <!--决策人-->
<fui-form-item <fui-form-item
label="决策人" label="决策人"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="title" prop="title"
background='#434544' background='#434544'
@ -237,7 +232,7 @@
<!--客户初步意向度--> <!--客户初步意向度-->
<fui-form-item <fui-form-item
label="客户初步意向度" label="客户初步意向度"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="" prop=""
background='#434544' background='#434544'
@ -257,7 +252,7 @@
<fui-form-item <fui-form-item
v-show="false" v-show="false"
label="客户状态" label="客户状态"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="" prop=""
background='#434544' background='#434544'
@ -292,7 +287,6 @@
<!--购买力--> <!--购买力-->
<fui-form-item <fui-form-item
label="购买力" label="购买力"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="" prop=""
background='#434544' background='#434544'
@ -311,7 +305,6 @@
<!--认知理念--> <!--认知理念-->
<fui-form-item <fui-form-item
label="认知理念" label="认知理念"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="" prop=""
background='#434544' background='#434544'
@ -330,7 +323,6 @@
<!--可选上课时间--> <!--可选上课时间-->
<fui-form-item <fui-form-item
label="可选上课时间" label="可选上课时间"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="" prop=""
background='#434544' background='#434544'
@ -349,7 +341,6 @@
<!--承诺到访时间--> <!--承诺到访时间-->
<fui-form-item <fui-form-item
label="承诺到访时间" label="承诺到访时间"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="" prop=""
background='#434544' background='#434544'
@ -368,7 +359,6 @@
<!--距离--> <!--距离-->
<fui-form-item <fui-form-item
label="距离" label="距离"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="title" prop="title"
background='#434544' background='#434544'
@ -387,7 +377,6 @@
<!--沟通备注--> <!--沟通备注-->
<fui-form-item <fui-form-item
label="沟通备注" label="沟通备注"
asterisk asteriskPosition="right"
labelSize='26' labelSize='26'
prop="title" prop="title"
background='#434544' background='#434544'
@ -904,18 +893,6 @@ export default {
}) })
}) })
if(inputName == 'source_channel'){
//arr
arr.unshift({
text: '线下',
value: '0',
})
}
if(inputName == 'status'){
//arr
console.log(arr)
}
this.picker_config[inputName].options = arr this.picker_config[inputName].options = arr
}, },
@ -1205,26 +1182,6 @@ export default {
}, },
// //
async validatorForm(data) { async validatorForm(data) {
//
//
if(!data.source_channel.length){
uni.showToast({
title: '请选择来源渠道',
icon: 'none'
})
this.nextStep('0')
return false
}
//
if(!data.source){
uni.showToast({
title: '请选择来源',
icon: 'none'
})
this.nextStep('0')
return false
}
// //
if(!data.name){ if(!data.name){
uni.showToast({ uni.showToast({
@ -1234,24 +1191,6 @@ export default {
this.nextStep('0') this.nextStep('0')
return false return false
} }
//
if(!data.age){
uni.showToast({
title: '年龄必填',
icon: 'none'
})
this.nextStep('0')
return false
}
//
if(!data.gender){
uni.showToast({
title: '性别必填',
icon: 'none'
})
this.nextStep('0')
return false
}
// //
if(!data.phone_number){ if(!data.phone_number){
uni.showToast({ uni.showToast({
@ -1261,100 +1200,6 @@ export default {
this.nextStep('0') this.nextStep('0')
return false return false
} }
//
if(!data.demand){
uni.showToast({
title: '需求必填',
icon: 'none'
})
this.nextStep('0')
return false
}
//
if(!data.decision_maker){
uni.showToast({
title: '决策人必填',
icon: 'none'
})
this.nextStep('0')
return false
}
//
if(!data.initial_intent){
uni.showToast({
title: '客户初步意向度必填',
icon: 'none'
})
this.nextStep('0')
return false
}
//
if(!data.status){
uni.showToast({
title: '客户状态必填',
icon: 'none'
})
this.nextStep('0')
return false
}
//##### #####
//
if(!data.purchasing_power){
uni.showToast({
title: '购买力必填',
icon: 'none'
})
this.nextStep('1')
return false
}
//
if(!data.cognitive_idea){
uni.showToast({
title: '认知理念必填',
icon: 'none'
})
this.nextStep('1')
return false
}
//
if(!data.communication){
uni.showToast({
title: '沟通备注必填',
icon: 'none'
})
this.nextStep('1')
return false
}
//访
if(!data.promised_visit_time){
uni.showToast({
title: '承诺到访时间必填',
icon: 'none'
})
this.nextStep('1')
return false
}
//
if(!data.distance){
uni.showToast({
title: '距离必填',
icon: 'none'
})
this.nextStep('1')
return false
}
//
if(!data.optional_class_time){
uni.showToast({
title: '可选上课时间必填',
icon: 'none'
})
this.nextStep('1')
return false
}
return true return true
}, },
// //

196
pages/market/clue/class_arrangement.vue

@ -0,0 +1,196 @@
<template>
<view class="class-arrange-root">
<!-- 顶部日期选择 -->
<view class="date-bar">
<view class="date-item" v-for="(item, idx) in weekList" :key="idx" :class="{active: idx === selectedDayIndex}">
<view class="week">{{ item.week }}</view>
<view class="day">{{ item.day }}</view>
</view>
</view>
<!-- "查看更多"按钮移到日期条下方 -->
<view class="more-bar-wrapper">
<view class="more-bar" @click="openCalendar">
<text>查看更多</text>
<uni-icons type="arrowdown" size="18" color="#bdbdbd" />
</view>
</view>
<!-- 日历底部弹窗 -->
<uni-popup ref="calendarPopup" type="bottom">
<uni-calendar @confirm="onCalendarConfirm" @close="closeCalendar" />
</uni-popup>
<!-- 课程卡片列表 -->
<view class="course-list">
<view class="course-card" v-for="(course, idx) in courseList" :key="idx">
<view class="card-header">
<view class="status-end">已结束</view>
</view>
<view class="card-body">
<view class="row">时间{{ course.date }}</view>
<view class="row">教室{{ course.classroom }}</view>
<view class="row">课程{{ course.name }}</view>
<view class="row">人数{{ course.count }}</view>
</view>
<view class="card-footer">
<view class="sign-info">已签到学生 (0/{{ course.count }})</view>
<button class="detail-btn" @click="viewDetail(course)">详情</button>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
weekList: [
{ week: '星期一', day: 11 },
{ week: '星期二', day: 12 },
{ week: '星期三', day: 13 },
{ week: '星期四', day: 14 },
{ week: '星期五', day: 15 },
{ week: '星期六', day: 16 },
{ week: '星期日', day: 17 },
],
selectedDayIndex: 4,
courseList: [
{
date: '2025-06-15',
classroom: '时间范围教室',
name: '大课7+1类型',
count: 10,
},
{
date: '2025-06-15',
classroom: '时间范围教室',
name: '大课5+1',
count: 10,
},
],
};
},
methods: {
openCalendar() {
this.$refs.calendarPopup.open();
},
closeCalendar() {
this.$refs.calendarPopup.close();
},
viewDetail(course) {
//
this.$navigateTo({
url: '/pages/market/clue/class_arrangement_detail?date=' + course.date
});
},
onCalendarConfirm(e) {
this.closeCalendar();
// e.fulldate
uni.showToast({ title: '选择日期:' + e.fulldate, icon: 'none' });
},
},
};
</script>
<style lang="less" scoped>
.class-arrange-root {
background: #232323;
min-height: 100vh;
padding-bottom: 30rpx;
}
.date-bar {
display: flex;
align-items: center;
background: #232323;
padding: 0 0 10rpx 0;
overflow-x: auto;
border-bottom: 1px solid #333;
.date-item {
flex: 1;
text-align: center;
color: #bdbdbd;
padding: 16rpx 0 0 0;
.week {
font-size: 22rpx;
}
.day {
font-size: 28rpx;
margin-top: 4rpx;
}
&.active {
color: #29d3b4;
.day {
border-radius: 50%;
background: #333;
color: #29d3b4;
padding: 2rpx 10rpx;
}
}
}
}
.more-bar-wrapper {
width: 100%;
display: flex;
justify-content: center;
margin: 10rpx 0 0 0;
}
.more-bar {
display: flex;
align-items: center;
color: #bdbdbd;
font-size: 22rpx;
cursor: pointer;
background: #333;
border-radius: 20rpx;
padding: 8rpx 24rpx;
}
.course-list {
margin-top: 20rpx;
.course-card {
background: #434544;
border-radius: 10rpx;
margin: 0 0 20rpx 0;
padding: 0 0 20rpx 0;
box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.08);
.card-header {
display: flex;
justify-content: flex-end;
padding: 10rpx 20rpx 0 0;
.status-end {
background: #e95c6b;
color: #fff;
border-radius: 10rpx;
padding: 4rpx 18rpx;
font-size: 22rpx;
}
}
.card-body {
padding: 0 20rpx;
.row {
color: #fff;
font-size: 24rpx;
margin: 8rpx 0;
}
}
.card-footer {
display: flex;
justify-content: space-between;
align-items: center;
padding: 0 20rpx;
.sign-info {
color: #bdbdbd;
font-size: 22rpx;
}
.detail-btn {
background: transparent;
border: 2rpx solid #ffd86b;
color: #ffd86b;
border-radius: 8rpx;
padding: 6rpx 24rpx;
font-size: 24rpx;
margin-left: 10rpx;
}
}
}
}
</style>

148
pages/market/clue/class_arrangement_detail.vue

@ -0,0 +1,148 @@
<template>
<view class="detail-root">
<view class="header">
<view class="title">课程安排详情</view>
<view class="date">日期{{ date }}</view>
</view>
<view class="section">
<view class="section-title">学员列表</view>
<view class="student-list">
<view v-for="(stu, idx) in students" :key="idx" class="student-item">
<view class="avatar">{{ stu.name.charAt(0) }}</view>
<view class="info">
<view class="name">{{ stu.name }}</view>
<view class="desc">{{ stu.desc }}</view>
</view>
</view>
<view
v-for="n in emptyArray"
:key="n"
class="student-item empty"
@tap="addStudent"
:data-index="n"
>
<view class="avatar empty-avatar">+</view>
<view class="info">
<view class="name">空位</view>
<view class="desc">点击添加学员</view>
</view>
</view>
</view>
</view>
</view>
</template>
<script>
export default {
data() {
return {
date: '',
students: [
{ name: '张三', desc: '已签到' },
{ name: '李四', desc: '未签到' },
],
maxCount: 5,
};
},
computed: {
emptyCount() {
return this.maxCount - this.students.length;
},
emptyArray() {
return Array.from({length: this.emptyCount}, (v, i) => i + 1);
},
},
onLoad(query) {
this.date = query.date || '';
},
methods: {
addStudent(e) {
const n = e.currentTarget.dataset.index;
uni.showToast({ title: '添加学员功能待实现,空位号:' + n, icon: 'none' });
},
},
};
</script>
<style lang="less" scoped>
.detail-root {
background: #232323;
min-height: 100vh;
padding-bottom: 30rpx;
}
.header {
padding: 40rpx 30rpx 20rpx 30rpx;
.title {
color: #fff;
font-size: 36rpx;
font-weight: bold;
}
.date {
color: #29d3b4;
font-size: 26rpx;
margin-top: 10rpx;
}
}
.section {
margin: 30rpx;
background: #434544;
border-radius: 16rpx;
padding: 30rpx 20rpx;
}
.section-title {
color: #ffd86b;
font-size: 28rpx;
margin-bottom: 20rpx;
}
.student-list {
display: flex;
flex-wrap: wrap;
gap: 20rpx;
}
.student-item {
background: #333;
border-radius: 12rpx;
display: flex;
align-items: center;
padding: 18rpx 24rpx;
min-width: 260rpx;
.avatar {
width: 60rpx;
height: 60rpx;
border-radius: 50%;
background: #29d3b4;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
font-size: 32rpx;
margin-right: 18rpx;
}
.info {
.name {
color: #fff;
font-size: 28rpx;
}
.desc {
color: #bdbdbd;
font-size: 22rpx;
margin-top: 4rpx;
}
}
&.empty {
border: 2rpx dashed #ffd86b;
background: #232323;
.avatar.empty-avatar {
background: #ffd86b;
color: #232323;
font-size: 36rpx;
}
.info .name {
color: #ffd86b;
}
.info .desc {
color: #ffd86b;
}
}
}
</style>

83
pages/market/clue/clue_info.vue

@ -28,15 +28,19 @@
class="drop-image-x"> class="drop-image-x">
</image> </image>
</view> </view>
<view class="title-x">意向{{ clientInfo.customerResource.initial_intent_name }}</view>
</view> </view>
</view> </view>
<view class="course_box_top_below-right"> <view class="course_box_top_below-right">
<!-- <view v-if="clientInfo.customerResource.is_zdgz == 1">--> <!-- 操作按钮 -->
<!-- <image :src="$util.img('/uniapp_src/static/images/index/star.png')" class="drop-image-star"></image>--> <view class="action-buttons">
<!-- </view>--> <view class="btn-item" @click="handleMakeCall">
<!-- <view class="title-x">重点关注</view>--> <image class="btn-icon" :src="$util.img('/uniapp_src/static/images/index/phone.png')"></image>
</view>
<view class="btn-item" @click="handleSendMessage">
<image class="btn-icon" :src="$util.img('/uniapp_src/static/images/index/message.png')"></image>
</view>
</view>
</view> </view>
</view> </view>
</view> </view>
@ -166,7 +170,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view> <view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</view> <view>课程课程名称1</view>
</view> </view>
<view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view> <view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view>
</view> </view>
</view> </view>
<view style="margin: 16rpx;"> <view style="margin: 16rpx;">
@ -187,7 +191,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view> <view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</view> <view>课程课程名称1</view>
</view> </view>
<view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view> <view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view>
</view> </view>
</view> </view>
<view style="margin: 16rpx;"> <view style="margin: 16rpx;">
@ -208,7 +212,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view> <view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</view> <view>课程课程名称1</view>
</view> </view>
<view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view> <view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view>
</view> </view>
</view> </view>
<view style="margin: 16rpx;"> <view style="margin: 16rpx;">
@ -229,7 +233,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view> <view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</view> <view>课程课程名称1</view>
</view> </view>
<view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view> <view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view>
</view> </view>
</view> </view>
<view style="margin: 16rpx;"> <view style="margin: 16rpx;">
@ -250,7 +254,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view> <view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</view> <view>课程课程名称1</view>
</view> </view>
<view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view> <view style="padding: 16rpx 16rpx 16rpx 60rpx;">2020-08-30 签单</view>
</view> </view>
</view> </view>
<view style="height: 200rpx;"></view> <view style="height: 200rpx;"></view>
@ -259,7 +263,7 @@
<!-- 底部按钮组--> <!-- 底部按钮组-->
<view class="bottom-label"> <view class="bottom-label">
<view @click="openViewEditClues()">编辑详情</view> <view @click="openViewEditClues()">编辑详情</view>
<view @click="callTel(clientInfo.student_phone)">拨打电话</view> <view @click="openViewEditClassLog()">课程安排</view>
<view @click="openViewEditCluesLog()">修改记录</view> <view @click="openViewEditCluesLog()">修改记录</view>
<view @click="openViewOrder()">订单列表</view> <view @click="openViewOrder()">订单列表</view>
</view> </view>
@ -407,6 +411,19 @@
}) })
}, },
//-
openViewEditClassLog() {
let resource_id = this.clientInfo.resource_id//id
let resource_name = this.clientInfo.customerResource.name || ''//id
let staff_id = this.userInfo.id//id
let staff_id_name = this.userInfo.name || ''//
this.$navigateTo({
url: `/pages/market/clue/class_arrangement?resource_id=${resource_id}&resource_name=${resource_name}&staff_id=${staff_id}&staff_id_name=${staff_id_name}`
})
},
//- //-
openViewNewTask() { openViewNewTask() {
this.$navigateTo({ this.$navigateTo({
@ -453,7 +470,31 @@
}); });
}, },
//
handleMakeCall() {
if (!this.clientInfo.customerResource.phone_number) {
uni.showToast({
title: '电话号码为空',
icon: 'none'
});
return;
}
this.callTel(this.clientInfo.customerResource.phone_number);
},
//
handleSendMessage() {
if (!this.clientInfo.customerResource.staff_id) {
uni.showToast({
title: '未找到相关人员',
icon: 'none'
});
return;
}
this.$navigateTo({
url: `/pages/common/im_chat_info?hair_staff_id=${this.clientInfo.customerResource.staff_id}`
});
},
// //
switch_tags(type){ switch_tags(type){
@ -677,4 +718,24 @@
padding: 12rpx 8rpx; padding: 12rpx 8rpx;
text-align: center; text-align: center;
} }
.action-buttons {
display: flex;
gap: 20rpx;
align-items: center;
.btn-item {
display: flex;
align-items: center;
justify-content: center;
width: 60rpx;
height: 60rpx;
border-radius: 50%;
background: #f5f5f5;
.btn-icon {
width: 40rpx;
height: 40rpx;
}
}
}
</style> </style>

961
pages/market/clue/edit_clues.vue

File diff suppressed because it is too large

502
pages/market/clue/index.vue

@ -4,14 +4,9 @@
@click="segmented"></fui-segmented-control> @click="segmented"></fui-segmented-control>
<!--我的客户--> <!--我的客户-->
<scroll-view <scroll-view v-if="segmented_type == 1" scroll-y="true" :lower-threshold="lowerThreshold"
v-if="segmented_type == 1" @scrolltolower="loadMoreData_1" style="height: 100vh;">
scroll-y="true" <view class="search_section">
:lower-threshold="lowerThreshold"
@scrolltolower="loadMoreData_1"
style="height: 100vh;"
>
<view class="search_section" >
<view class="item"> <view class="item">
<view class="input_box" @click="openShowDrawer()"> <view class="input_box" @click="openShowDrawer()">
<view class="input_box_text">用户名/手机号/时间范围</view> <view class="input_box_text">用户名/手机号/时间范围</view>
@ -23,60 +18,56 @@
<view style="width: 70%;" @click="clue_info(v)"> <view style="width: 70%;" @click="clue_info(v)">
<view style="display: flex;align-items: center;padding: 20rpx;"> <view style="display: flex;align-items: center;padding: 20rpx;">
<view> <view>
<image :src="$util.img('/uniapp_src/static/images/index/myk.png')" class="card-image"></image> <image :src="$util.img('/uniapp_src/static/images/index/myk.png')" class="card-image">
</image>
</view> </view>
<view class="card-text">{{ v.customerResource.name }}</view> <view class="card-text">{{ v.customerResource.name }}</view>
<!-- <view class="card-label">{{ v.is_status == 1 ? '试听' : '成交' }}</view>--> <!-- <view class="card-label">{{ v.is_status == 1 ? '试听' : '成交' }}</view>-->
</view> </view>
<view class="card-con"> <view class="card-con">
首联系人{{ v.customerResource.name }} <span class="card-con-span">{{ v.customerResource.decision_maker }}</span> 首联系人{{ v.customerResource.name }} <span
class="card-con-span">{{ v.customerResource.decision_maker }}</span>
</view> </view>
<view class="card-date"> <view class="card-date">
<view class="card-con">{{ $util.formatToDateTime((v.customerResource.updated_at || ''), 'm-d H:i') }} <view class="card-con">
{{ $util.formatToDateTime((v.customerResource.updated_at || ''), 'm-d H:i') }}
跟进 跟进
</view> </view>
<view style="margin-left: 30rpx;"> <view style="margin-left: 30rpx;">
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image <image v-if="v.customerResource.initial_intent == 'high'"
v-if="v.customerResource.initial_intent == 'high'"
:src="$util.img('/uniapp_src/static/images/index/intention3.png')" :src="$util.img('/uniapp_src/static/images/index/intention3.png')"
class="drop-image-x" class="drop-image-x"></image>
></image> <image v-else-if="v.customerResource.initial_intent == 'medium'"
<image
v-else-if="v.customerResource.initial_intent == 'medium'"
:src="$util.img('/uniapp_src/static/images/index/intention2.png')" :src="$util.img('/uniapp_src/static/images/index/intention2.png')"
class="drop-image-x" class="drop-image-x"></image>
></image> <image v-else :src="$util.img('/uniapp_src/static/images/index/intention1.png')"
<image class="drop-image-x"></image>
v-else
:src="$util.img('/uniapp_src/static/images/index/intention1.png')"
class="drop-image-x"
></image>
</view> </view>
<view class="title-x">意向{{ v.customerResource && v.customerResource.initial_intent_name || '' }}</view> <view class="title-x">
意向{{ v.customerResource && v.customerResource.initial_intent_name || '' }}</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<!--只有注册了member表的账号才可操作IM对话--> <!--只有注册了member表的账号才可操作IM对话-->
<view style="width: 15%;"> <view style="width: 15%;">
<image v-if="v.customerResource.member_id" :src="$util.img('/uniapp_src/static/images/index/message.png')" class="image" @click="openViewMyMessage(v)"></image> <image v-if="v.customerResource.member_id"
:src="$util.img('/uniapp_src/static/images/index/message.png')" class="image"
@click="openViewMyMessage(v)"></image>
</view> </view>
<view style="width: 15%;"> <view style="width: 15%;">
<image v-if="v.customerResource.phone_number" :src="$util.img('/uniapp_src/static/images/index/phone.png')" class="image" @click="dialTel(v)"></image> <image v-if="v.customerResource.phone_number"
:src="$util.img('/uniapp_src/static/images/index/phone.png')" class="image" @click="dialTel(v)">
</image>
</view> </view>
</view> </view>
</scroll-view> </scroll-view>
<!--资源分配--> <!--资源分配-->
<scroll-view <scroll-view v-if="segmented_type == 2" scroll-y="true" :lower-threshold="lowerThreshold"
v-if="segmented_type == 2" @scrolltolower="loadMoreData_2" style="height: 100vh;">
scroll-y="true"
:lower-threshold="lowerThreshold"
@scrolltolower="loadMoreData_2"
style="height: 100vh;"
>
<view class="search_section"> <view class="search_section">
<view class="item"> <view class="item">
<view class="input_box" @click="openShowDrawer()"> <view class="input_box" @click="openShowDrawer()">
@ -89,42 +80,40 @@
<view style="width: 70%;"> <view style="width: 70%;">
<view style="display: flex;align-items: center;padding: 20rpx;"> <view style="display: flex;align-items: center;padding: 20rpx;">
<view> <view>
<image :src="$util.img('/uniapp_src/static/images/index/myk.png')" class="card-image"></image> <image :src="$util.img('/uniapp_src/static/images/index/myk.png')" class="card-image">
</image>
</view> </view>
<view class="card-text">{{v.customerResource.name}}</view> <view class="card-text">{{v.customerResource.name}}</view>
<!-- <view class="card-label">{{v.is_status == 1 ? '试听' : '成交'}}</view>--> <!-- <view class="card-label">{{v.is_status == 1 ? '试听' : '成交'}}</view>-->
</view> </view>
<view class="card-con"> <view class="card-con">
决策人{{v.customerResource.name}} <span class="card-con-span">{{v.customerResource.decision_maker}}</span> 决策人{{v.customerResource.name}} <span
class="card-con-span">{{v.customerResource.decision_maker}}</span>
</view> </view>
<view class="card-date"> <view class="card-date">
<view class="card-con">{{ $util.formatToDateTime((v.customerResource.updated_at || ''),'m-d H:i') }} 跟进</view> <view class="card-con">
{{ $util.formatToDateTime((v.customerResource.updated_at || ''),'m-d H:i') }} 跟进
</view>
<view style="margin-left: 30rpx;"> <view style="margin-left: 30rpx;">
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image <image v-if="v.customerResource.initial_intent == 'high'"
v-if="v.customerResource.initial_intent == 'high'"
:src="$util.img('/uniapp_src/static/images/index/intention3.png')" :src="$util.img('/uniapp_src/static/images/index/intention3.png')"
class="drop-image-x" class="drop-image-x"></image>
></image> <image v-else-if="v.customerResource.initial_intent == 'medium'"
<image
v-else-if="v.customerResource.initial_intent == 'medium'"
:src="$util.img('/uniapp_src/static/images/index/intention2.png')" :src="$util.img('/uniapp_src/static/images/index/intention2.png')"
class="drop-image-x" class="drop-image-x"></image>
></image> <image v-else :src="$util.img('/uniapp_src/static/images/index/intention1.png')"
<image class="drop-image-x"></image>
v-else
:src="$util.img('/uniapp_src/static/images/index/intention1.png')"
class="drop-image-x"
></image>
</view> </view>
<view class="title-x">意向{{ v.customerResource && v.customerResource.initial_intent_name || '' }}</view> <view class="title-x">
意向{{ v.customerResource && v.customerResource.initial_intent_name || '' }}</view>
</view> </view>
</view> </view>
</view> </view>
</view> </view>
<view style="width: 15%;"> <view style="width: 15%;">
<!-- <image :src="$util.img('/uniapp_src/static/images/index/message.png')" class="image"></image>--> <!-- <image :src="$util.img('/uniapp_src/static/images/index/message.png')" class="image"></image>-->
</view> </view>
<view style="width: 15%;" @click="openAssign(v)"> <view style="width: 15%;" @click="openAssign(v)">
<view class="ling"></view> <view class="ling"></view>
@ -132,11 +121,13 @@
</view> </view>
</scroll-view> </scroll-view>
<!--下拉选择器--> <!--下拉选择器-->
<fui-select :show="select_show" :options="select_options" title="请选择员工" @confirm="getSales" @close="closeAssign"></fui-select> <fui-select :show="select_show" :options="select_options" title="请选择员工" @confirm="getSales"
@close="closeAssign"></fui-select>
<!-- 时间范围选择器--> <!-- 时间范围选择器-->
<fui-date-picker range :show="date_picker_show" type="3" @change="changeDatePicker" @cancel="cancelDatePicker"></fui-date-picker> <fui-date-picker range :show="date_picker_show" type="3" @change="changeDatePicker" :value="selectedDate"
@cancel="cancelDatePicker"></fui-date-picker>
<!-- 我的客户搜索条件栏目--> <!-- 我的客户搜索条件栏目-->
<fui-drawer :show="showDrawer" direction="left" :maskClosable="true"> <fui-drawer :show="showDrawer" direction="left" :maskClosable="true">
@ -148,7 +139,8 @@
<view class="item"> <view class="item">
<view class="title">时间筛选</view> <view class="title">时间筛选</view>
<view class="input_box"> <view class="input_box">
<fui-input :clearable="true" borderTop placeholder="开始时间-结束时间" @click="openDatePicker" v-model="showDrawerForm.shared_at_str"></fui-input> <fui-input :clearable="true" borderTop placeholder="开始时间-结束时间"
@click="openDatePicker" v-model="showDrawerForm.shared_at_str"></fui-input>
</view> </view>
</view> </view>
</fui-list-cell> </fui-list-cell>
@ -157,7 +149,8 @@
<view class="item"> <view class="item">
<view class="title">姓名筛选</view> <view class="title">姓名筛选</view>
<view class="input_box"> <view class="input_box">
<fui-input :clearable="true" borderTop placeholder="姓名筛选" v-model="showDrawerForm.name"></fui-input> <fui-input :clearable="true" borderTop placeholder="姓名筛选"
v-model="showDrawerForm.name"></fui-input>
</view> </view>
</view> </view>
</fui-list-cell> </fui-list-cell>
@ -166,53 +159,51 @@
<view class="item"> <view class="item">
<view class="title">电话筛选</view> <view class="title">电话筛选</view>
<view class="input_box"> <view class="input_box">
<fui-input :clearable="true" borderTop placeholder="电话筛选" v-model="showDrawerForm.phone_number"></fui-input> <fui-input :clearable="true" borderTop placeholder="电话筛选"
v-model="showDrawerForm.phone_number"></fui-input>
</view> </view>
</view> </view>
</fui-list-cell> </fui-list-cell>
</view> </view>
</scroll-view> </scroll-view>
<view class="fui-btn__box"> <view class="fui-btn__box">
<fui-button type="success" width="400rpx" height="84rpx" text="搜索" bold @click="searchData()"> <view class="button clientbtn" @click="searchData()">搜索</view>
</fui-button> <view class="button clientbtn" @click="closeShowDrawer()">关闭</view>
<fui-button type="warning" width="400rpx" height="84rpx" text="关闭" bold @click="closeShowDrawer()">
</fui-button>
</view> </view>
</view> </view>
</fui-drawer> </fui-drawer>
<view style="height: 170rpx;"></view> <view style="height: 170rpx;"></view>
<AQTabber/> <AQTabber />
</view> </view>
</template> </template>
<script> <script>
import AQTabber from "@/components/AQ/AQTabber.vue" import AQTabber from "@/components/AQ/AQTabber.vue"
import apiRoute from '@/api/apiRoute.js'; import apiRoute from '@/api/apiRoute.js';
import marketApi from '@/api/market.js'; import marketApi from '@/api/market.js';
export default { export default {
components: { components: {
AQTabber, AQTabber,
}, },
data() { data() {
return { return {
loading:false,// loading: false, //
lowerThreshold: 100,// lowerThreshold: 100, //
isReachedBottom: false,//|true=|false= isReachedBottom: false, //|true=|false=
selectedDate: this.getCurrentDate(), //
// //
filteredData:{ filteredData: {
page:1,// page: 1, //
limit:10,// limit: 10, //
total:10,// total: 10, //
type: '0',//0=,1=,2=7,3=30 type: '0', //0=,1=,2=7,3=30
is_gh: '2',//1=,2= is_gh: '2', //1=,2=
}, },
//Tab //Tab
values: [ values: [{
{
id: 1, id: 1,
name: '我的客户' name: '我的客户'
}, },
@ -221,73 +212,73 @@ export default {
// name: '' // name: ''
// } // }
], ],
segmented_type: 1,//Tab|1=,2= segmented_type: 1, //Tab|1=,2=
userInfo:{},// userInfo: {}, //
// //
// //
filteredData_1:{ filteredData_1: {
page:1,// page: 1, //
limit:10,// limit: 10, //
total:10,// total: 10, //
shared_by:'',//ID|0= shared_by: '', //ID|0=
shared_at_str:'',//|(Y-m-d)-(Y-m-d) shared_at_str: '', //|(Y-m-d)-(Y-m-d)
phone_number:'',//- phone_number: '', //-
name:'',//- name: '', //-
}, },
// //
tableList_1:[],// tableList_1: [], //
// //
// //
filteredData_2:{ filteredData_2: {
page:1,// page: 1, //
limit:10,// limit: 10, //
total:10,// total: 10, //
shared_by:'0',//ID|0= shared_by: '0', //ID|0=
shared_at_str:'',//|[(Y-m-d),(Y-m-d)] shared_at_str: '', //|[(Y-m-d),(Y-m-d)]
phone_number:'',//- phone_number: '', //-
name:'',//- name: '', //-
}, },
// //
tableList_2:[],// tableList_2: [], //
//select //select
select_show:false,// select_show: false, //
select_item:{},// select_item: {}, //
select_options:[ select_options: [
// { // {
// text: '', // text: '',
// value: '1', // value: '1',
// } // }
],// ], //
// //
date_picker_show:false,// date_picker_show: false, //
// //
showDrawer:false,//|false= showDrawer: false, //|false=
showDrawerForm:{ showDrawerForm: {
shared_at_str:'',//|[(Y-m-d),(Y-m-d)] shared_at_str: '', //|[(Y-m-d),(Y-m-d)]
phone_number:'',//- phone_number: '', //-
name:'',//- name: '', //-
}, },
} }
}, },
onLoad(options) {}, onLoad(options) {},
onShow(){ onShow() {
this.init()// this.init() //
}, },
// //
async onPullDownRefresh() { async onPullDownRefresh() {
// //
if(this.segmented_type == 1){ if (this.segmented_type == 1) {
// //
await this.resetFilteredData_1() await this.resetFilteredData_1()
await this.getList_1() await this.getList_1()
}else{ } else {
// //
await this.resetFilteredData_2() await this.resetFilteredData_2()
await this.getList_2() await this.getList_2()
@ -296,6 +287,13 @@ export default {
}, },
methods: { methods: {
getCurrentDate() {
const now = new Date();
const year = now.getFullYear();
const month = String(now.getMonth() + 1).padStart(2, '0');
const day = String(now.getDate()).padStart(2, '0');
return `${year}-${month}-${day}`; // 2024-04-15
},
// //
async init() { async init() {
await this.getUserInfo(); await this.getUserInfo();
@ -307,7 +305,7 @@ export default {
}, },
// //
async getUserInfo(){ async getUserInfo() {
let res = await apiRoute.getPersonnelInfo({}) let res = await apiRoute.getPersonnelInfo({})
if (res.code != 1) { if (res.code != 1) {
uni.showToast({ uni.showToast({
@ -319,12 +317,11 @@ export default {
this.userInfo = res.data this.userInfo = res.data
this.filteredData_1.shared_by = this.userInfo.id//ID this.filteredData_1.shared_by = this.userInfo.id //ID
//,"" //,""
if(this.userInfo.role_key_arr.includes('market_manager')){ if (this.userInfo.role_key_arr.includes('market_manager')) {
this.values = [ this.values = [{
{
id: 1, id: 1,
name: '我的客户' name: '我的客户'
}, },
@ -335,22 +332,20 @@ export default {
] ]
//,() //,()
await this.getPersonnelAll(); await this.getPersonnelAll();
}else{ } else {
this.values = [ this.values = [{
{
id: 1, id: 1,
name: '我的客户' name: '我的客户'
}, }, ]
]
} }
}, },
// //
async getPersonnelAll(){ async getPersonnelAll() {
let res = await apiRoute.common_getPersonnelAll({ let res = await apiRoute.common_getPersonnelAll({
personnel_id:this.userInfo.id,//id personnel_id: this.userInfo.id, //id
account_type:'market',//|teacher=,market= account_type: 'market', //|teacher=,market=
}) })
if (res.code != 1) { if (res.code != 1) {
uni.showToast({ uni.showToast({
@ -368,7 +363,7 @@ export default {
}) })
}) })
this.select_options = arr this.select_options = arr
console.log('员工',this.select_options) console.log('员工', this.select_options)
}, },
//- //-
@ -376,7 +371,7 @@ export default {
loadMoreData_1() { loadMoreData_1() {
// //
if (!this.isReachedBottom) { if (!this.isReachedBottom) {
this.isReachedBottom = true;// this.isReachedBottom = true; //
this.getList_1(); this.getList_1();
} }
}, },
@ -384,18 +379,20 @@ export default {
async resetFilteredData_1() { async resetFilteredData_1() {
this.isReachedBottom = false; // 便 this.isReachedBottom = false; // 便
this.filteredData_1.page = 1// this.filteredData_1.page = 1 //
this.filteredData_1.limit = 10// this.filteredData_1.limit = 10 //
this.filteredData_1.total = 10// this.filteredData_1.total = 10 //
}, },
//- //-
async getList_1(){ async getList_1() {
this.loading = true this.loading = true
let data = {...this.filteredData_1} let data = {
...this.filteredData_1
}
// //
if(this.filteredData_1.page * this.filteredData_1.limit > this.filteredData_1.total){ if (this.filteredData_1.page * this.filteredData_1.limit > this.filteredData_1.total) {
this.loading = false this.loading = false
uni.showToast({ uni.showToast({
title: '暂无更多', title: '暂无更多',
@ -404,16 +401,16 @@ export default {
return return
} }
this.filteredData_1.shared_by = this.userInfo.id//ID this.filteredData_1.shared_by = this.userInfo.id //ID
if(data.page == 1){ if (data.page == 1) {
this.tableList_1 = [] this.tableList_1 = []
} }
let res = await apiRoute.xs_resourceSharingIndex(data) let res = await apiRoute.xs_resourceSharingIndex(data)
this.loading = false this.loading = false
this.isReachedBottom = false; this.isReachedBottom = false;
if (res.code != 1){ if (res.code != 1) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
icon: 'none' icon: 'none'
@ -423,7 +420,7 @@ export default {
this.tableList_1 = this.tableList_1.concat(res.data.data); // 使 concat this.tableList_1 = this.tableList_1.concat(res.data.data); // 使 concat
console.log('列表1',this.tableList_1) console.log('列表1', this.tableList_1)
this.filteredData_1.total = res.data.total this.filteredData_1.total = res.data.total
this.filteredData_1.page++ this.filteredData_1.page++
@ -434,25 +431,27 @@ export default {
loadMoreData_2() { loadMoreData_2() {
// //
if (!this.isReachedBottom) { if (!this.isReachedBottom) {
this.isReachedBottom = true;// this.isReachedBottom = true; //
this.getList_2(); this.getList_2();
} }
}, },
// //
async resetFilteredData_2() { async resetFilteredData_2() {
this.isReachedBottom = false; // 便 this.isReachedBottom = false; // 便
this.filteredData_2.page = 1// this.filteredData_2.page = 1 //
this.filteredData_2.limit = 10// this.filteredData_2.limit = 10 //
this.filteredData_2.total = 10// this.filteredData_2.total = 10 //
}, },
//- //-
async getList_2(){ async getList_2() {
this.loading = true this.loading = true
let data = {...this.filteredData_2} let data = {
...this.filteredData_2
}
// //
if(this.filteredData_2.page * this.filteredData_2.limit > this.filteredData_2.total){ if (this.filteredData_2.page * this.filteredData_2.limit > this.filteredData_2.total) {
this.loading = false this.loading = false
uni.showToast({ uni.showToast({
title: '暂无更多', title: '暂无更多',
@ -461,14 +460,14 @@ export default {
return return
} }
if(data.page == 1){ if (data.page == 1) {
this.tableList_2 = [] this.tableList_2 = []
} }
let res = await apiRoute.xs_resourceSharingIndex(data) let res = await apiRoute.xs_resourceSharingIndex(data)
this.loading = false this.loading = false
this.isReachedBottom = false; this.isReachedBottom = false;
if (res.code != 1){ if (res.code != 1) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
icon: 'none' icon: 'none'
@ -476,11 +475,11 @@ export default {
return return
} }
console.log(123123,res) console.log(123123, res)
this.tableList_2 = this.tableList_2.concat(res.data.data); // 使 concat this.tableList_2 = this.tableList_2.concat(res.data.data); // 使 concat
console.log('列表2',this.tableList_2) console.log('列表2', this.tableList_2)
this.filteredData_2.total = res.data.total this.filteredData_2.total = res.data.total
this.filteredData_2.page++ this.filteredData_2.page++
}, },
@ -488,26 +487,26 @@ export default {
//tag //tag
async segmented(param) { async segmented(param) {
this.segmented_type = param.id//1=,2= this.segmented_type = param.id //1=,2=
// //
this.showDrawerForm.shared_at_str = ''//|[(Y-m-d),(Y-m-d)] this.showDrawerForm.shared_at_str = '' //|[(Y-m-d),(Y-m-d)]
this.showDrawerForm.phone_number = ''//- this.showDrawerForm.phone_number = '' //-
this.showDrawerForm.name = ''//- this.showDrawerForm.name = '' //-
if(this.segmented_type == 1){ if (this.segmented_type == 1) {
this.filteredData_1.shared_at_str = ''//|[(Y-m-d),(Y-m-d)] this.filteredData_1.shared_at_str = '' //|[(Y-m-d),(Y-m-d)]
this.filteredData_1.phone_number = ''//- this.filteredData_1.phone_number = '' //-
this.filteredData_1.name = ''//- this.filteredData_1.name = '' //-
// //
// //
await this.resetFilteredData_1() await this.resetFilteredData_1()
await this.getList_1() await this.getList_1()
}else{ } else {
this.filteredData_2.shared_at_str = ''//|[(Y-m-d),(Y-m-d)] this.filteredData_2.shared_at_str = '' //|[(Y-m-d),(Y-m-d)]
this.filteredData_2.phone_number = ''//- this.filteredData_2.phone_number = '' //-
this.filteredData_2.name = ''//- this.filteredData_2.name = '' //-
// //
// //
await this.resetFilteredData_2() await this.resetFilteredData_2()
@ -518,8 +517,8 @@ export default {
//- //-
openViewMyMessage(item) { openViewMyMessage(item) {
let from_id = this.userInfo.id//id let from_id = this.userInfo.id //id
let to_id = item.customerResource.id//ID let to_id = item.customerResource.id //ID
this.$navigateTo({ this.$navigateTo({
url: `/pages/common/im_chat_info?from_id=${from_id}&to_id=${to_id}` url: `/pages/common/im_chat_info?from_id=${from_id}&to_id=${to_id}`
}) })
@ -540,16 +539,16 @@ export default {
let param = { let param = {
staff_id: this.userInfo.id,//id staff_id: this.userInfo.id, //id
resource_id: item.customerResource.id,//ID resource_id: item.customerResource.id, //ID
resource_type: '',// resource_type: '', //
communication_type: 'phone',//: phone-, email-, meeting-, other- communication_type: 'phone', //: phone-, email-, meeting-, other-
communication_result: 'success',//: success-, failure-, pending- communication_result: 'success', //: success-, failure-, pending-
remarks: null,// remarks: null, //
tag: null,// tag: null, //
} }
let res = await apiRoute.xs_communicationRecordsAdd(param)// let res = await apiRoute.xs_communicationRecordsAdd(param) //
if (res.code != 1) { if (res.code != 1) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
@ -569,7 +568,7 @@ export default {
// //
clue_info(item) { clue_info(item) {
let resource_sharing_id = item.id///id let resource_sharing_id = item.id ///id
this.$navigateTo({ this.$navigateTo({
url: `/pages/market/clue/clue_info?resource_sharing_id=${resource_sharing_id}` url: `/pages/market/clue/clue_info?resource_sharing_id=${resource_sharing_id}`
}) })
@ -585,19 +584,24 @@ export default {
closeAssign(item) { closeAssign(item) {
this.select_item = {} this.select_item = {}
this.select_show = false this.select_show = false
this.select_options = this.select_options.map(v => ({ ...v, checked: false })); this.select_options = this.select_options.map(v => ({
...v,
checked: false
}));
}, },
//- //-
async getSales(e){ async getSales(e) {
let select_item = {...this.select_item} let select_item = {
console.log('选中',e,select_item) ...this.select_item
this.closeAssign()// }
console.log('选中', e, select_item)
this.closeAssign() //
let param = { let param = {
resource_sharing_id: select_item.id,//id resource_sharing_id: select_item.id, //id
shared_by: e.options.value,//id shared_by: e.options.value, //id
} }
let res = await apiRoute.xs_resourceSharingAssign(param) let res = await apiRoute.xs_resourceSharingAssign(param)
if(res.code != 1){ if (res.code != 1) {
uni.showToast({ uni.showToast({
title: res.msg, title: res.msg,
icon: 'none' icon: 'none'
@ -621,34 +625,36 @@ export default {
// //
//- //-
changeDatePicker(e){ changeDatePicker(e) {
console.log('时间',e) console.log('时间', e)
let shared_at_str = `${e.startDate.result} ~ ${e.endDate.result}` let shared_at_str = `${e.startDate.result} ~ ${e.endDate.result}`
this.showDrawerForm.shared_at_str = shared_at_str this.showDrawerForm.shared_at_str = shared_at_str
this.cancelDatePicker() this.cancelDatePicker()
}, },
// //
openDatePicker(){ openDatePicker() {
this.date_picker_show = true this.date_picker_show = true
}, },
// //
cancelDatePicker(){ cancelDatePicker() {
this.date_picker_show = false this.date_picker_show = false
}, },
// //
async searchData(){ async searchData() {
if(this.segmented_type == 1){ if (this.segmented_type == 1) {
this.filteredData_1.shared_at_str = this.showDrawerForm.shared_at_str//|[(Y-m-d),(Y-m-d)] this.filteredData_1.shared_at_str = this.showDrawerForm
this.filteredData_1.phone_number = this.showDrawerForm.phone_number//- .shared_at_str //|[(Y-m-d),(Y-m-d)]
this.filteredData_1.name = this.showDrawerForm.name//- this.filteredData_1.phone_number = this.showDrawerForm.phone_number //-
this.filteredData_1.name = this.showDrawerForm.name //-
// //
await this.resetFilteredData_1() await this.resetFilteredData_1()
await this.getList_1() await this.getList_1()
}else{ } else {
this.filteredData_2.shared_at_str = this.showDrawerForm.shared_at_str//|[(Y-m-d),(Y-m-d)] this.filteredData_2.shared_at_str = this.showDrawerForm
this.filteredData_2.phone_number = this.showDrawerForm.phone_number//- .shared_at_str //|[(Y-m-d),(Y-m-d)]
this.filteredData_2.name = this.showDrawerForm.name//- this.filteredData_2.phone_number = this.showDrawerForm.phone_number //-
this.filteredData_2.name = this.showDrawerForm.name //-
// //
await this.resetFilteredData_2() await this.resetFilteredData_2()
await this.getList_2() await this.getList_2()
@ -657,35 +663,39 @@ export default {
}, },
// //
openShowDrawer(){ openShowDrawer() {
this.showDrawer = true this.showDrawer = true
}, },
// //
closeShowDrawer(){ closeShowDrawer() {
this.showDrawer = false this.showDrawer = false
} }
} }
} }
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
.assemble{ .assemble {
width: 100%; width: 100%;
height: 100vh; height: 100vh;
background-color: #292929; background-color: #292929;
overflow: auto; overflow: auto;
.search_section{
.search_section {
margin-top: 20rpx; margin-top: 20rpx;
padding: 10rpx 20rpx; padding: 10rpx 20rpx;
display: flex; display: flex;
flex-direction: column; flex-direction: column;
.item { .item {
height: 60rpx; height: 60rpx;
display: flex; display: flex;
justify-content: center; justify-content: center;
.input_box { .input_box {
width: 75%; width: 75%;
.input_box_text{
.input_box_text {
height: 60rpx; height: 60rpx;
line-height: 60rpx; line-height: 60rpx;
background-color: #fff; background-color: #fff;
@ -694,27 +704,18 @@ export default {
font-size: 28rpx; font-size: 28rpx;
} }
} }
.button{
display: flex;
justify-content: center;
align-items: center;
border-radius: 5rpx;
font-size: 24rpx;
color: #fff;
background-color: #29d3b4;
width: 20%;
height: 100%;
} }
} }
} }
}
.search{ .search {
width: 92%; width: 92%;
margin: auto; margin: auto;
display: flex; display: flex;
margin-top: 20rpx; margin-top: 20rpx;
} }
.selected{
.selected {
background: #294e48; background: #294e48;
border-radius: 16rpx; border-radius: 16rpx;
padding: 12rpx 8rpx; padding: 12rpx 8rpx;
@ -722,7 +723,8 @@ export default {
color: #29d3b4; color: #29d3b4;
margin-left: 5rpx; margin-left: 5rpx;
} }
.not-selected{
.not-selected {
margin-left: 5rpx; margin-left: 5rpx;
background: #ffffff; background: #ffffff;
border: 4rpx #959595 solid; border: 4rpx #959595 solid;
@ -730,7 +732,8 @@ export default {
padding: 12rpx 8rpx; padding: 12rpx 8rpx;
text-align: center; text-align: center;
} }
.card{
.card {
width: 92%; width: 92%;
margin: 20rpx auto; margin: 20rpx auto;
background: #434544; background: #434544;
@ -738,16 +741,19 @@ export default {
display: flex; display: flex;
align-items: center; align-items: center;
} }
.card-image{
.card-image {
width: 60rpx; width: 60rpx;
height: 60rpx; height: 60rpx;
} }
.card-text{
.card-text {
font-size: 32rpx; font-size: 32rpx;
padding-left: 16rpx; padding-left: 16rpx;
color: #fff; color: #fff;
} }
.card-label{
.card-label {
margin-left: 30rpx; margin-left: 30rpx;
background: #76575a; background: #76575a;
width: 130rpx; width: 130rpx;
@ -756,35 +762,42 @@ export default {
text-align: center; text-align: center;
border-radius: 0 50rpx 50rpx 40rpx; border-radius: 0 50rpx 50rpx 40rpx;
} }
.card-con{
.card-con {
font-size: 30rpx; font-size: 30rpx;
padding: 20rpx 10rpx 20rpx 16rpx; padding: 20rpx 10rpx 20rpx 16rpx;
color: #fff; color: #fff;
} }
.card-con-span{
.card-con-span {
font-size: 24rpx; font-size: 24rpx;
color: #a47332; color: #a47332;
padding-left: 12rpx; padding-left: 12rpx;
} }
.drop-image-x { .drop-image-x {
width: 20rpx; width: 20rpx;
height: 20rpx; height: 20rpx;
} }
.title-x { .title-x {
font-size: 28rpx; font-size: 28rpx;
color: #fff; color: #fff;
padding-left: 10rpx; padding-left: 10rpx;
} }
.card-date{
.card-date {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
} }
.image{
.image {
width: 70rpx; width: 70rpx;
height: 70rpx; height: 70rpx;
} }
.neck{
.neck {
width: 60rpx; width: 60rpx;
height: 60rpx; height: 60rpx;
border-radius: 50%; border-radius: 50%;
@ -793,12 +806,13 @@ export default {
line-height: 60rpx; line-height: 60rpx;
text-align: center; text-align: center;
} }
// //
.ling{ .ling {
display: flex; display: flex;
justify-content: center; justify-content: center;
align-items: center; align-items: center;
border-radius:50%; border-radius: 50%;
color: #fff; color: #fff;
width: 50rpx; width: 50rpx;
height: 50rpx; height: 50rpx;
@ -811,29 +825,34 @@ export default {
width: 520rpx; width: 520rpx;
flex: 1; flex: 1;
overflow: hidden; overflow: hidden;
.fui-title { .fui-title {
padding: 40rpx 32rpx; padding: 40rpx 32rpx;
padding-bottom: 20rpx; padding-bottom: 20rpx;
box-sizing: border-box; box-sizing: border-box;
font-weight: bold; font-weight: bold;
} }
.drawer_box{
border: 1px solid red; .drawer_box {
.item{ .item {
display: flex; display: flex;
flex-direction: column; flex-direction: column;
gap: 15rpx; gap: 15rpx;
.title{}
.title {}
.input_box { .input_box {
border: 1px solid #292929; border: 1px solid #292929;
width: 450rpx; width: 450rpx;
::v-deep .fui-input__wrap{
::v-deep .fui-input__wrap {
padding: 10rpx !important; padding: 10rpx !important;
height: 100%; height: 100%;
} }
} }
} }
} }
.fui-btn__box { .fui-btn__box {
padding: 40rpx 0; padding: 40rpx 0;
display: flex; display: flex;
@ -842,10 +861,27 @@ export default {
justify-content: center; justify-content: center;
gap: 30rpx; gap: 30rpx;
} }
}
}
.button {
display: flex;
justify-content: center;
align-items: center;
border-radius: 5rpx;
font-size: 24rpx;
color: #fff;
background-color: #29d3b4;
width: 20%;
height: 100%;
}
.clientbtn {
width: 200px;
height: 40px;
font-size: 16px;
border-radius: 5px;
}
</style> </style>

22
pages/market/index/index.vue

@ -118,7 +118,7 @@
<view> <view>
<image :src="$util.img('/uniapp_src/static/images/index/danlv.png')" class="drop-image"></image> <image :src="$util.img('/uniapp_src/static/images/index/danlv.png')" class="drop-image"></image>
</view> </view>
<view class="title">上月业绩</view> <view class="title">个人业绩</view>
</view> </view>
<view class="coach-message"> <view class="coach-message">
@ -130,9 +130,9 @@
<image :src="$util.img('/uniapp_src/static/images/index/danlv.png')" <image :src="$util.img('/uniapp_src/static/images/index/danlv.png')"
class="drop-image-x"></image> class="drop-image-x"></image>
</view> </view>
<view class="title-x">资源总数</view> <view class="title-x">今日新增资源</view>
</view> </view>
<view class="title-x1">{{infoData.last_month.new_total}}</view> <view class="title-x1">{{infoData.last_month.xzzy}}</view>
</view> </view>
<view style="width: 48%;"> <view style="width: 48%;">
@ -141,9 +141,9 @@
<image :src="$util.img('/uniapp_src/static/images/index/danlv.png')" <image :src="$util.img('/uniapp_src/static/images/index/danlv.png')"
class="drop-image-x"></image> class="drop-image-x"></image>
</view> </view>
<view class="title-x">业绩收入</view> <view class="title-x">今日业绩收入</view>
</view> </view>
<view class="title-x1">{{infoData.last_month.assigned_sales}}</view> <view class="title-x1">{{infoData.last_month.yjsr}}</view>
</view> </view>
</view> </view>
@ -154,21 +154,21 @@
<image :src="$util.img('/uniapp_src/static/images/index/danlv.png')" <image :src="$util.img('/uniapp_src/static/images/index/danlv.png')"
class="drop-image-x"></image> class="drop-image-x"></image>
</view> </view>
<view class="title-x">关单数量</view> <view class="title-x">历史关单数量</view>
</view> </view>
<view class="title-x1">{{infoData.last_month.yesterday_new}}</view> <view class="title-x1">{{infoData.last_month.gdsl}}</view>
</view> </view>
<!-- <view style="width: 48%;"> <view style="width: 48%;">
<view style="display: flex;align-items: center;"> <view style="display: flex;align-items: center;">
<view style="padding: 12rpx;"> <view style="padding: 12rpx;">
<image :src="$util.img('/uniapp_src/static/images/index/danlv.png')" <image :src="$util.img('/uniapp_src/static/images/index/danlv.png')"
class="drop-image-x"></image> class="drop-image-x"></image>
</view> </view>
<view class="title-x">今日拉新</view> <view class="title-x">资源未分配数量</view>
</view>
<view class="title-x1">{{infoData.last_month.wfpsl}}</view>
</view> </view>
<view class="title-x1">{{infoData.last_month.today_new}}</view>
</view> -->
</view> </view>
</view> </view>
</view> </view>

5
pages/student/login/login.vue

@ -309,7 +309,10 @@ export default {
// 使 redirectTo navigateTo // 使 redirectTo navigateTo
uni.redirectTo({ uni.redirectTo({
url: openPath url: openPath,
complete(e) {
console.log(e)
}
}); });
return return
} }

9
uni.scss

@ -93,3 +93,12 @@ $font-size-paragraph: 30rpx;
$font-sm: 20rpx; $font-sm: 20rpx;
$font-color-999: #999; $font-color-999: #999;
$bgcolor_white: #fff; $bgcolor_white: #fff;
$uni-bg-color-mask: rgba($color: #000000, $alpha: 0.4);
$uni-border-color: #EDEDED;
$uni-text-color: #333;
$uni-bg-color-hover:#f1f1f1;
$uni-font-size-base:14px;
$uni-text-color-placeholder: #808080;
$uni-color-subtitle: #555555;
$uni-text-color-grey:#999;

8
uni_modules/uni-calendar/components/uni-calendar/uni-calendar.vue

@ -367,14 +367,6 @@
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
$uni-bg-color-mask: rgba($color: #000000, $alpha: 0.4);
$uni-border-color: #EDEDED;
$uni-text-color: #333;
$uni-bg-color-hover:#f1f1f1;
$uni-font-size-base:14px;
$uni-text-color-placeholder: #808080;
$uni-color-subtitle: #555555;
$uni-text-color-grey:#999;
.uni-calendar { .uni-calendar {
/* #ifndef APP-NVUE */ /* #ifndef APP-NVUE */
display: flex; display: flex;

Loading…
Cancel
Save