index.vue 17.6 KB
Newer Older
王玉曼 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
<template>
  <div>
    <!-- 头部 -->
    <div class="header">
      <van-icon
        name="cross"
        color="#9c9c9c"
        size="16"
        @click="$router.back()"
      />
      <span class="title"> 客户画像 </span>
    </div>
    <van-divider />
    <!-- 详细资料 -->
    <div class="details">
      <div class="detail">
        <div class="left">
          <div class="img"><img src="" alt="" /></div>
          <div class="right">
            <div>
              <span>张三 &nbsp; &nbsp;</span
              ><van-icon name="manager" color="#9c9c9c" />
            </div>
            <div class="c9"><span>昵称:</span><span>王二毛</span></div>
          </div>
        </div>
        <div class="data" @click="goRoute">详细资料></div>
      </div>
      <div class="detail">
        <div class="c9">手机号</div>
        <div>123@qq.com</div>
      </div>
      <van-divider />
      <div class="detail">
        <div class="c9">年龄</div>
        <div>123@qq.com</div>
      </div>
      <van-divider />
      <div class="detail">
        <div class="c9">生日</div>
        <div>123@qq.com</div>
      </div>
      <van-divider />
      <div class="detail">
        <div class="c9">邮箱</div>
        <div>123@qq.com</div>
      </div>
    </div>
    <div class="divider"></div>
    <!-- 客户标签 -->
    <div class="userlabel">
      <div class="detail">
        <div>客户标签</div>
        <div class="data" is-link @click="show = true">编辑</div>
      </div>
      <van-row gutter="10" class="labels">
        <van-col span="4.5"> <div class="label">标签1</div></van-col>
        <van-col span="4.5"> <div class="label">标签1</div></van-col>
        <van-col span="4.5"> <div class="label">标签1</div></van-col>
        <van-col span="4.5"> <div class="label">标签1</div></van-col>
        <van-col span="4.5"> <div class="label">标签1</div></van-col>
        <van-col span="4.5"> <div class="label">标签1</div></van-col>
        <van-col span="4.5"> <div class="label">标签1</div></van-col>
      </van-row>
    </div>
    <div class="divider"></div>
    <!-- 点击客户标签里的编辑触发弹出框开始 -->
王玉曼 已提交
68 69 70 71 72 73
    <van-action-sheet v-model="show">
      <van-nav-bar
        title="客户标签"
        right-text="取消"
        @click-right="show = false"
      />
王玉曼 已提交
74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142
      <div class="content">
        <span>测试:</span>
        <van-row gutter="8" class="labels">
          <van-col span="4.5"
            ><div class="label" @click="userLabel">标签1</div></van-col
          >
          <van-col span="4.5"> <div class="label">标签1</div></van-col>
          <van-col span="4.5"> <div class="label">标签1</div></van-col>
          <van-col span="4.5"> <div class="label">标签1</div></van-col>
          <van-col span="4.5"> <div class="label">标签1</div></van-col>
          <van-col span="4.5"> <div class="label">标签1</div></van-col>
          <van-col span="4.5"> <div class="label">标签1</div></van-col>
        </van-row>
        <div class="branch" v-if="true">
          <van-divider />
          <p>标签组:</p>
          <van-row class="labels">
            <van-col span="4.5"
              ><div class="label" @click="changeLabel">标签1</div></van-col
            >
          </van-row>
          <van-button type="info" class="saveinfo" round @click="saveInfo"
            >保存</van-button
          >
        </div>
      </div>
    </van-action-sheet>
    <!-- 点击客户标签里的编辑触发弹出框结束 -->
    <!-- 社交关系 -->
    <div class="realationship">
      <div class="detail">
        <div>社交关系</div>
        <div class="data" @click="detailGoRoute">详情</div>
      </div>
      <div class="detail">
        <div class="boxnumber">
          <p>添加的员工</p>
          <div class="number">8</div>
        </div>
        <div class="boxnumber">
          <p>添加的群聊</p>
          <div class="number">8</div>
        </div>
        <div class="boxnumber">
          <p>共同的群聊</p>
          <div class="number">8</div>
        </div>
      </div>
    </div>
    <div class="divider"></div>
    <!-- 客户轨迹 -->
    <div class="addwaiting">
      <div class="detail">
        <div>客户轨迹</div>
        <div class="data" is-link @click="usershow = true">添加待办></div>
      </div>
      <van-row gutter="8" class="labels">
        <van-col span="6"> <div class="label1">信息动态</div></van-col>
        <van-col span="6"> <div class="label1">社交动态</div></van-col>
        <van-col span="6"> <div class="label1">活动动态</div></van-col>
        <van-col span="6"> <div class="label1">待办动态</div></van-col>
      </van-row>

      <!-- 步骤条 -->
      <van-steps direction="vertical" inactive-color="#2c8cf0" :active="active">
        <!-- 时间 -->
        <p class="f12" style="position:relative; left:-32px;">
          2021-02-16 星期二
        </p>
王玉曼 已提交
143
        <van-step class="msg">
王玉曼 已提交
144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161
          <span class="f12 po"> 12:40</span>
          <span class="fs14">信息动态</span>
          <span class="deldynamic">删除</span>
          <p class="fs14 con ">编辑编辑</p>
        </van-step>
        <van-step>
          <span class="f12 po"> 12:40</span>
          <span class="fs14">社交动态</span>
          <span class="deldynamic">删除</span>
          <p class="fs14 con ">编辑编辑</p>
        </van-step>
      </van-steps>
      <van-divider />
      <van-steps direction="vertical" inactive-color="#2c8cf0" :active="active">
        <!-- 时间 -->
        <p class="f12" style="position:relative; left:-32px;">
          2021-02-16 星期二
        </p>
王玉曼 已提交
162
        <van-step @click="todonewsshow = true">
王玉曼 已提交
163 164 165 166 167 168 169 170 171
          <span class="f12 po"> 12:40</span>
          <span class="fs14">待办动态</span>
          <span class="finish">完成</span>
          <span class="deldynamic">删除</span>
          <p class="fs14 con ">编辑编辑</p>
        </van-step>
      </van-steps>
    </div>
    <!-- 点击添加待办触发弹出框开始 -->
王玉曼 已提交
172 173 174 175 176 177
    <van-action-sheet v-model="usershow">
      <van-nav-bar
        title="客户待办"
        right-text="取消"
        @click-right="usershow = false"
      />
王玉曼 已提交
178 179
      <!-- 表单 -->
      <van-form @submit="onSubmit">
王玉曼 已提交
180
        <!-- 待办内容 -->
王玉曼 已提交
181 182 183 184 185 186
        <van-field
          v-model="conagency"
          name="待办内容"
          label="待办内容"
          placeholder="请输入待办内容"
          type="textarea"
王玉曼 已提交
187
          required
王玉曼 已提交
188 189 190 191
          :rules="[{ required: true, message: '请输入待办内容' }]"
          class="conagency"
        />

王玉曼 已提交
192
        <!-- 待办日期 -->
王玉曼 已提交
193
        <van-field
王玉曼 已提交
194 195
          v-model="dateagency"
          is-link
王玉曼 已提交
196
          readonly
王玉曼 已提交
197 198 199 200 201 202 203 204 205 206 207 208
          label="待办日期"
          placeholder="请选择"
          @click="dateshow = true"
          required
          :rules="[{ required: true, message: '请输入待办日期' }]"
        />
        <van-calendar
          v-model="dateshow"
          @confirm="onConfirm"
          color="#1989fa"
          :min-date="minDate"
          :max-date="maxDate"
王玉曼 已提交
209
        />
王玉曼 已提交
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243
        <!-- 待办时间 -->
        <van-field
          v-model="timeagency"
          is-link
          readonly
          label="待办时间"
          placeholder="请选择"
          @click="starttimeshow = true"
          required
          :rules="[{ required: true, message: '请输入待办时间' }]"
        />
        <van-action-sheet v-model="starttimeshow">
          <van-datetime-picker
            v-model="currentTime"
            type="time"
            title="请选择开始时间"
            :min-hour="0"
            :max-hour="23"
            @cancel="timecancel"
            @confirm="starttimeconfirm"
          />
        </van-action-sheet>
        <van-action-sheet v-model="endtimeshow">
          <van-datetime-picker
            v-model="currentTime"
            type="time"
            title="请选择结束时间"
            :min-hour="0"
            :max-hour="23"
            @cancel="timecancel"
            @confirm="endtimeconfirm"
          />
        </van-action-sheet>
        <!-- 保存 -->
王玉曼 已提交
244 245
        <div style="margin: 16px;">
          <van-button round block type="info" native-type="submit"
王玉曼 已提交
246
            >保存</van-button
王玉曼 已提交
247 248 249 250 251
          >
        </div>
      </van-form>
    </van-action-sheet>
    <!-- 点击添加待办触发弹出框结束 -->
王玉曼 已提交
252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270
    <!-- 点击待办动态触发弹出框开始 -->
    <van-action-sheet v-model="todonewsshow">
      <van-nav-bar
        title="客户待办"
        right-text="删除"
        @click-right="deltodoshow"
      />
      <!-- 待办内容 -->
      <van-field
        v-model="conagency"
        name="待办内容"
        label="待办内容"
        placeholder="请输入待办内容"
        type="textarea"
        required
        readonly
        :rules="[{ required: true, message: '请输入待办内容' }]"
        class="conagency"
      />
王玉曼 已提交
271

王玉曼 已提交
272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330
      <!-- 待办日期 -->
      <van-field
        v-model="dateagency"
        is-link
        readonly
        label="待办日期"
        placeholder="请选择"
        @click="dateshow = true"
        required
        :rules="[{ required: true, message: '请输入待办日期' }]"
      />
      <van-calendar
        v-model="dateshow"
        @confirm="onConfirm"
        color="#1989fa"
        :min-date="minDate"
        :max-date="maxDate"
      />
      <!-- 待办时间 -->
      <van-field
        v-model="timeagency"
        is-link
        readonly
        label="待办时间"
        placeholder="请选择"
        @click="starttimeshow = true"
        required
        :rules="[{ required: true, message: '请输入待办时间' }]"
      />
      <van-action-sheet v-model="starttimeshow">
        <van-datetime-picker
          v-model="currentTime"
          type="time"
          title="请选择开始时间"
          :min-hour="0"
          :max-hour="23"
          @cancel="timecancel"
          @confirm="starttimeconfirm"
        />
      </van-action-sheet>
      <van-action-sheet v-model="endtimeshow">
        <van-datetime-picker
          v-model="currentTime"
          type="time"
          title="请选择结束时间"
          :min-hour="0"
          :max-hour="23"
          @cancel="timecancel"
          @confirm="endtimeconfirm"
        />
      </van-action-sheet>
      <!-- 保存 -->
      <div style="margin: 16px;">
        <van-button round block type="info" native-type="submit"
          >保存</van-button
        >
      </div>
    </van-action-sheet>
    <!-- 点击添加待办触发弹出框结束 -->
王玉曼 已提交
331 332 333 334 335
    <div class="divider"></div>
  </div>
</template>

<script>
X
xinla 已提交
336
import { getCustomerInfo } from '@/api/portrait'
王玉曼 已提交
337 338 339 340 341 342 343
export default {
  data() {
    return {
      // 客户标签弹出框
      show: false,
      // 客户待办的弹出框开始
      usershow: false,
X
xinla 已提交
344
      conagency: '', // 待办内容
王玉曼 已提交
345 346

      // 待办日期
X
xinla 已提交
347
      dateagency: '',
王玉曼 已提交
348 349 350 351
      dateshow: false,
      minDate: new Date(2021, 0, 1),
      maxDate: new Date(2021, 12, 31),
      // 待办时间
X
xinla 已提交
352
      timeagency: '',
王玉曼 已提交
353 354
      starttimeshow: false,
      endtimeshow: false,
X
xinla 已提交
355 356 357
      currentTime: '12:00',
      startTime: '',
      endTime: '',
王玉曼 已提交
358 359
      // 客户待办的弹出框结束

X
xinla 已提交
360
      actions: [{ name: '选项一' }, { name: '选项二' }, { name: '选项三' }],
王玉曼 已提交
361 362
      // 步骤条
      active: -1,
王玉曼 已提交
363 364 365 366
      // 客户轨迹
      // 待办动态
      todonewsshow: false,
      // 接口开始
X
xinla 已提交
367 368 369 370 371 372 373 374 375
      externalUserid: '', // 客户Id
      userId: '', // 员工Id
    }
  },
  watch: {
    '$store.state.userId'(val) {
      this.userId = val
      this.getDetail()
    },
王玉曼 已提交
376 377
  },
  methods: {
X
xinla 已提交
378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437
    getDetail() {
      this.$toast.loading({
        message: '正在加载...',
        duration: 0,
        forbidClick: true,
      })
      let entry = undefined
      let _this = this
      wx.invoke('getContext', {}, function(res) {
        if (res.err_msg == 'getContext:ok') {
          entry = res.entry //返回进入H5页面的入口类型,目前有normal、contact_profile、single_chat_tools、group_chat_tools
          if (
            ![
              'single_chat_tools',
              'group_chat_tools',
              'contact_profile',
            ].includes(entry)
          ) {
            // _this.$toast.clear()
            _this.$toast('入口错误:' + entry)
            return
          }

          wx.invoke('getCurExternalContact', {}, function(resContact) {
            if (resContact.err_msg == 'getCurExternalContact:ok') {
              this.externalUserid = resContact.userId //返回当前外部联系人userId
              // 获取客户详细信息
              getCustomerInfo({
                externalUserid: this.externalUserid,
                userid: this.userId,
              })
                .then(({ data }) => {
                  _this.$toast.clear()
                  console.log(data)
                  _this.$dialog({
                    message: '获取客户失败:' + JSON.stringify(data),
                  })
                })
                .catch((err) => {
                  _this.$toast.clear()
                  console.log(err)
                  _this.$dialog({
                    message: '获取客户失败:' + JSON.stringify(err),
                  })
                })
            } else {
              _this.$toast.clear()
              //错误处理
              _this.$dialog({
                message: '获取客户id失败:' + JSON.stringify(resContact),
              })
            }
          })
        } else {
          _this.$toast.clear()
          //错误处理
          _this.$dialog({ message: '进入失败:' + JSON.stringify(res) })
        }
      })
    },
王玉曼 已提交
438 439 440 441 442 443
    // 添加代办
    // 表单提交
    onSubmit() {},
    // 待办日期
    formatDate(dateagency) {
      return `${dateagency.getFullYear()}-${dateagency.getMonth() +
X
xinla 已提交
444
        1}-${dateagency.getDate()}`
王玉曼 已提交
445 446
    },
    onConfirm(dateagency) {
X
xinla 已提交
447 448
      this.dateshow = false
      this.dateagency = this.formatDate(dateagency)
王玉曼 已提交
449 450 451
    },
    // 待办时间
    timecancel() {
X
xinla 已提交
452
      this.starttimeshow = false
王玉曼 已提交
453 454
    },
    starttimeconfirm(value) {
X
xinla 已提交
455 456 457
      this.startTime = value
      this.starttimeshow = false
      this.endtimeshow = true
王玉曼 已提交
458 459
    },
    endtimeconfirm(value) {
X
xinla 已提交
460 461 462
      this.endTime = value
      this.endtimeshow = false
      let time = ''
王玉曼 已提交
463
      if (this.startTime > this.endTime) {
X
xinla 已提交
464 465 466
        time = this.startTime
        this.startTime = this.endTime
        this.endTime = time
王玉曼 已提交
467 468
      }
      // console.log(this.startTime, this.endTime);
X
xinla 已提交
469 470
      this.endtimeshow = false
      this.timeagency = this.formatTime()
王玉曼 已提交
471 472
    },
    formatTime() {
X
xinla 已提交
473
      return `${this.startTime}-${this.endTime}`
王玉曼 已提交
474 475 476 477 478
    },
    // 待办动态
    // 点击删除按钮
    deltodoshow() {},

王玉曼 已提交
479 480
    goRoute() {
      this.$router.push({
X
xinla 已提交
481
        path: '/detail',
王玉曼 已提交
482 483 484
        query: {
          //   type
        },
X
xinla 已提交
485
      })
王玉曼 已提交
486 487 488
    },
    detailGoRoute() {
      this.$router.push({
X
xinla 已提交
489
        path: '/community',
王玉曼 已提交
490 491 492
        query: {
          //   type
        },
X
xinla 已提交
493
      })
王玉曼 已提交
494 495 496
    },
    // 第一层标签
    userLabel() {
X
xinla 已提交
497
      console.log(123)
王玉曼 已提交
498 499 500
    },
    // 第二层标签
    changeLabel() {
X
xinla 已提交
501
      console.log(456)
王玉曼 已提交
502 503 504
    },
    saveInfo() {},
  },
X
xinla 已提交
505 506
  created() {},
}
王玉曼 已提交
507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674
</script>

<style lang="less" scoped>
.header {
  margin: 20px 10px 10px;
  vertical-align: center;
  text-align: center;
}
.van-icon-cross {
  position: absolute;
  left: 10px;
}
.title {
  text-align: center;
}
//  详细资料
.details,
.userlabel,
.realationship,
.addwaiting {
  margin: 10px;
}
.detail {
  display: flex;
  justify-content: space-between;
  .c9 {
    color: #9c9c9c;
  }
}
.left {
  display: flex;
  margin-bottom: 20px;
  .img {
    width: 40px;
    height: 40px;
    background-color: #f2f2f2;
    margin-right: 10px;
  }
  .right {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
  }
}
.data {
  font-size: 12px;
  color: #2c8cf0;
}
.divider {
  width: 100%;
  height: 10px;
  background-color: #f2f2f2;
}
.content {
  padding: 16px 16px 160px;
}
.van-action-sheet__header {
  .van-icon-cross {
    left: 85%;
    font-size: 16px;
  }
}
// 客户标签
.labels {
  display: flex;
  flex-wrap: wrap;
  // justify-content: space-between;
  padding-top: 10px;
  .label,
  .label1 {
    width: 60px;
    height: 18px;
    font-size: 12px;
    background-color: #f2f2f2;
    text-align: center;
    margin: 10px 0px;
    line-height: 18px;
    border-radius: 6px;
  }
}
.branch {
  position: relative;
  .saveinfo {
    position: absolute;
    width: 90%;
    height: 30px;
    left: 50%;
    top: 240%;
    transform: translate(-50%, -50%);
  }
}

//  社交关系
.boxnumber {
  height: 60px;
  width: 100%;
  margin: 20px;
  .number {
    text-align: center;
    margin-top: 20px;
    font-size: 24px;
    font-weight: 700;
  }
}
.boxnumber:first-child {
  border-right: 1px solid #f2f2f2;
  padding-right: 16px;
}
.addwaiting {
  .labels {
    .label1 {
      width: 80px;
      margin-bottom: 20px;
      border-radius: 40px;
    }
  }
}
//  客户轨迹
.f12 {
  color: #9c9c9c;
  font-size: 12px;
  font-weight: 600;
}
.po {
  position: relative;
}
.fs14 {
  color: #333;
  font-size: 14px;
  position: relative;
  left: 20px;
}
.con {
  left: 51px;
  margin-top: 20px;
}
/deep/.van-step__circle {
  width: 8px;
  height: 8px;
  margin-left: 110px;
}
/deep/.van-step__line {
  left: 39px;
}
.finish {
  position: relative;
  color: #2c8cf0;
  font-size: 12px;
  font-weight: 600;
  right: -165px;
}
.deldynamic {
  float: right;
  color: #9c9c9c;
  font-size: 12px;
  font-weight: 600;
}
.van-step--vertical:not(:last-child)::after {
  border-width: 1px;
}
/deep/.conagency {
  line-height: 40px;
  flex-direction: column;
  .van-field__control {
    background-color: #f2f2f2;
    padding: 0 10px;
  }
}
王玉曼 已提交
675 676 677 678 679
/deep/.msg {
  &::after {
    border: none;
  }
}
王玉曼 已提交
680
</style>