7 changed files with 539 additions and 5 deletions
Unified View
Diff Options
-
5App.vue
-
15pages.json
-
231pages/add-record/index.vue
-
11pages/client-detail/basic-information.vue
-
177pages/follow-up-records/index.vue
-
18pages/follow-up-records/timeLine.vue
-
87pages/follow-up-records/timelineItem.vue
@ -0,0 +1,231 @@ |
|||||
|
<template> |
||||
|
<view class="warpper"> |
||||
|
<qnHeader class="header"> |
||||
|
<view class="header-title">跟进记录</view> |
||||
|
<view class="right-title">保存</view> |
||||
|
</qnHeader> |
||||
|
<view class="paper-price"> |
||||
|
<view class=""> |
||||
|
<view class="paper-price-image-title"> |
||||
|
<text class="add-paper-start"><uni-icons custom-prefix="iconfont" type="icon-required" size="14" color="#F5222D"></uni-icons></text> |
||||
|
<text class="add-paper-title">拜访对象</text> |
||||
|
</view> |
||||
|
<view class="paper-price-image"> |
||||
|
<qn-easyinput |
||||
|
class="paper-price-textArea bf-height" |
||||
|
:maxlength="200" |
||||
|
:styles="{ disableColor: '#F7F8FA' }" |
||||
|
v-model="form.remark" |
||||
|
:inputBorder="false" |
||||
|
type="textarea" |
||||
|
placeholder="请输入拜访对象" |
||||
|
></qn-easyinput> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class=""> |
||||
|
<view class="paper-price-image-title"> |
||||
|
<text class="add-paper-start"><uni-icons custom-prefix="iconfont" type="icon-required" size="14" color="#F5222D"></uni-icons></text> |
||||
|
<text class="add-paper-title">沟通记录</text> |
||||
|
</view> |
||||
|
<view class="paper-price-image"> |
||||
|
<qn-easyinput |
||||
|
class="paper-price-textArea gt-height" |
||||
|
:maxlength="200" |
||||
|
:styles="{ disableColor: '#F7F8FA' }" |
||||
|
v-model="form.remark" |
||||
|
:inputBorder="false" |
||||
|
type="textarea" |
||||
|
placeholder="请输入与客户的沟通记录" |
||||
|
></qn-easyinput> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class=""> |
||||
|
<view class="paper-price-image-title"> |
||||
|
<text class="add-paper-start"><uni-icons custom-prefix="iconfont" type="icon-required" size="14" color="#F5222D"></uni-icons></text> |
||||
|
<text class="add-paper-title">备注信息</text> |
||||
|
</view> |
||||
|
<view class="paper-price-image"> |
||||
|
<qn-easyinput |
||||
|
class="paper-price-textArea bf-height" |
||||
|
:maxlength="200" |
||||
|
:styles="{ disableColor: '#F7F8FA' }" |
||||
|
v-model="form.remark" |
||||
|
:inputBorder="false" |
||||
|
type="textarea" |
||||
|
placeholder="请输入备注" |
||||
|
></qn-easyinput> |
||||
|
<view class="location"> |
||||
|
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image> |
||||
|
<text class="text">广州市天河区</text> |
||||
|
<uni-icons size="16" type="bottom"></uni-icons> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import qnHeader from '@/components/qn-header/qn-header.vue' |
||||
|
export default { |
||||
|
components: {qnHeader}, |
||||
|
data() { |
||||
|
return { |
||||
|
form: {} |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss" scoped> |
||||
|
.warpper { |
||||
|
background-color: #ffffff; |
||||
|
height: 100%; |
||||
|
.header { |
||||
|
justify-content: space-between; |
||||
|
} |
||||
|
.header-title { |
||||
|
font-size: 36rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
text-align: center; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
|
||||
|
.right-title { |
||||
|
font-size: 28rpx; |
||||
|
color: #007aff; |
||||
|
text-align: center; |
||||
|
line-height: 40rpx; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.add-paper-start { |
||||
|
font-size: 28rpx; |
||||
|
color: #f5222d; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.add-paper-title { |
||||
|
font-size: 28rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 500; |
||||
|
} |
||||
|
.paper-price { |
||||
|
background-color: #ffffff; |
||||
|
padding: 20rpx 0rpx; |
||||
|
|
||||
|
.paper-price-form { |
||||
|
background: #f7f8fa; |
||||
|
border-radius: 8rpx; |
||||
|
margin: 22rpx 32rpx; |
||||
|
padding: 22rpx 32rpx; |
||||
|
line-height: 60rpx; |
||||
|
margin-bottom: 30rpx; |
||||
|
} |
||||
|
.paper-price-item { |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
align-items: center; |
||||
|
justify-content: space-between; |
||||
|
.flex { |
||||
|
display: flex; |
||||
|
margin-left: 4px; |
||||
|
align-items: center; |
||||
|
} |
||||
|
} |
||||
|
.delete-text { |
||||
|
font-size: 28rpx; |
||||
|
color: #f5222d; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.paper-price-main { |
||||
|
padding: 22rpx 32rpx; |
||||
|
height: 88rpx; |
||||
|
align-items: center; |
||||
|
border-bottom: 2rpx solid #dddddd; |
||||
|
} |
||||
|
.paper-price-image-title { |
||||
|
padding: 0rpx 32rpx; |
||||
|
align-items: center; |
||||
|
} |
||||
|
.paper-price-image { |
||||
|
padding: 16rpx 32rpx; |
||||
|
} |
||||
|
.paper-price-textArea { |
||||
|
background: #f7f8fa; |
||||
|
border-radius: 20rpx; |
||||
|
padding: 10rpx; |
||||
|
} |
||||
|
.paper-price-title { |
||||
|
font-size: 28rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 600; |
||||
|
} |
||||
|
.paper-price-subtitle { |
||||
|
font-size: 24rpx; |
||||
|
color: #888888; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.dian { |
||||
|
background: #adbac9; |
||||
|
width: 10rpx; |
||||
|
height: 10rpx; |
||||
|
border-radius: 50%; |
||||
|
// margin-top: 28rpx; |
||||
|
margin-right: 10rpx; |
||||
|
} |
||||
|
.label_text { |
||||
|
font-size: 28rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.label_value { |
||||
|
padding-bottom: 5rpx; |
||||
|
border-bottom: 2rpx solid #d8d8d8; |
||||
|
width: 65%; |
||||
|
text-align: right; |
||||
|
} |
||||
|
.label-select { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: flex-end; |
||||
|
} |
||||
|
.text-left { |
||||
|
margin-left: 10rpx; |
||||
|
} |
||||
|
.text-right { |
||||
|
margin-right: 10rpx; |
||||
|
} |
||||
|
} |
||||
|
.bf-height{ |
||||
|
height: 155rpx; |
||||
|
} |
||||
|
.gt-height { |
||||
|
height: 210rpx; |
||||
|
} |
||||
|
.location{ |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
align-items: center; |
||||
|
padding-top: 20rpx; |
||||
|
.icon { |
||||
|
width: 32rpx; |
||||
|
height: 32rpx; |
||||
|
} |
||||
|
.text{ |
||||
|
font-size: 26rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
font-weight: 400; |
||||
|
padding-left: 10rpx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,177 @@ |
|||||
|
<template> |
||||
|
<view class="warpper"> |
||||
|
<timeline> |
||||
|
<timelineItem v-for="(item, index) in 4" :key="index"> |
||||
|
<view class="time"> |
||||
|
2021年12月28日 12:30:45 |
||||
|
</view> |
||||
|
<view class="tripItem"> |
||||
|
<view class="row"> |
||||
|
<view class="title">跟进人:</view> |
||||
|
<view class="value">贾晓堂 18877799220</view> |
||||
|
</view> |
||||
|
<view class="row"> |
||||
|
<view class="title">拜访对象:</view> |
||||
|
<view class="value">张翼德 18826104989</view> |
||||
|
</view> |
||||
|
<view class="row"> |
||||
|
<view class="title">沟通内容:</view> |
||||
|
<view class="value">已经对该供应商进行了需求调研,并已经对纸掌柜产品进行推广,盘商表示愿意支付使用该产品</view> |
||||
|
</view> |
||||
|
<view class="row"> |
||||
|
<view class="title">备注信息:</view> |
||||
|
<view class="value">客户说希望有特色功能。</view> |
||||
|
</view> |
||||
|
<view class="row"> |
||||
|
<view class="title"></view> |
||||
|
<view class="value"> |
||||
|
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image> |
||||
|
<text class="location">广州市天河区</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
</view> |
||||
|
</timelineItem> |
||||
|
<view class="see-more"> |
||||
|
<text>查看更多</text> |
||||
|
<image class="icon" :src="!seemoreFlag ? '/static/imgs/client-detail/arrow-up-icon.png' : '/static/imgs/client-detail/arrow-down-icon.png'"></image> |
||||
|
</view> |
||||
|
</timeline> |
||||
|
<qn-footer fixed height="120rpx"> |
||||
|
<view class="button-area"> |
||||
|
<!-- <view class="button button__cancel" @click="back"> |
||||
|
<text class="text">取消</text> |
||||
|
</view> --> |
||||
|
<view class="button button__submit" @click="addTap"> |
||||
|
<text class="text" style="color: white">新增跟进</text> |
||||
|
</view> |
||||
|
</view> |
||||
|
</qn-footer> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
import timeline from './timeLine.vue' |
||||
|
import timelineItem from './timelineItem.vue' |
||||
|
import qnFooter from '@/components/qn-footer/qn-footer.vue' |
||||
|
import { go2 } from '@/utils/hook.js' |
||||
|
export default { |
||||
|
components: { |
||||
|
timeline, |
||||
|
timelineItem, |
||||
|
qnFooter |
||||
|
}, |
||||
|
data() { |
||||
|
return {} |
||||
|
}, |
||||
|
methods:{ |
||||
|
addTap() { |
||||
|
go2('add-record') |
||||
|
}, |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style lang="scss"> |
||||
|
.warpper { |
||||
|
background-color: #FFFFFF; |
||||
|
.time { |
||||
|
font-size: 26rpx; |
||||
|
color: #000000; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.tripItem { |
||||
|
margin-top: 20rpx; |
||||
|
// height: 140rpx; |
||||
|
padding: 20rpx 30rpx; |
||||
|
// height: 376rpx; |
||||
|
background: #F7F8FA; |
||||
|
border-radius: 8rpx; |
||||
|
.row { |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
padding: 16rpx 0rpx; |
||||
|
.title { |
||||
|
flex: 0 0 140rpx; |
||||
|
font-size: 28rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
} |
||||
|
.value { |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
flex: 1; |
||||
|
font-size: 28rpx; |
||||
|
color: #333333; |
||||
|
letter-spacing: 0; |
||||
|
font-weight: 400; |
||||
|
line-height: 1.3; |
||||
|
} |
||||
|
.icon { |
||||
|
width: 32rpx; |
||||
|
height: 32rpx; |
||||
|
} |
||||
|
.location{ |
||||
|
font-size: 26rpx; |
||||
|
color: #888888; |
||||
|
letter-spacing: 0; |
||||
|
text-align: left; |
||||
|
line-height: 32rpx; |
||||
|
font-weight: 400; |
||||
|
padding-left: 10rpx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.see-more { |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
padding-top: 20rpx; |
||||
|
background: #ffffff; |
||||
|
// border-top: 2rpx solid #dddddd; |
||||
|
// padding: 0rpx 32rpx; |
||||
|
font-size: 28rpx; |
||||
|
color: #007aff; |
||||
|
letter-spacing: 0; |
||||
|
text-align: center; |
||||
|
font-weight: 400; |
||||
|
.icon { |
||||
|
width: 24rpx; |
||||
|
height: 24rpx; |
||||
|
} |
||||
|
} |
||||
|
.button-area { |
||||
|
width: 750rpx; |
||||
|
padding: 0 32rpx; |
||||
|
display: flex; |
||||
|
flex-direction: row; |
||||
|
align-items: center; |
||||
|
// justify-content: space-between; |
||||
|
.button { |
||||
|
flex-grow: 0; |
||||
|
flex-shrink: 0; |
||||
|
display: flex; |
||||
|
align-items: center; |
||||
|
justify-content: center; |
||||
|
border-radius: 10rpx; |
||||
|
.text { |
||||
|
font-size: 30rpx; |
||||
|
font-weight: 500; |
||||
|
text-align: center; |
||||
|
} |
||||
|
} |
||||
|
.button__cancel { |
||||
|
width: 270rpx; |
||||
|
height: 88rpx; |
||||
|
border: 2rpx solid #979797; |
||||
|
} |
||||
|
.button__submit { |
||||
|
width: 100%; |
||||
|
height: 88rpx; |
||||
|
background: #007aff; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,18 @@ |
|||||
|
<template> |
||||
|
<view class="timeline"> |
||||
|
<slot></slot> |
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
components:{ |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="less"> |
||||
|
.timeline { |
||||
|
padding: 36rpx 32rpx 0rpx 45rpx; |
||||
|
} |
||||
|
</style> |
||||
@ -0,0 +1,87 @@ |
|||||
|
<template> |
||||
|
<view class="timelineItem"> |
||||
|
<view class="timeItem"> |
||||
|
<view class="leftTime"> |
||||
|
{{leftTime}} |
||||
|
</view> |
||||
|
<view class="line"> |
||||
|
<view class="out" :style="{background: color == '' ? '' : color}"> |
||||
|
<view class="inner" :style="{background: color == '' ? '' : color}"></view> |
||||
|
</view> |
||||
|
</view> |
||||
|
<view class="rightContent"> |
||||
|
<slot></slot> |
||||
|
</view> |
||||
|
</view> |
||||
|
|
||||
|
</view> |
||||
|
</template> |
||||
|
|
||||
|
<script> |
||||
|
export default { |
||||
|
props:{ |
||||
|
leftTime:{ |
||||
|
type:String, |
||||
|
default:'' |
||||
|
}, |
||||
|
color:{ |
||||
|
type:String, |
||||
|
default:'' |
||||
|
} |
||||
|
}, |
||||
|
data(){ |
||||
|
return { |
||||
|
|
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</script> |
||||
|
|
||||
|
<style scoped lang="less"> |
||||
|
.timelineItem { |
||||
|
.timeItem { |
||||
|
display: flex; |
||||
|
.leftTime { |
||||
|
// width: 45rpx; |
||||
|
// padding: 0 29rpx 0rpx 0rpx; |
||||
|
font-size:22rpx; |
||||
|
font-weight:500; |
||||
|
color:rgba(51,51,51,1); |
||||
|
// margin-right: 10rpx; |
||||
|
overflow: hidden; |
||||
|
text-overflow: ellipsis; |
||||
|
white-space: nowrap; |
||||
|
} |
||||
|
.line { |
||||
|
width: 4rpx; |
||||
|
background: #B2D7FF; |
||||
|
position: relative; |
||||
|
.out { |
||||
|
position: absolute; |
||||
|
top: 0; |
||||
|
left: 50%; |
||||
|
transform: translateX(-50%); |
||||
|
display: flex; |
||||
|
justify-content: center; |
||||
|
align-items: center; |
||||
|
width: 28rpx; |
||||
|
height: 28rpx; |
||||
|
background : #007AFF; |
||||
|
border-radius: 50%; |
||||
|
.inner { |
||||
|
width: 18rpx; |
||||
|
height: 18rpx; |
||||
|
background : #007AFF; |
||||
|
border-radius: 50%; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
.rightContent { |
||||
|
flex: 1; |
||||
|
padding: 0rpx 10rpx 16rpx 16rpx; |
||||
|
margin-left: 20rpx; |
||||
|
min-height: 50rpx; |
||||
|
} |
||||
|
} |
||||
|
} |
||||
|
</style> |
||||
Write
Preview
Loading…
Cancel
Save