AI销管
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

1315 regels
30 KiB

  1. <template>
  2. <view class="box">
  3. <view class="content">
  4. <view class="content-tips">
  5. <view class="content-first">
  6. <view class="left">
  7. <view v-if="customerInfo.level.length==0"></view>
  8. <view class="img A" v-else-if="customerInfo.level==1">A</view>
  9. <view class="img B" v-else-if="customerInfo.level==2">B</view>
  10. <view class="img C" v-else-if="customerInfo.level==3">C</view>
  11. <view class="img D" v-else-if="customerInfo.level==4">D</view>
  12. <view class="test">
  13. {{customerInfo.name || '--'}}
  14. <view v-if="customerInfo.clientStageName" class="clientStageName">{{ customerInfo.clientStageName }}</view>
  15. </view>
  16. <view class="edit" @click="goedit()" v-if="isHavePermission">
  17. <image class="screen-sel-img" src="../../../static/images/edit.png" mode=""></image>
  18. </view>
  19. </view>
  20. <!-- <view class="right">
  21. <view class="point"></view>
  22. <view class="test">定金</view>
  23. </view> -->
  24. </view>
  25. <view class="content-sec">
  26. <view class="content-sec-lab">
  27. 手机号码:<view class="content-sec-lab1">
  28. {{customerInfo.phone | phoneText}}
  29. </view>
  30. </view>
  31. <view class="content-sec-lab" @click.stop="tipupon">
  32. 客户标签:
  33. <text v-if="!customerInfo.demand.cusSemanticWordsList">暂无</text>
  34. <view v-else class="content-sec-tips"
  35. v-for="(che,ind) in customerInfo.demand.cusSemanticWordsList" :key='ind'>{{che.name}}</view>
  36. <view class="conmsg-msg-lab-img" v-if="customerInfo.demand.cusSemanticWordsList.length>0">
  37. <image class="screen-sel-img" src="../../../static/images/right.png" mode=""></image>
  38. </view>
  39. </view>
  40. <view class="content-sec-lab">
  41. 顾问姓名:<view class="content-sec-lab1">{{customerInfo.agentName}}</view>
  42. </view>
  43. <view class="content-sec-lab">
  44. 添加时间:<view class="content-sec-lab1">{{customerInfo.createTime}}</view>
  45. </view>
  46. <view class="content-sec-num">
  47. <view class="">{{customerInfo.visitRecord || '--'}}次到访</view>
  48. <view class="">{{customerInfo.fraction || '0'}}% | {{customerInfo.mm || '0'}}<text
  49. style="font-size: 24rpx;">min</text></view>
  50. </view>
  51. </view>
  52. <view class="content-last">
  53. <view class="content-last-con">
  54. 备注:{{customerInfo.remarks ? customerInfo.remarks : "暂无"}}
  55. </view>
  56. </view>
  57. </view>
  58. </view>
  59. <view class="tabchange">
  60. <view class="tab">
  61. <view class="tabbox">
  62. <view :class="{ activecllasscet: activeTotal == 0 }" @click="tabtimetap(0)">接待记录</view>
  63. </view>
  64. <view class="tabbox">
  65. <view :class="{ activecllasscet: activeTotal == 1 }" @click="tabtimetap(1)">跟进记录</view>
  66. </view>
  67. <view class="tabbox">
  68. <view :class="{ activecllasscet: activeTotal == 2 }" @click="tabtimetap(2)">执行率</view>
  69. </view>
  70. </view>
  71. <!-- 接待记录 -->
  72. <view class="tabactive1" v-if="activeTotal==0" style="min-height: 800rpx;">
  73. <view v-if="Thevisitingrecords.length==0"
  74. style="width: 100%;height: 100%;display: flex;align-items: center;">
  75. <view style="width: 100%;padding-top: 60rpx;">
  76. <view style="width: 100%;text-align: center;">
  77. <image style="width: 220rpx;height: 200rpx;"
  78. src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image>
  79. </view>
  80. <view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据</view>
  81. </view>
  82. </view>
  83. <view v-if="Thevisitingrecords.length!=0" class="content-tips"
  84. v-for="(item,index) in Thevisitingrecords" :key="index" @click="tapThevisiting(item)">
  85. <view class="content-first">
  86. <view class="left">
  87. <view class="name">{{item.agentName || '--'}}</view>
  88. <view class="status" v-if="item.replaceReception==1">代接待</view>
  89. </view>
  90. <!-- <view class="right">
  91. <view class="point"></view>
  92. <view class="">优秀案例</view>
  93. </view> -->
  94. </view>
  95. <view class="content-sec">
  96. <view class="left">
  97. <view class="cus" style="line-height: 46rpx;">客户:{{item.name || ''}} |</view>
  98. <view style="line-height: 46rpx;" class="arriveNum">{{item.visitRecord || '--'}}次到访</view>
  99. </view>
  100. <view class="right">{{item.fraction || '0'}}%</view>
  101. </view>
  102. <view class="content-last">{{item.createTime}} | {{item.mm || '--'}}min</view>
  103. </view>
  104. </view>
  105. <!-- 跟进记录 -->
  106. <view class="tabactive2" v-if="activeTotal==1" style="min-height: 600rpx;">
  107. <view v-if="fllowList.length==0"
  108. style="width: 100%;height:600rpx;display: flex;align-items: center;background-color: #FFFFFF;">
  109. <view style="width: 100%;padding-top: 60rpx;">
  110. <view style="width: 100%;text-align: center;">
  111. <image style="width: 220rpx;height: 200rpx;"
  112. src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image>
  113. </view>
  114. <view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据</view>
  115. </view>
  116. </view>
  117. <view v-if="fllowList.length!=0" class="tab2-tips" v-for="(item,index) in fllowList" :key="index">
  118. <view class="tab2-first">
  119. <view class="tab2-first-1">
  120. <view class="tab2-first-left">
  121. <view class="img">{{item.agentName.slice(0,1) || '--'}}</view>
  122. <view class="name">{{item.agentName || '||'}}</view>
  123. <view v-if="item.clientStageName" class="clientStageName">{{ item.clientStageName }}</view>
  124. </view>
  125. <view class="tab2-first-right">{{item.createTime}}</view>
  126. </view>
  127. <view class="tab2-first-foot">跟进内容:{{item.remarks || '暂无'}}</view>
  128. </view>
  129. <!-- <view class="tab2-sec">
  130. <view class="tab-sec-edit">编辑记录</view>
  131. </view> -->
  132. </view>
  133. </view>
  134. <!-- 评分 -->
  135. <view class="ratecenter" v-if="activeTotal==2">
  136. <view class="ratetetle">执行总览</view>
  137. <view class="rateyuanbox">
  138. <view class="rateyuanboxzuo">
  139. <view class="boxzuoview cccccc">{{customerInfo.visitRecord || '--'}}次</view>
  140. <view style="color: #333333;font-size: 28rpx;font-weight: 400;text-align: center;">接待次数</view>
  141. </view>
  142. <view class="rateyuanboxyou">
  143. <view class="boxzuoview" style="width: 100%;display: flex;justify-content: center;">
  144. <u-circle-progress active-color="#4FC78F" width='139' :percent="customerInfo.fraction">
  145. <view style="text-align: center;color: #4FC78F;">{{customerInfo.fraction}}%</view>
  146. </u-circle-progress>
  147. </view>
  148. <view style="color: #333333;font-size: 28rpx;font-weight: 400;text-align: center;">销讲执行率</view>
  149. </view>
  150. <view class="rateyuanboxzuo">
  151. <view class="boxzuoview cccccc">{{customerInfo.mm}}min</view>
  152. <view style="color: #333333;font-size: 28rpx;font-weight: 400;text-align: center;">接待时长</view>
  153. </view>
  154. </view>
  155. <view
  156. style="width: 100%;height: 80rpx;border-bottom: 1rpx solid #E0E0E0;display: flex;align-items: center;">
  157. <view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 20rpx;">指标</view>
  158. <view style="flex: 1;font-size: 28rpx;color: #333333;font-weight: 600;text-indent: 170rpx;">执行率
  159. </view>
  160. </view>
  161. <view v-if="ratelist.length==0" style="width: 100%;height: 100%;display: flex;align-items: center;">
  162. <view style="width: 100%;padding-top: 60rpx;">
  163. <view style="width: 100%;text-align: center;">
  164. <image style="width: 220rpx;height: 200rpx;"
  165. src="https://static.quhouse.com/zhikong_xcx_img/nodatalist.png" mode=""></image>
  166. </view>
  167. <view style="text-align: center;width: 100%;margin-top: 20rpx;color: #999999;">暂无数据</view>
  168. </view>
  169. </view>
  170. <view class="Level-box" v-if="ratelist.length!=0" v-for="(item,index) in ratelist" :key="index">
  171. <view class="Level1che" @click="changeshow(item,1)">
  172. <view class="title1">{{item.name}}</view>
  173. <view class="leve1-jindu">
  174. <view class="jindutiao">
  175. <view class="huanxing" :style="{width: item.ratepercent/item.rate*100+'%'}"></view>
  176. <view class="text">{{((item.ratepercent/item.rate).toFixed(2)*100).toFixed()}}%</view>
  177. </view>
  178. </view>
  179. <view class="jiantobox">
  180. <image v-if="!item.show" class="arrow rotatearrow" src="/static/images/down.png" mode="" />
  181. <image v-else class="arrow" src="/static/images/up.png" mode="" />
  182. </view>
  183. </view>
  184. <view class="hhhbox" v-if="item.show" v-for="(subitem,i) in item.children" :key="i">
  185. <view class="Level2che" @click="changeshow2(subitem,1)">
  186. <view class="title1">{{subitem.name}}</view>
  187. <view class="leve1-jindu">
  188. <view class="zhixing" v-if="!subitem.selected">已执行</view>
  189. <view class="zhixing2" v-else>未执行 {{ subitem.selected }}</view>
  190. </view>
  191. <view class="jiantobox">
  192. <image v-if="!subitem.show" class="arrow rotatearrow" src="/static/images/down.png"
  193. mode="" />
  194. <image v-else class="arrow" src="/static/images/up.png" mode="" />
  195. </view>
  196. </view>
  197. <view class="hsnrtest" v-if="subitem.show">话术内容</view>
  198. <view class="Level3che" @tap="clickaudeopal(che)" v-if="subitem.show"
  199. v-for="(che,inc) in subitem.children" :key='inc'>
  200. <view class="title1">{{inc+1}}.{{che.name}}</view>
  201. <view class="jiantobox">
  202. <image v-if="che.selected==0" class="arrow" src="/static/images/rate-checked.png"
  203. mode="" />
  204. </view>
  205. </view>
  206. <view v-if="subitem.show" style="width: 100%;height: 30rpx;"></view>
  207. </view>
  208. </view>
  209. </view>
  210. </view>
  211. <view class="pon-foot" v-if="buttonisshow">
  212. <!-- <view class="foot-tab" @click="goRemind">添加提醒</view> -->
  213. <!-- <view class="foot-tab">拨打电话</view> -->
  214. <view class="foot-tab" @click="followRecordAdd()">写跟进</view>
  215. </view>
  216. <!-- closeable -->
  217. <u-popup v-model="tipshow" mode="center" width="500rpx" height="500rpx" closeable>
  218. <scroll-view scroll-y="true" style="height: 440rpx;">
  219. <view style="margin-top: 60rpx; display: flex; flex-wrap: wrap; padding-left: 20rpx;">
  220. <view class="upon-sec-tips" v-for="(item,index) in customerInfo.demand.cusSemanticWords"
  221. :key="index">
  222. {{item.name}}
  223. </view>
  224. </view>
  225. </scroll-view>
  226. </u-popup>
  227. </view>
  228. </template>
  229. <script>
  230. let _this
  231. export default {
  232. data() {
  233. return {
  234. activeTotal: 0,
  235. customerId: '',
  236. tipshow: false,
  237. customerInfo: {
  238. name: '',
  239. createTime: '',
  240. agentName: ''
  241. },
  242. Thevisitingrecords: [],
  243. totalRate: [],
  244. ratelist: [],
  245. fllowList: [],
  246. userInfo: {},
  247. buttonisshow: false,
  248. isHavePermission: false
  249. }
  250. },
  251. onLoad(options) {
  252. this.customerId = options.id;
  253. _this = this
  254. },
  255. onShow() {
  256. this.$store.commit('stopAduio')
  257. this.userInfo = uni.getStorageSync('weapp_session_userInfo_data');
  258. console.log(this.userInfo.showPhoneStatus)
  259. if (this.userInfo.dataCode == 6) {
  260. this.buttonisshow = true;
  261. } else {
  262. this.buttonisshow = false
  263. }
  264. this.getCustomerInfo()
  265. this.tabtimetap(0)
  266. let newmenulist = uni.getStorageSync('weapp_session_Menu_data');
  267. if (newmenulist.khgl_bj == true || newmenulist.khgl_gj == true) {
  268. this.isHavePermission = true
  269. }
  270. },
  271. methods: {
  272. // 获取到访记录
  273. getVisitList() {
  274. this.$u.get("/customer/findByPhoneAndProject?id=" + this.customerId, ).then(res => {
  275. this.Thevisitingrecords = res
  276. })
  277. },
  278. // 获取客户信息
  279. getCustomerInfo() {
  280. const that = this;
  281. this.$u.get("/customer/findById", {
  282. id: this.customerId
  283. }).then(res => {
  284. if (res.fraction == null) {
  285. res.fraction = '0';
  286. }
  287. if (res.demand.cusSemanticWordsList != null) {
  288. res.demand.cusSemanticWords = res.demand.cusSemanticWordsList
  289. res.demand.cusSemanticWordsList.forEach(che => {
  290. if (che.isInterval == 0) {
  291. che.name = che.name + che.unit + '-' + che.endName + che.unit;
  292. }
  293. })
  294. res.demand.cusSemanticWordsList = res.demand.cusSemanticWordsList.slice(0, 3)
  295. }
  296. // console.log(res.demand.cusSemanticWords,'关键字')
  297. this.customerInfo = res;
  298. })
  299. },
  300. tabtimetap(idx) {
  301. this.activeTotal = idx
  302. if (idx == 0) {
  303. this.getVisitList()
  304. } else if (idx == 1) {
  305. this.getFollowList()
  306. } else {
  307. this.getRatelist()
  308. }
  309. },
  310. tapThevisiting(item) {
  311. console.log("11111111111111")
  312. uni.showLoading({
  313. title: '加载中',
  314. mask: true
  315. });
  316. if (item.yon != 0) {
  317. setTimeout(function() {
  318. uni.hideLoading();
  319. }, 2000);
  320. uni.showToast({
  321. icon: 'none',
  322. title: '暂无录音',
  323. duration: 2000
  324. });
  325. return
  326. } else {
  327. const parames = {
  328. pageNum: 1,
  329. pageSize: 100,
  330. query: {
  331. customerId: item.id,
  332. }
  333. }
  334. var item = {
  335. bg: 0,
  336. customerId: item.id,
  337. id: ''
  338. }
  339. uni.setStorageSync("entrance", 1); //写入缓存
  340. uni.setStorageSync("searchobj", item); //写入缓存
  341. this.$u.post("/corpus/findByPage", parames).then(res => {
  342. setTimeout(function() {
  343. uni.hideLoading();
  344. }, 2000);
  345. if (res == null) {
  346. uni.showToast({
  347. icon: "none",
  348. title: "暂无音频"
  349. })
  350. return
  351. }
  352. if (res[0].merge == 0) {
  353. let newobj = res[0];
  354. uni.navigateTo({
  355. url: `/pages/mine/details2?customerId=${newobj.customerId}&status=${newobj.status}&stateisshow=${"2"}`
  356. })
  357. } else {
  358. let newobj = res[0];
  359. uni.navigateTo({
  360. url: `/pages/mine/details?customerId=${newobj.customerId}&status=${newobj.status}&stateisshow=${"1"}`
  361. })
  362. }
  363. })
  364. }
  365. },
  366. // 获取跟进记录
  367. getFollowList() {
  368. this.fllowList = [];
  369. this.$u.post("/customer/getCusStage", {
  370. customerId: this.customerId
  371. }).then(res => {
  372. res.forEach(item => {
  373. item.agentName = this.customerInfo.agentName
  374. })
  375. this.fllowList = res;
  376. })
  377. },
  378. // 新增跟进
  379. followRecordAdd() {
  380. uni.navigateTo({
  381. url: `/pages/center/consumer/newFollowup/newFollowup?id=${this.customerId}&level=${this.customerInfo.level}&clientStageName=${this.customerInfo.clientStageName}`
  382. })
  383. },
  384. // 去编辑
  385. goedit() {
  386. let newmenulist = uni.getStorageSync('weapp_session_Menu_data');
  387. if (newmenulist.khgl_bj == true || newmenulist.khgl_gj) {
  388. uni.navigateTo({
  389. url: `/pages/center/consumer/edit?id=${this.customerId}`
  390. })
  391. }
  392. },
  393. // 去添加提醒
  394. goRemind() {
  395. uni.navigateTo({
  396. url: `/pages/center/consumer/remind?str=${this.customerInfo.name+'/'+this.customerInfo.phone}&customerId=${this.customerId}`
  397. })
  398. },
  399. //评分点击
  400. clickaudeopal(item) {
  401. if (item.selected == 0) {
  402. uni.navigateTo({
  403. url: '/pages/mine/ScoringPlaylist?customerId=' + this.customerId + "&id=" + item
  404. .marketingId + "&type=0"
  405. })
  406. }
  407. },
  408. tipupon() {
  409. if (!this.customerInfo.demand.cusSemanticWordsList) return
  410. this.tipshow = true
  411. },
  412. changeshow(item, type) {
  413. item.show = !item.show
  414. },
  415. changeshow2(item, type) {
  416. item.show = !item.show
  417. },
  418. // 获取评分
  419. getRatelist() {
  420. this.$u.get("/customer/findzkMByCusId", {
  421. cusId: this.customerId
  422. }).then(res => {
  423. if (res.length) {
  424. let level1 = []
  425. res.forEach(item => {
  426. if (item.pid == 0) {
  427. level1.push({
  428. id: item.marketingId,
  429. rate: item.fraction,
  430. name: item.name,
  431. sort: item.sort,
  432. show: false,
  433. ratepercent: 0,
  434. children: []
  435. })
  436. }
  437. })
  438. // this.totalRate = level2rate;
  439. res.forEach(subitem => {
  440. let subitempid = subitem.pid
  441. level1.forEach(item => {
  442. if (subitempid == item.id) {
  443. if (subitem.selected == 0) {
  444. item.ratepercent += subitem.fraction
  445. }
  446. item.children.push({
  447. id: subitem.id,
  448. rate: subitem.fraction,
  449. selected: subitem.selected,
  450. name: subitem.name,
  451. show: false,
  452. marketingId: subitem.marketingId,
  453. children: []
  454. })
  455. }
  456. })
  457. })
  458. res.forEach(subitem => {
  459. let subitempid = subitem.pid
  460. level1.forEach(chen => {
  461. chen.children.forEach(zxc => {
  462. if (subitempid == zxc.marketingId) {
  463. zxc.children.push({
  464. id: subitem.id,
  465. rate: subitem.fraction,
  466. selected: subitem.selected,
  467. name: subitem.name,
  468. marketingId: subitem.marketingId,
  469. })
  470. }
  471. })
  472. })
  473. })
  474. level1[0].show = true;
  475. level1[0].children[0].show = true;
  476. this.ratelist = level1
  477. }
  478. })
  479. },
  480. },
  481. filters: {
  482. // 加密手机
  483. phoneText(mobile) {
  484. if (!mobile) return '--'
  485. if (_this.userInfo.showPhoneStatus == 1) return mobile.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
  486. else return mobile
  487. },
  488. }
  489. }
  490. </script>
  491. <style lang="scss" scoped>
  492. .rotatearrow {
  493. transform: rotate(270deg);
  494. }
  495. // 评分
  496. .rate-box {
  497. padding: 10rpx 20rpx;
  498. background-color: #FFFFFF;
  499. .date {
  500. width: 300rpx;
  501. height: 33rpx;
  502. font-size: 24rpx;
  503. font-weight: 400;
  504. color: #333333;
  505. line-height: 33rpx;
  506. letter-spacing: 1rpx;
  507. margin-bottom: 8rpx;
  508. }
  509. .title {
  510. width: 100%;
  511. height: 42rpx;
  512. font-size: 30rpx;
  513. font-weight: 500;
  514. color: #333333;
  515. line-height: 42rpx;
  516. letter-spacing: 2rpx;
  517. margin-bottom: 20rpx;
  518. }
  519. .level1 {
  520. display: flex;
  521. align-items: center;
  522. .level-name {
  523. width: 104rpx;
  524. height: 33rpx;
  525. font-size: 24rpx;
  526. font-weight: 500;
  527. color: #333333;
  528. line-height: 33rpx;
  529. letter-spacing: 1rpx;
  530. margin-right: 10rpx;
  531. }
  532. .level-progress {
  533. flex: 1;
  534. border-radius: 11rpx;
  535. height: 21rpx;
  536. background-color: #BEE4FF;
  537. position: relative;
  538. .color {
  539. width: 0;
  540. position: absolute;
  541. top: 0;
  542. left: 0;
  543. height: 21rpx;
  544. border-radius: 11rpx 0 0 11rpx;
  545. background-color: #008EF2;
  546. }
  547. }
  548. .level-rate {
  549. width: 65rpx;
  550. height: 33rpx;
  551. font-size: 24rpx;
  552. font-weight: 500;
  553. color: #333333;
  554. line-height: 33rpx;
  555. letter-spacing: 1rpx;
  556. margin: 0 20rpx 0 15rpx;
  557. }
  558. .arrow {
  559. width: 37rpx;
  560. height: 21rpx;
  561. padding: 5rpx 20rpx;
  562. }
  563. .rotatearrow {
  564. transform: rotate(270deg);
  565. }
  566. }
  567. .level1-subbox {
  568. display: flex;
  569. margin-top: 20rpx;
  570. flex-wrap: wrap;
  571. .sub-name {
  572. width: 50%;
  573. display: flex;
  574. margin-bottom: 18rpx;
  575. .subitem-name {
  576. width: 104rpx;
  577. height: 33rpx;
  578. font-size: 24rpx;
  579. font-weight: 400;
  580. color: #999999;
  581. line-height: 33rpx;
  582. letter-spacing: 1rpx;
  583. margin-right: 12rpx;
  584. }
  585. .checkimg {
  586. width: 27rpx;
  587. height: 27rpx;
  588. }
  589. }
  590. }
  591. }
  592. .Level-box {
  593. padding-bottom: 2rpx;
  594. .hhhbox {
  595. width: 100%;
  596. padding-left: 30rpx;
  597. padding-right: 30rpx;
  598. border-bottom: 1rpx solid #E0E0E0;
  599. background: #FFFFFF;
  600. // padding-bottom: 32rpx;
  601. .hsnrtest {
  602. height: 24rpx;
  603. font-size: 24rpx;
  604. font-weight: 400;
  605. color: #666666;
  606. line-height: 24rpx;
  607. }
  608. .Level3che {
  609. width: 100%;
  610. height: 28rpx;
  611. display: flex;
  612. line-height: 28rpx;
  613. align-items: center;
  614. margin-top: 30rpx;
  615. .title1 {
  616. flex: 1;
  617. font-size: 28rpx;
  618. color: #2671E2;
  619. font-weight: 400;
  620. }
  621. .jiantobox {
  622. width: 30rpx;
  623. height: 30rpx;
  624. display: flex;
  625. align-items: center;
  626. .arrow {
  627. width: 28rpx;
  628. height: 28rpx;
  629. }
  630. }
  631. }
  632. }
  633. .Level2che {
  634. width: 100%;
  635. height: 88rpx;
  636. display: flex;
  637. line-height: 88rpx;
  638. align-items: center;
  639. .title1 {
  640. flex: 2;
  641. font-size: 28rpx;
  642. color: #333333;
  643. font-weight: 400;
  644. }
  645. .leve1-jindu {
  646. flex: 3;
  647. display: flex;
  648. justify-content: center;
  649. align-items: center;
  650. .zhixing {
  651. width: 108rpx;
  652. height: 44rpx;
  653. background: #2671E2;
  654. border-radius: 4rpx;
  655. font-size: 28rpx;
  656. text-align: center;
  657. line-height: 44rpx;
  658. color: #FFFFFF;
  659. }
  660. .zhixing2 {
  661. width: 108rpx;
  662. height: 44rpx;
  663. background: #F8F8F8;
  664. border-radius: 4rpx;
  665. font-size: 28rpx;
  666. text-align: center;
  667. line-height: 44rpx;
  668. color: #999999;
  669. }
  670. }
  671. .jiantobox {
  672. width: 30rpx;
  673. height: 30rpx;
  674. display: flex;
  675. align-items: center;
  676. .arrow {
  677. width: 30rpx;
  678. height: 18rpx;
  679. }
  680. }
  681. }
  682. .Level1che {
  683. width: 100%;
  684. height: 94rpx;
  685. background: #F5F5F5;
  686. display: flex;
  687. line-height: 94rpx;
  688. align-items: center;
  689. padding-left: 30rpx;
  690. padding-right: 30rpx;
  691. .title1 {
  692. flex: 2;
  693. font-size: 30rpx;
  694. color: #333333;
  695. font-weight: 400;
  696. }
  697. .leve1-jindu {
  698. flex: 3;
  699. .jindutiao {
  700. width: 96%;
  701. height: 28rpx;
  702. background: #D5EEE2;
  703. line-height: 28rpx;
  704. border-radius: 14rpx;
  705. position: relative;
  706. .huanxing {
  707. height: 100%;
  708. background: #4FC78F;
  709. border-radius: 14rpx;
  710. }
  711. .text {
  712. position: absolute;
  713. top: 0rpx;
  714. right: 0rpx;
  715. font-size: 28rpx;
  716. font-weight: 400;
  717. color: #333333;
  718. }
  719. }
  720. }
  721. .jiantobox {
  722. width: 30rpx;
  723. height: 30rpx;
  724. display: flex;
  725. align-items: center;
  726. .arrow {
  727. width: 30rpx;
  728. height: 18rpx;
  729. }
  730. }
  731. }
  732. }
  733. .cccccc {
  734. text-align: center;
  735. height: 140rpx;
  736. line-height: 140rpx;
  737. font-size: 30rpx;
  738. }
  739. .ratecenter {
  740. background-color: #FFFFFF;
  741. padding-bottom: 30rpx;
  742. width: 100%;
  743. .ratetetle {
  744. padding: 30rpx;
  745. font-size: 30rpx;
  746. font-weight: 400;
  747. color: #333333;
  748. padding-bottom: 6rpx;
  749. }
  750. .rateyuanbox {
  751. width: 100%;
  752. height: 210rpx;
  753. padding-bottom: 30rpx;
  754. border-bottom: 1rpx solid #E0E0E0;
  755. display: flex;
  756. padding-left: 80rpx;
  757. padding-right: 80rpx;
  758. .rateyuanboxzuo {
  759. width: 30%;
  760. height: 100%;
  761. }
  762. .rateyuanboxyou {
  763. width: 40%;
  764. height: 100%;
  765. }
  766. .boxzuoview {
  767. width: 100%;
  768. height: 140rpx;
  769. }
  770. }
  771. }
  772. .box {
  773. width: 100%;
  774. height: 100%;
  775. background: #F8F8F8;
  776. }
  777. .tab {
  778. height: 88rpx;
  779. border-bottom: 1px solid #E0E0E0;
  780. background: #FFFFFF;
  781. display: flex;
  782. align-items: center;
  783. .tabbox {
  784. flex: 1;
  785. height: 100%;
  786. text-align: center;
  787. line-height: 92rpx;
  788. color: #666666;
  789. font-size: 28rpx;
  790. display: flex;
  791. justify-content: center;
  792. .activecllasscet {
  793. border-bottom: 2px solid #2671E2;
  794. color: #2671E2;
  795. font-weight: 600;
  796. }
  797. }
  798. }
  799. .content {
  800. // height: 1000rpx;/
  801. overflow: hidden;
  802. border-top: 1px solid #E0E0E0;
  803. .content-tips {
  804. background: #fff;
  805. // box-sizing: border-box;
  806. margin-bottom: 20rpx;
  807. overflow: hidden;
  808. .content-first {
  809. padding: 19rpx 30rpx;
  810. display: flex;
  811. justify-content: space-between;
  812. box-sizing: border-box;
  813. // border-top: 1px solid #E0E0E0;
  814. font-weight: 400;
  815. color: #292929;
  816. height: 90rpx;
  817. font-size: 30rpx;
  818. line-height: 30rpx;
  819. .left {
  820. flex-grow: 1;
  821. display: flex;
  822. align-items: center;
  823. justify-content: space-between;
  824. .img {
  825. flex-shrink: 0;
  826. width: 52rpx;
  827. height: 52rpx;
  828. border: 1px solid #E0E0E0;
  829. border-radius: 50%;
  830. text-align: center;
  831. line-height: 50rpx;
  832. margin-right: 20rpx;
  833. }
  834. .test {
  835. flex-grow: 1;
  836. font-weight: 500;
  837. color: #333333;
  838. display: flex;
  839. align-items: center;
  840. .clientStageName {
  841. margin-left: 20rpx;
  842. padding: 5rpx 20rpx;
  843. border: 1px solid #F29819;
  844. border-radius: 32rpx 32rpx 32rpx 0;
  845. color: #F29819;
  846. font-size: 20rpx;
  847. }
  848. }
  849. .edit {
  850. flex-shrink: 0;
  851. height: 40rpx;
  852. width: 40rpx;
  853. margin-left: 30rpx;
  854. image {
  855. width: 100%;
  856. height: 100%;
  857. }
  858. }
  859. }
  860. .right {
  861. display: flex;
  862. .point {
  863. width: 12rpx;
  864. height: 12rpx;
  865. background: #2B6EFF;
  866. border-radius: 50%;
  867. margin-right: 9rpx;
  868. margin-top: 20rpx;
  869. }
  870. .test {
  871. margin-top: 11rpx;
  872. }
  873. }
  874. }
  875. .content-sec {
  876. border-top: 1px solid #E0E0E0;
  877. padding: 0 30rpx;
  878. height: 270rpx;
  879. position: relative;
  880. .content-sec-lab {
  881. margin-top: 30rpx;
  882. display: flex;
  883. font-size: 30rpx;
  884. font-weight: 400;
  885. color: #666666;
  886. line-height: 46rpx;
  887. .content-sec-lab1 {
  888. color: #333333;
  889. }
  890. .content-sec-tips {
  891. max-width: 120rpx;
  892. height: 46rpx;
  893. background: #F2F2F2;
  894. border-radius: 6rpx;
  895. text-align: center;
  896. line-height: 26rpx;
  897. overflow: hidden;
  898. text-overflow: ellipsis;
  899. white-space: nowrap;
  900. font-size: 26rpx;
  901. font-weight: 400;
  902. color: #333333;
  903. margin-right: 20rpx;
  904. box-sizing: border-box;
  905. padding: 10rpx 24rpx;
  906. }
  907. }
  908. .content-sec-num {
  909. position: absolute;
  910. width: 200rpx;
  911. height: 90rpx;
  912. background: #F4F8FD;
  913. border-radius: 12rpx;
  914. font-weight: 400;
  915. color: #2671E2;
  916. line-height: 45rpx;
  917. bottom: 15rpx;
  918. right: 30rpx;
  919. text-align: center;
  920. }
  921. }
  922. .content-last {
  923. padding: 30rpx;
  924. height: 168rpx;
  925. .content-last-con {
  926. width: 690rpx;
  927. height: 108rpx;
  928. background: #F8F8F8;
  929. border-radius: 8rpx;
  930. padding: 14rpx 20rpx;
  931. font-size: 28rpx;
  932. font-weight: 400;
  933. color: #333333;
  934. line-height: 40rpx;
  935. }
  936. }
  937. }
  938. }
  939. .tabchange {
  940. // background: #FFFFFF;
  941. overflow: hidden;
  942. .tabactive1 {
  943. padding-bottom: 100rpx;
  944. .content-tips {
  945. background: #fff;
  946. padding: 0 30rpx;
  947. box-sizing: border-box;
  948. overflow: hidden;
  949. margin-bottom: 20rpx;
  950. .content-first {
  951. margin-top: 19rpx;
  952. display: flex;
  953. justify-content: space-between;
  954. .left {
  955. display: flex;
  956. .img {
  957. width: 52rpx;
  958. height: 52rpx;
  959. background: #FFFFFF;
  960. border: 1px solid #C9C9C9;
  961. border-radius: 50%;
  962. text-align: center;
  963. line-height: 52rpx;
  964. margin-right: 20rpx;
  965. }
  966. .name {
  967. font-weight: 600;
  968. color: #333333;
  969. // margin-left: 20rpx;
  970. margin-top: 11rpx;
  971. }
  972. .status {
  973. width: 110rpx;
  974. height: 42rpx;
  975. background: #FFF9F5;
  976. border-radius: 4rpx;
  977. font-size: 26rpx;
  978. font-weight: 400;
  979. color: #EC8D49;
  980. line-height: 42rpx;
  981. text-align: center;
  982. margin-left: 19rpx;
  983. margin-top: 11rpx;
  984. }
  985. }
  986. .right {
  987. display: flex;
  988. margin-top: 11rpx;
  989. .point {
  990. width: 12rpx;
  991. height: 12rpx;
  992. background: #2B6EFF;
  993. border-radius: 50%;
  994. margin-right: 9rpx;
  995. margin-top: 16rpx;
  996. }
  997. }
  998. }
  999. .content-sec {
  1000. display: flex;
  1001. justify-content: space-between;
  1002. margin-top: 19rpx;
  1003. .left {
  1004. display: flex;
  1005. .cus {
  1006. font-size: 30rpx;
  1007. font-weight: 400;
  1008. color: #666666;
  1009. line-height: 30rpx;
  1010. }
  1011. .arriveNum {
  1012. font-size: 30rpx;
  1013. font-weight: 400;
  1014. line-height: 30rpx;
  1015. margin-left: 10rpx;
  1016. }
  1017. }
  1018. .right {
  1019. width: 192rpx;
  1020. height: 46rpx;
  1021. background: #F4F8FD;
  1022. border-radius: 6rpx;
  1023. text-align: center;
  1024. line-height: 46rpx;
  1025. font-weight: 400;
  1026. color: #2671E2;
  1027. }
  1028. }
  1029. .content-last {
  1030. margin: 30rpx 0;
  1031. font-size: 30rpx;
  1032. font-weight: 400;
  1033. color: #666666;
  1034. line-height: 30rpx;
  1035. }
  1036. }
  1037. }
  1038. .tabactive2 {
  1039. .tab2-tips {
  1040. background: #fff;
  1041. // height: 270rpx;
  1042. overflow: auto;
  1043. margin-bottom: 20rpx;
  1044. .tab2-first {
  1045. // height: 150rpx;
  1046. border-bottom: 1px solid #E0E0E0;
  1047. padding: 0 30rpx;
  1048. margin-top: 19rpx;
  1049. box-sizing: border-box;
  1050. .tab2-first-1 {
  1051. display: flex;
  1052. justify-content: space-between;
  1053. // height: 75rpx;
  1054. .tab2-first-left {
  1055. display: flex;
  1056. align-items: center;
  1057. .img {
  1058. width: 52rpx;
  1059. height: 52rpx;
  1060. background: #FFFFFF;
  1061. border: 1px solid #C9C9C9;
  1062. border-radius: 50%;
  1063. text-align: center;
  1064. line-height: 52rpx;
  1065. }
  1066. .name {
  1067. font-weight: 600;
  1068. color: #333333;
  1069. margin-left: 20rpx;
  1070. }
  1071. .clientStageName {
  1072. margin-left: 20rpx;
  1073. padding: 5rpx 20rpx;
  1074. border: 1px solid #F29819;
  1075. border-radius: 32rpx 32rpx 32rpx 0;
  1076. color: #F29819;
  1077. font-size: 20rpx;
  1078. }
  1079. }
  1080. .tab2-first-right {
  1081. font-size: 30rpx;
  1082. font-weight: 400;
  1083. color: #666666;
  1084. margin-top: 11rpx;
  1085. }
  1086. }
  1087. .tab2-first-foot {
  1088. margin-top: 19rpx;
  1089. margin-bottom: 30rpx;
  1090. font-size: 30rpx;
  1091. font-weight: 400;
  1092. color: #666666;
  1093. line-height: 30rpx;
  1094. }
  1095. }
  1096. .tab2-sec {
  1097. height: 120rpx;
  1098. padding: 30rpx;
  1099. float: right;
  1100. .tab-sec-edit {
  1101. width: 156rpx;
  1102. height: 60rpx;
  1103. background: #FFFFFF;
  1104. border-radius: 4px;
  1105. border: 1px solid #2671E2;
  1106. text-align: center;
  1107. line-height: 60rpx;
  1108. font-weight: 400;
  1109. color: #2671E2;
  1110. }
  1111. }
  1112. }
  1113. }
  1114. }
  1115. .pon-foot {
  1116. position: fixed;
  1117. width: 750rpx;
  1118. height: 100rpx;
  1119. background: #FFFFFF;
  1120. box-shadow: 0px -2rpx 8rpx 0rpx rgba(224, 224, 224, 0.5);
  1121. bottom: 0;
  1122. display: flex;
  1123. justify-content: space-around;
  1124. align-items: center;
  1125. // padding-top: 24rpx;
  1126. box-sizing: border-box;
  1127. // padding: ;
  1128. .foot-tab {
  1129. text-align: center;
  1130. width: 270rpx;
  1131. height: 70rpx;
  1132. line-height: 70rpx;
  1133. background: #2671E2;
  1134. box-shadow: 0px -2rpx 8rpx 0px rgba(224, 224, 224, 0.5);
  1135. border-radius: 6rpx;
  1136. font-size: 30rpx;
  1137. font-weight: 400;
  1138. color: #FFFFFF;
  1139. }
  1140. }
  1141. .upon-sec-tips {
  1142. // max-width:120rpx ;
  1143. height: 46rpx;
  1144. background: #F2F2F2;
  1145. border-radius: 6rpx;
  1146. text-align: center;
  1147. line-height: 26rpx;
  1148. overflow: hidden;
  1149. text-overflow: ellipsis;
  1150. white-space: nowrap;
  1151. font-size: 26rpx;
  1152. font-weight: 400;
  1153. color: #333333;
  1154. margin-right: 20rpx;
  1155. margin-top: 20rpx;
  1156. box-sizing: border-box;
  1157. padding: 10rpx 24rpx;
  1158. }
  1159. .conmsg-msg-lab-img {
  1160. width: 14rpx;
  1161. height: 30rpx;
  1162. margin-top: 6rpx;
  1163. margin-left: auto;
  1164. image {
  1165. width: 100%;
  1166. height: 100%;
  1167. }
  1168. }
  1169. .A {
  1170. color: #FFF;
  1171. background: #19AC09;
  1172. border: 1px solid #19AC09 !important;
  1173. }
  1174. .B {
  1175. color: #FFF;
  1176. background: #F29819;
  1177. border: 1px solid #F29819 !important;
  1178. }
  1179. .C {
  1180. color: #FFF;
  1181. background: #F2D01A;
  1182. border: 1px solid #F2D01A !important;
  1183. }
  1184. .D {
  1185. color: #FFF;
  1186. background: #1396F6;
  1187. border: 1px solid #1396F6 !important;
  1188. }
  1189. </style>