7 changed files with 539 additions and 5 deletions
Split 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