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. 497
      pages/market/clue/edit_clues.vue
  8. 210
      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">
@import '~@/static/styles/app.scss';
@import "@/uni.scss";
</style>

18
pages.json

@ -573,6 +573,24 @@
"navigationBarBackgroundColor": "#fff",
"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="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
label="来源"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
@ -50,7 +91,6 @@
<fui-form-item
v-if="formData.source == 1"
label="来源渠道"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
@ -71,7 +111,7 @@
<!--
<fui-form-item
label="顾问"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
@ -91,7 +131,6 @@
<fui-form-item
v-show="false"
label="顾问"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
@ -110,33 +149,11 @@
></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.name"
backgroundColor="#434544"
size="26"
color="#fff"
></fui-input>
</view>
</fui-form-item>
<!--年龄-->
<fui-form-item
label="年龄"
labelSize='26'
asterisk
asteriskPosition="right"
prop="age"
background='#434544'
labelColor='#fff'
@ -149,7 +166,6 @@
<fui-form-item
label="性别"
labelSize='26'
asterisk asteriskPosition="right"
prop="age"
background='#434544'
labelColor='#fff'
@ -173,32 +189,11 @@
</fui-radio-group>
</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
label="需求"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
@ -219,7 +214,7 @@
<!--决策人-->
<fui-form-item
label="决策人"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
@ -237,7 +232,7 @@
<!--客户初步意向度-->
<fui-form-item
label="客户初步意向度"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
@ -257,7 +252,7 @@
<fui-form-item
v-show="false"
label="客户状态"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
@ -292,7 +287,6 @@
<!--购买力-->
<fui-form-item
label="购买力"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
@ -311,7 +305,6 @@
<!--认知理念-->
<fui-form-item
label="认知理念"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
@ -330,7 +323,6 @@
<!--可选上课时间-->
<fui-form-item
label="可选上课时间"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
@ -349,7 +341,6 @@
<!--承诺到访时间-->
<fui-form-item
label="承诺到访时间"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
@ -368,7 +359,6 @@
<!--距离-->
<fui-form-item
label="距离"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
@ -387,7 +377,6 @@
<!--沟通备注-->
<fui-form-item
label="沟通备注"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
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
},
@ -1205,26 +1182,6 @@ export default {
},
//
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){
uni.showToast({
@ -1234,24 +1191,6 @@ export default {
this.nextStep('0')
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){
uni.showToast({
@ -1261,100 +1200,6 @@ export default {
this.nextStep('0')
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
},
//

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">
</image>
</view>
<view class="title-x">意向{{ clientInfo.customerResource.initial_intent_name }}</view>
</view>
</view>
<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>-->
<!-- <view class="title-x">重点关注</view>-->
<!-- 操作按钮 -->
<view class="action-buttons">
<view class="btn-item" @click="handleMakeCall">
<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>
@ -166,7 +170,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</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 style="margin: 16rpx;">
@ -187,7 +191,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</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 style="margin: 16rpx;">
@ -208,7 +212,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</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 style="margin: 16rpx;">
@ -229,7 +233,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</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 style="margin: 16rpx;">
@ -250,7 +254,7 @@
<view>合同联系人包念念<span style="font-size: 20rpx;color: #a47332;padding-left: 12rpx;">妈妈</span></view>
<view>课程课程名称1</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 style="height: 200rpx;"></view>
@ -259,7 +263,7 @@
<!-- 底部按钮组-->
<view class="bottom-label">
<view @click="openViewEditClues()">编辑详情</view>
<view @click="callTel(clientInfo.student_phone)">拨打电话</view>
<view @click="openViewEditClassLog()">课程安排</view>
<view @click="openViewEditCluesLog()">修改记录</view>
<view @click="openViewOrder()">订单列表</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() {
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){
@ -677,4 +718,24 @@
padding: 12rpx 8rpx;
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>

497
pages/market/clue/edit_clues.vue

@ -1,14 +1,8 @@
<!--编辑客户-->
<template>
<view class="assemble">
<fui-segmented-control
style="padding-top: 30rpx;"
:values="optionTable"
:current="(Number(optionTableId))"
type="text"
activeColor="#29d3b4"
color="#fff"
@click="segmented">
<fui-segmented-control style="padding-top: 30rpx;" :values="optionTable" :current="(Number(optionTableId))"
type="text" activeColor="#29d3b4" color="#fff" @click="segmented">
</fui-segmented-control>
@ -26,42 +20,39 @@
<view class="title" style="margin-top: 20rpx;">基础信息</view>
<view class="input-style">
<!--姓名-->
<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 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
label="来源"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
labelColor='#fff'
:bottomBorder='false'
>
<fui-form-item label="来源" labelSize='26' prop=""
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
@click="openCicker(`source`)">
<view class="input-title" style="margin-right:14rpx;" @click="openCicker(`source`)">
{{ (formData.source) ? picker_config.source.text : '点击选择' }}
</view>
</view>
</fui-form-item>
<!--来源渠道-->
<fui-form-item
v-if="formData.source == 1"
label="来源渠道"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
labelColor='#fff'
:bottomBorder='false'
>
<fui-form-item v-if="formData.source == 1" label="来源渠道"
labelSize='26' prop="" background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
<view class="input-title" style="margin-right:14rpx;"
@click="openCicker(`source_channel`)">
{{ (formData.source_channel) ? picker_config.source_channel.text : '点击选择' }}
</view>
@ -69,91 +60,26 @@
</fui-form-item>
<!--顾问-->
<!--
<fui-form-item
label="顾问"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
labelColor='#fff'
:bottomBorder='false'
>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
@click="openCicker(`consultant`)">
{{ (formData.consultant) ? picker_config.consultant.text : '点击选择' }}
</view>
</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]"
:disabled="true"
placeholder="点击填写"
v-model="picker_config.consultant.text"
backgroundColor="#434544"
size="26"
color="#808080"
></fui-input>
</view>
</fui-form-item>
<!--姓名-->
<fui-form-item
label="姓名"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<fui-form-item v-show="false" label="顾问" 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>
<fui-input :borderBottom="false" :padding="[0]" :disabled="true" placeholder="点击填写"
v-model="picker_config.consultant.text" backgroundColor="#434544" size="26"
color="#808080"></fui-input>
</view>
</fui-form-item>
<!--年龄-->
<fui-form-item
label="年龄"
labelSize='26'
asterisk
asteriskPosition="right"
prop="age"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<fui-form-item label="年龄" labelSize='26' prop="age"
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<fui-input-number signColor="#FFF" :min="3" :max="18" v-model="formData.age"></fui-input-number>
<fui-input-number signColor="#FFF" :min="3" :max="18"
v-model="formData.age"></fui-input-number>
</view>
</fui-form-item>
<!--性别-->
<fui-form-item
label="性别"
labelSize='26'
asterisk asteriskPosition="right"
prop="age"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<fui-form-item label="性别" labelSize='26' prop="age"
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<fui-radio-group name="radio" v-model="formData.gender" @change="changeSex">
<view class="fui-list__item" style="display: flex;justify-content: flex-end;">
@ -173,62 +99,21 @@
</fui-radio-group>
</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
label="需求"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<fui-form-item label="需求" 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.demand"
backgroundColor="#434544"
size="26"
color="#fff"
></fui-input>
<fui-input :borderBottom="false" :padding="[0]" placeholder="点击填写"
v-model="formData.demand" 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'>
<fui-form-item label="决策人" labelSize='26' prop="title"
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
<view class="input-title" style="margin-right:14rpx;"
@click="openCicker(`decision_maker`)">
{{ (formData.decision_maker) ? picker_config.decision_maker.text : '点击选择' }}
</view>
@ -240,7 +125,8 @@
</view>
<view class="fui-btn__box">
<fui-button background="#434544" color="#24BA9F" borderColor="#24BA9F" @click="nextStep('1')">下一步</fui-button>
<fui-button background="#434544" color="#24BA9F" borderColor="#24BA9F"
@click="nextStep('1')">下一步</fui-button>
</view>
</view>
@ -252,201 +138,96 @@
<view class="title" style="margin-top: 20rpx;">六要素信息</view>
<view class="input-style">
<!--客户初步意向度-->
<fui-form-item
label="客户初步意向度"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
labelColor='#fff'
:bottomBorder='false'
>
<fui-form-item label="客户初步意向度" labelSize='26' prop=""
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
<view class="input-title" style="margin-right:14rpx;"
@click="openCicker(`initial_intent`)">
{{ (formData.initial_intent) ? picker_config.initial_intent.text : '点击选择' }}
</view>
</view>
</fui-form-item>
<!--客户状态-->
<fui-form-item
label="客户状态"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
labelColor='#fff'
:bottomBorder='false'
>
<fui-form-item label="客户状态" labelSize='26' prop=""
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
@click="openCicker(`status`)">
<view class="input-title" style="margin-right:14rpx;" @click="openCicker(`status`)">
{{ (formData.status) ? picker_config.status.text : '点击选择' }}
</view>
</view>
</fui-form-item>
<!--购买力-->
<fui-form-item
label="购买力"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
labelColor='#fff'
:bottomBorder='false'
>
<fui-form-item label="购买力" labelSize='26' prop=""
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
<view class="input-title" style="margin-right:14rpx;"
@click="openCicker(`purchasing_power`)">
{{ (formData.purchasing_power) ? picker_config.purchasing_power.text : '点击选择' }}
</view>
</view>
</fui-form-item>
<!--认知理念-->
<fui-form-item
label="认知理念"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
labelColor='#fff'
:bottomBorder='false'
>
<fui-form-item label="认知理念" labelSize='26' prop=""
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
<view class="input-title" style="margin-right:14rpx;"
@click="openCicker(`cognitive_idea`)">
{{ (formData.cognitive_idea) ? picker_config.cognitive_idea.text : '点击选择' }}
</view>
</view>
</fui-form-item>
<!--可选上课时间-->
<fui-form-item
label="可选上课时间"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
labelColor='#fff'
:bottomBorder='false'
>
<fui-form-item label="可选上课时间" labelSize='26' prop=""
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
<view class="input-title" style="margin-right:14rpx;"
@click="openDate(`optional_class_time`)">
{{ (formData.optional_class_time) ? formData.optional_class_time : '点击选择' }}
</view>
</view>
</fui-form-item>
<!--承诺到访时间-->
<fui-form-item
label="承诺到访时间"
asterisk asteriskPosition="right"
labelSize='26'
prop=""
background='#434544'
labelColor='#fff'
:bottomBorder='false'
>
<fui-form-item label="承诺到访时间" labelSize='26' prop=""
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
<view class="input-title" style="margin-right:14rpx;"
@click="openDate(`promised_visit_time`)">
{{ (formData.promised_visit_time) ? formData.promised_visit_time : '点击选择' }}
</view>
</view>
</fui-form-item>
<!--距离-->
<fui-form-item
label="距离"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<fui-form-item label="距离" labelSize='26' prop="title"
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<view
class="input-title"
style="margin-right:14rpx;"
@click="openCicker(`distance`)">
<view class="input-title" style="margin-right:14rpx;" @click="openCicker(`distance`)">
{{ (formData.distance) ? picker_config.distance.text : '点击选择' }}
</view>
</view>
</fui-form-item>
<!--沟通备注-->
<fui-form-item
label="沟通备注"
asterisk asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<fui-form-item label="沟通备注" 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.communication"
backgroundColor="#434544"
size="26"
color="#fff"
></fui-input>
<fui-input :borderBottom="false" :padding="[0]" placeholder="点击填写"
v-model="formData.communication" backgroundColor="#434544" size="26"
color="#fff"></fui-input>
</view>
</fui-form-item>
<!--一访情况-->
<fui-form-item
label="一访情况"
asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<fui-form-item label="一访情况" asteriskPosition="right" labelSize='26' prop="title"
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<fui-textarea placeholder="点击填写" style="text-align: left;" v-model="formData.first_visit_status" ></fui-textarea>
<!-- <fui-input-->
<!-- :borderBottom="false"-->
<!-- :padding="[0]"-->
<!-- placeholder="点击填写"-->
<!-- v-model="formData.first_visit_status"-->
<!-- backgroundColor="#434544"-->
<!-- size="26"-->
<!-- color="#fff"-->
<!-- ></fui-input>-->
<fui-textarea placeholder="点击填写" style="text-align: left;"
v-model="formData.first_visit_status"></fui-textarea>
</view>
</fui-form-item>
<!--二访情况-->
<fui-form-item
label="二访情况"
asteriskPosition="right"
labelSize='26'
prop="title"
background='#434544'
labelColor='#fff'
:bottomBorder='false'>
<fui-form-item label="二访情况" asteriskPosition="right" labelSize='26' prop="title"
background='#434544' labelColor='#fff' :bottomBorder='false'>
<view class="input-title" style="margin-right:14rpx;">
<fui-textarea placeholder="点击填写" borderColor="#292929" style="text-align: left;" v-model="formData.second_visit_status"></fui-textarea>
<!-- <fui-input-->
<!-- :borderBottom="false"-->
<!-- :padding="[0]"-->
<!-- placeholder="点击填写"-->
<!-- v-model="formData.second_visit_status"-->
<!-- backgroundColor="#434544"-->
<!-- size="26"-->
<!-- color="#fff"-->
<!-- ></fui-input>-->
<fui-textarea placeholder="点击填写" borderColor="#292929" style="text-align: left;"
v-model="formData.second_visit_status"></fui-textarea>
</view>
</fui-form-item>
</view>
@ -460,16 +241,12 @@
<!-- 年月日-选择时间 -->
<fui-date-picker :show="date_picker_show" type="3" @change="change_date" @cancel="cancel_date"></fui-date-picker>
<fui-date-picker :show="date_picker_show" type="3" @change="change_date"
@cancel="cancel_date" :value="default_date_value"></fui-date-picker>
<!-- 选择器 -->
<fui-picker
:linkage='picker_linkage'
:options="picker_options"
:layer="1"
:show="picker_show"
@change="changeCicker"
@cancel="cancelCicker">
<fui-picker :linkage='picker_linkage' :options="picker_options" :layer="1" :show="picker_show"
@change="changeCicker" @cancel="cancelCicker">
</fui-picker>
<!-- 查重弹出层-->
@ -495,9 +272,8 @@
<view class="li" v-for="(v,k) in clientUserList" :key="k">
<view class="left_box" @click="openViewClueInfo(v)">
<view class="box_1">
<image
class="img"
:src="$util.img('/uniapp_src/static/images/index/myk.png')"></image>
<image class="img" :src="$util.img('/uniapp_src/static/images/index/myk.png')">
</image>
<view class="name">{{v.student_name}}</view>
<view class="tag">{{ v.is_status == 1 ? '试听' : '成交' }}</view>
</view>
@ -509,33 +285,31 @@
</view>
<view class="box_3">
<view class="left">
{{ $util.formatToDateTime((v.follow && v.follow.follow_up_time || ''), 'm-d H:i') }} 跟进
{{ $util.formatToDateTime((v.follow && v.follow.follow_up_time || ''), 'm-d H:i') }}
跟进
</view>
<view class="right">
<image
v-if="['A+','A','A-'].includes(v.follow && v.follow.initial_customer_intent || '')"
:src="$util.img('/uniapp_src/static/images/index/intention3.png')"
class="img"
></image>
class="img"></image>
<image
v-else-if="['B+','B','B-'].includes(v.follow && v.follow.initial_customer_intent || '')"
:src="$util.img('/uniapp_src/static/images/index/intention2.png')"
class="img"
></image>
<image
v-else
:src="$util.img('/uniapp_src/static/images/index/intention1.png')"
class="img"
></image>
class="img"></image>
<image v-else :src="$util.img('/uniapp_src/static/images/index/intention1.png')"
class="img"></image>
<view>意向{{ v.follow && v.follow.initial_customer_intent || '' }}</view>
</view>
</view>
</view>
<view class="right_box">
<image class="img" :src="$util.img('/uniapp_src/static/images/index/message.png')" @click="openViewMyMessage(v)"></image>
<image class="img" :src="$util.img('/uniapp_src/static/images/index/phone.png')" @click="dialTel(v)"></image>
<image class="img" :src="$util.img('/uniapp_src/static/images/index/message.png')"
@click="openViewMyMessage(v)"></image>
<image class="img" :src="$util.img('/uniapp_src/static/images/index/phone.png')"
@click="dialTel(v)"></image>
</view>
</view>
</view>
@ -555,8 +329,7 @@ import marketApi from '@/api/market.js';
import memberApi from '@/api/member.js';
const rules = [
{
const rules = [{
name: "student_name",
rule: ["required"],
msg: ["请输入学员姓名"]
@ -729,6 +502,7 @@ export default {
//
data_picker_input_name: '', //input_name
date_picker_show: false, //
default_date_value: '', //
//
@ -746,14 +520,13 @@ export default {
//tab
optionTableId: 0,
optionTable: [
{
optionTable: [{
id: 0,
name: '添加客户'
name: '编辑客户'
},
{
id: 1,
name: '添加六要素'
name: '编辑六要素'
}
],
}
@ -829,8 +602,10 @@ export default {
second_visit_status: sixSpeed.second_visit_status || '', //访
}
this.formData.promised_visit_time = this.$util.formatToDateTime(sixSpeed.promised_visit_time, 'Y-m-d');//(Y-m-d H:i)
this.formData.optional_class_time = this.$util.formatToDateTime(sixSpeed.promised_visit_time, 'Y-m-d');//(Y-m-d H:i)
this.formData.promised_visit_time = this.$util.formatToDateTime(sixSpeed.promised_visit_time,
'Y-m-d'); //(Y-m-d H:i)
this.formData.optional_class_time = this.$util.formatToDateTime(sixSpeed.promised_visit_time,
'Y-m-d'); //(Y-m-d H:i)
//
this.picker_config.source_channel.text = customerResource.source_channel_name || '点击选择' //
@ -873,7 +648,9 @@ export default {
//
async getStaffList() {
let res = await memberApi.staffList({type: 2})
let res = await memberApi.staffList({
type: 2
})
if (res.code != 1) {
uni.showToast({
title: res.msg,
@ -978,7 +755,9 @@ export default {
}
let res = await apiRoute.common_Dictionary({key:key})
let res = await apiRoute.common_Dictionary({
key: key
})
if (res.code != 1) {
uni.showToast({
title: res.msg,
@ -1220,7 +999,10 @@ export default {
let arr = this.picker_config[input_name]?.options || []
if (!arr.length) {
uni.showToast({ title: '暂无选项', icon: 'none' })
uni.showToast({
title: '暂无选项',
icon: 'none'
})
return
}
@ -1259,6 +1041,19 @@ export default {
openDate(input_name) {
this.date_picker_show = true
this.data_picker_input_name = input_name
//
if (this.formData[input_name]) {
// 使
this.default_date_value = this.formData[input_name]
} else {
// 使
const today = new Date()
const year = today.getFullYear()
const month = String(today.getMonth() + 1).padStart(2, '0')
const day = String(today.getDate()).padStart(2, '0')
this.default_date_value = `${year}-${month}-${day}`
}
},
//
change_date(e) {
@ -1440,7 +1235,9 @@ export default {
//
async submit() {
console.log('提交', this.formData)
let data = {...this.formData}
let data = {
...this.formData
}
//
let validatorForm = await this.validatorForm(data)
console.log('验证结果', validatorForm)
@ -1489,8 +1286,10 @@ export default {
display: flex;
justify-content: space-between;
align-items: center;
.input_box {
width: 70%;
input {
width: 100%;
height: 60rpx;
@ -1498,6 +1297,7 @@ export default {
font-size: 28rpx;
}
}
.btn {
font-size: 28rpx;
color: #24BA9F;
@ -1546,28 +1346,34 @@ export default {
//
.fui-scroll__wrap {
height: 60vh;
.title_box {
padding: 10rpx 20rpx;
display: flex;
justify-content: space-between;
align-items: center;
.title {
font-size: 28rpx;
color: #101010;
}
}
.section_ul {
margin-bottom: 100rpx;
height: 98%;
.not_list {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
.img {
width: 112rpx;
height: 112rpx;
}
.title {
padding: 0;
margin-top: 10rpx;
@ -1576,11 +1382,13 @@ export default {
text-align: center;
}
}
.ul {
padding: 26rpx;
padding-bottom: 100rpx;
display: flex;
flex-direction: column;
.li {
margin-bottom: 26rpx;
padding: 26rpx;
@ -1593,22 +1401,27 @@ export default {
color: #fff;
font-size: 28rpx;
border: 0rpx solid rgba(121, 121, 121, 1);
.left_box {
width: 80%;
display: flex;
flex-direction: column;
gap: 20rpx;
.box_1 {
display: flex;
align-items: center;
.img {
width: 48rpx;
height: 48rpx;
border-right: 50%;
}
.name {
margin-left: 20rpx;
}
.tag {
margin-left: 20rpx;
width: 84rpx;
@ -1622,16 +1435,20 @@ export default {
border: 0rpx solid rgba(121, 121, 121, 1);
}
}
.box_2 {
display: flex;
justify-content: space-between;
align-items: center;
.left {
display: flex;
align-items: flex-end;
.name {
font-size: 28rpx;
}
.call {
margin-left: 10rpx;
font-size: 24rpx;
@ -1639,14 +1456,18 @@ export default {
}
}
}
.box_3 {
display: flex;
gap: 30rpx;
.left {}
.right {
display: flex;
align-items: center;
gap: 10rpx;
.img {
width: 16rpx;
height: 16rpx;
@ -1655,11 +1476,13 @@ export default {
}
}
}
.right_box {
width: 25%;
display: flex;
justify-content: space-between;
align-items: center;
.img {
width: 70rpx;
height: 70rpx;

210
pages/market/clue/index.vue

@ -4,13 +4,8 @@
@click="segmented"></fui-segmented-control>
<!--我的客户-->
<scroll-view
v-if="segmented_type == 1"
scroll-y="true"
:lower-threshold="lowerThreshold"
@scrolltolower="loadMoreData_1"
style="height: 100vh;"
>
<scroll-view v-if="segmented_type == 1" scroll-y="true" :lower-threshold="lowerThreshold"
@scrolltolower="loadMoreData_1" style="height: 100vh;">
<view class="search_section">
<view class="item">
<view class="input_box" @click="openShowDrawer()">
@ -23,60 +18,56 @@
<view style="width: 70%;" @click="clue_info(v)">
<view style="display: flex;align-items: center;padding: 20rpx;">
<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 class="card-text">{{ v.customerResource.name }}</view>
<!-- <view class="card-label">{{ v.is_status == 1 ? '试听' : '成交' }}</view>-->
</view>
<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 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 style="margin-left: 30rpx;">
<view style="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image
v-if="v.customerResource.initial_intent == 'high'"
<image v-if="v.customerResource.initial_intent == 'high'"
:src="$util.img('/uniapp_src/static/images/index/intention3.png')"
class="drop-image-x"
></image>
<image
v-else-if="v.customerResource.initial_intent == 'medium'"
class="drop-image-x"></image>
<image v-else-if="v.customerResource.initial_intent == 'medium'"
:src="$util.img('/uniapp_src/static/images/index/intention2.png')"
class="drop-image-x"
></image>
<image
v-else
:src="$util.img('/uniapp_src/static/images/index/intention1.png')"
class="drop-image-x"
></image>
class="drop-image-x"></image>
<image v-else :src="$util.img('/uniapp_src/static/images/index/intention1.png')"
class="drop-image-x"></image>
</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>
<!--只有注册了member表的账号才可操作IM对话-->
<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 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>
</scroll-view>
<!--资源分配-->
<scroll-view
v-if="segmented_type == 2"
scroll-y="true"
:lower-threshold="lowerThreshold"
@scrolltolower="loadMoreData_2"
style="height: 100vh;"
>
<scroll-view v-if="segmented_type == 2" scroll-y="true" :lower-threshold="lowerThreshold"
@scrolltolower="loadMoreData_2" style="height: 100vh;">
<view class="search_section">
<view class="item">
<view class="input_box" @click="openShowDrawer()">
@ -89,36 +80,34 @@
<view style="width: 70%;">
<view style="display: flex;align-items: center;padding: 20rpx;">
<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 class="card-text">{{v.customerResource.name}}</view>
<!-- <view class="card-label">{{v.is_status == 1 ? '试听' : '成交'}}</view>-->
</view>
<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 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="display: flex;align-items: center;">
<view style="padding: 12rpx;">
<image
v-if="v.customerResource.initial_intent == 'high'"
<image v-if="v.customerResource.initial_intent == 'high'"
:src="$util.img('/uniapp_src/static/images/index/intention3.png')"
class="drop-image-x"
></image>
<image
v-else-if="v.customerResource.initial_intent == 'medium'"
class="drop-image-x"></image>
<image v-else-if="v.customerResource.initial_intent == 'medium'"
:src="$util.img('/uniapp_src/static/images/index/intention2.png')"
class="drop-image-x"
></image>
<image
v-else
:src="$util.img('/uniapp_src/static/images/index/intention1.png')"
class="drop-image-x"
></image>
class="drop-image-x"></image>
<image v-else :src="$util.img('/uniapp_src/static/images/index/intention1.png')"
class="drop-image-x"></image>
</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>
@ -133,10 +122,12 @@
</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">
@ -148,7 +139,8 @@
<view class="item">
<view class="title">时间筛选</view>
<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>
</fui-list-cell>
@ -157,7 +149,8 @@
<view class="item">
<view class="title">姓名筛选</view>
<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>
</fui-list-cell>
@ -166,17 +159,16 @@
<view class="item">
<view class="title">电话筛选</view>
<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>
</fui-list-cell>
</view>
</scroll-view>
<view class="fui-btn__box">
<fui-button type="success" width="400rpx" height="84rpx" text="搜索" bold @click="searchData()">
</fui-button>
<fui-button type="warning" width="400rpx" height="84rpx" text="关闭" bold @click="closeShowDrawer()">
</fui-button>
<view class="button clientbtn" @click="searchData()">搜索</view>
<view class="button clientbtn" @click="closeShowDrawer()">关闭</view>
</view>
</view>
</fui-drawer>
@ -200,7 +192,7 @@ export default {
loading: false, //
lowerThreshold: 100, //
isReachedBottom: false, //|true=|false=
selectedDate: this.getCurrentDate(), //
//
filteredData: {
page: 1, //
@ -211,8 +203,7 @@ export default {
},
//Tab
values: [
{
values: [{
id: 1,
name: '我的客户'
},
@ -296,6 +287,13 @@ export default {
},
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() {
await this.getUserInfo();
@ -323,8 +321,7 @@ export default {
//,""
if (this.userInfo.role_key_arr.includes('market_manager')) {
this.values = [
{
this.values = [{
id: 1,
name: '我的客户'
},
@ -336,12 +333,10 @@ export default {
//,()
await this.getPersonnelAll();
} else {
this.values = [
{
this.values = [{
id: 1,
name: '我的客户'
},
]
}, ]
}
},
@ -392,7 +387,9 @@ export default {
async getList_1() {
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) {
@ -449,7 +446,9 @@ export default {
async getList_2() {
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) {
@ -585,11 +584,16 @@ export default {
closeAssign(item) {
this.select_item = {}
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) {
let select_item = {...this.select_item}
let select_item = {
...this.select_item
}
console.log('选中', e, select_item)
this.closeAssign() //
let param = {
@ -639,14 +643,16 @@ export default {
//
async searchData() {
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
.shared_at_str //|[(Y-m-d),(Y-m-d)]
this.filteredData_1.phone_number = this.showDrawerForm.phone_number //-
this.filteredData_1.name = this.showDrawerForm.name //-
//
await this.resetFilteredData_1()
await this.getList_1()
} 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
.shared_at_str //|[(Y-m-d),(Y-m-d)]
this.filteredData_2.phone_number = this.showDrawerForm.phone_number //-
this.filteredData_2.name = this.showDrawerForm.name //-
//
@ -674,17 +680,21 @@ export default {
height: 100vh;
background-color: #292929;
overflow: auto;
.search_section {
margin-top: 20rpx;
padding: 10rpx 20rpx;
display: flex;
flex-direction: column;
.item {
height: 60rpx;
display: flex;
justify-content: center;
.input_box {
width: 75%;
.input_box_text {
height: 60rpx;
line-height: 60rpx;
@ -694,26 +704,17 @@ export default {
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 {
width: 92%;
margin: auto;
display: flex;
margin-top: 20rpx;
}
.selected {
background: #294e48;
border-radius: 16rpx;
@ -722,6 +723,7 @@ export default {
color: #29d3b4;
margin-left: 5rpx;
}
.not-selected {
margin-left: 5rpx;
background: #ffffff;
@ -730,6 +732,7 @@ export default {
padding: 12rpx 8rpx;
text-align: center;
}
.card {
width: 92%;
margin: 20rpx auto;
@ -738,15 +741,18 @@ export default {
display: flex;
align-items: center;
}
.card-image {
width: 60rpx;
height: 60rpx;
}
.card-text {
font-size: 32rpx;
padding-left: 16rpx;
color: #fff;
}
.card-label {
margin-left: 30rpx;
background: #76575a;
@ -756,34 +762,41 @@ export default {
text-align: center;
border-radius: 0 50rpx 50rpx 40rpx;
}
.card-con {
font-size: 30rpx;
padding: 20rpx 10rpx 20rpx 16rpx;
color: #fff;
}
.card-con-span {
font-size: 24rpx;
color: #a47332;
padding-left: 12rpx;
}
.drop-image-x {
width: 20rpx;
height: 20rpx;
}
.title-x {
font-size: 28rpx;
color: #fff;
padding-left: 10rpx;
}
.card-date {
display: flex;
align-items: center;
justify-content: space-between;
}
.image {
width: 70rpx;
height: 70rpx;
}
.neck {
width: 60rpx;
height: 60rpx;
@ -793,6 +806,7 @@ export default {
line-height: 60rpx;
text-align: center;
}
//
.ling {
display: flex;
@ -811,22 +825,26 @@ export default {
width: 520rpx;
flex: 1;
overflow: hidden;
.fui-title {
padding: 40rpx 32rpx;
padding-bottom: 20rpx;
box-sizing: border-box;
font-weight: bold;
}
.drawer_box {
border: 1px solid red;
.item {
display: flex;
flex-direction: column;
gap: 15rpx;
.title {}
.input_box {
border: 1px solid #292929;
width: 450rpx;
::v-deep .fui-input__wrap {
padding: 10rpx !important;
height: 100%;
@ -834,6 +852,7 @@ export default {
}
}
}
.fui-btn__box {
padding: 40rpx 0;
display: flex;
@ -842,10 +861,27 @@ export default {
justify-content: center;
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>

22
pages/market/index/index.vue

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

5
pages/student/login/login.vue

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

9
uni.scss

@ -93,3 +93,12 @@ $font-size-paragraph: 30rpx;
$font-sm: 20rpx;
$font-color-999: #999;
$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>
<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 {
/* #ifndef APP-NVUE */
display: flex;

Loading…
Cancel
Save