follow.html 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. <extend name="public/base"/>
  2. <block name="css">
  3. <style>
  4. .van-nav-bar--fixed {z-index:100;}
  5. .van-nav-bar .van-icon,.van-nav-bar__text {color:white;}
  6. .van-step--horizontal .van-step__title {font-size:16px;}
  7. .van-step--horizontal .van-step__icon {font-size:16px;}
  8. .van-step__circle {width:10px;height:10px;}
  9. .lw-list .list-item{padding:5px 10px;background:white;}
  10. .lw-list .list-content {display:flex;align-items:center;}
  11. .lw-list .list-content .list-left {width:50px;height:50px;}
  12. .lw-list .list-content .list-left img {width:50px;height:50px;}
  13. .lw-list .list-content .list-right {margin-left:20px;}
  14. .lw-list .list-content .list-right .name {color:black;height:30px;line-height:30px;}
  15. .lw-list .list-content .list-right .name .mobile {font-size:14px;color:var(--blue);}
  16. .lw-list .list-content .list-right .desc {color:#666;font-size:14px;height:20px;line-height:20px;}
  17. .lw-list .list-tool {border-top:1px solid #f8f9fb;margin-top:5px;display:flex;justify-content:flex-end;align-items:center;padding-top:5px;}
  18. .lw-list .list-tool .tool-btn {margin-left:5px;font-size:14px;border:1px solid #ccc;padding:5px 10px;border-radius:20px;color:#555;}
  19. .lw-list .list-tool .tool-btn.delete {border-color:var(--pink);color:var(--pink);}
  20. .lw-list .list-tool .tool-btn.match {border-color:var(--blue);color:var(--blue);}
  21. .image-box {padding:10px 0;}
  22. .image-box .van-image {margin:0 5px;}
  23. </style>
  24. </block>
  25. <block name="body">
  26. <!--头部-->
  27. <van-nav-bar
  28. class="bg-pink"
  29. fixed="true"
  30. left-text="返回"
  31. @click-left="onBack"
  32. left-arrow
  33. >
  34. <template #title>
  35. <span style="color:white;">跟进记录</span>
  36. </template>
  37. </van-nav-bar>
  38. <div style="width:100%;height:46px;"></div>
  39. <div class="lw-list">
  40. <div class="list-item">
  41. <div class="list-content">
  42. <div class="list-left">
  43. <img :src="dealAvatar(info.avatar,info.sex)" alt="">
  44. </div>
  45. <div class="list-right">
  46. <div class="name">{{info.realname}} <span class="mobile" v-if="info.mobile">({{info.mobile}})</span></div>
  47. <div class="desc">{{info.sex_text}} • {{info.age}}岁 • {{dealHigh(info.high)}}</div>
  48. </div>
  49. </div>
  50. </div>
  51. </div>
  52. <van-field
  53. v-model="form.content"
  54. rows="3"
  55. autosize
  56. label="跟进内容"
  57. type="textarea"
  58. placeholder="请输入跟进内容"
  59. show-word-limit
  60. ></van-field>
  61. <!--头图-->
  62. <van-uploader multiple :after-read="uploadHead" :before-delete="deleteImage" v-model="image_list" style="padding:20px;width:100%;background:white;">
  63. </van-uploader>
  64. <div style="padding:16px;">
  65. <van-button block class="bg-pink" @click="onSubmit">提交</van-button>
  66. </div>
  67. <van-empty description="暂无跟进记录" v-if="list.length == 0"></van-empty>
  68. <van-steps direction="vertical" :active="0">
  69. <van-step v-for="item in list">
  70. <h3>{{item.content}}</h3>
  71. <p v-if="item.image_list != null" class="image-box">
  72. <van-image
  73. v-for="(image,index) in item.image_list"
  74. width="100"
  75. height="100"
  76. :src="image"
  77. @click="showImage(item.image_list,index)"
  78. ></van-image>
  79. </p>
  80. <p>{{item.create_time_text}}</p>
  81. </van-step>
  82. </van-steps>
  83. </block>
  84. <block name="script">
  85. <script>
  86. new Vue({
  87. el: '#app',
  88. data() {
  89. return {
  90. info:{$info},
  91. form:{
  92. user_id: {$id},
  93. content: '',
  94. image_list: [],
  95. },
  96. image_list:[],
  97. list: {$list},
  98. };
  99. },
  100. methods: {
  101. onBack() {
  102. location.href = "{:url('index/index')}";
  103. },
  104. onSubmit() {
  105. $.post("{:url('followPost')}", this.form, function (json) {
  106. if (json.code == 0) {
  107. vant.Toast(json.msg);
  108. return false;
  109. }
  110. location.reload();
  111. }, 'json');
  112. },
  113. dealAvatar(avatar,sex) {
  114. if (avatar == '') {
  115. return '__TMPL__/public/assets/images/matchmaker/avatar' + sex + '.png'
  116. } else {
  117. return avatar;
  118. }
  119. },
  120. dealHigh(high) {
  121. return high ? high + 'CM' : '保密';
  122. },
  123. uploadHead(file) {
  124. let self = this;
  125. $.post("{:url('imageUpload')}",{file:file.content,name:file.file.name},function(json){
  126. if (json.code) {
  127. self.form.image_list.push(json.data.avatar);
  128. self.$forceUpdate();
  129. } else {
  130. self.$toast(json.msg);
  131. }
  132. },'json')
  133. },
  134. deleteImage(file,index) {
  135. let arr = [...this.form.image_list];
  136. arr.splice(index,1);
  137. this.form.image_list = arr;
  138. console.log(this.form);
  139. return true;
  140. },
  141. showImage(images,index) {
  142. vant.ImagePreview({
  143. images: images,
  144. startPosition: index,
  145. });
  146. }
  147. },
  148. computed: {
  149. }
  150. });
  151. </script>
  152. </block>