history-project.js 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. var historyProTemplate = `
  2. <div style="width:100%" v-if="list.length !== 0">
  3. <div class="tab-card-title">
  4. <span class="win-bid-title" v-if="type=='buyer'">采购单位通讯录</span>
  5. <span class="win-bid-title" v-else>企业通讯录</span>
  6. </div>
  7. <div class="tab-card-content">
  8. <ul class="project-info-list">
  9. <li
  10. v-for="(item, index) in list.slice(0, hisData.end)"
  11. class="project-info-item border-line-b"
  12. >
  13. <div class="his-pro-title">{{item.projectname}}</div>
  14. <div class="his-contact">
  15. <div class="his-contact-list" v-for="(data,index) in item.contacts">
  16. <div class="contact-top">
  17. <div class="contactlabel">联系人:</div>
  18. <div class="contact-name">{{data[Object.keys(data)] || '--'}}</div>
  19. </div>
  20. <a :href="'tel:'+formatTel(Object.keys(data)[0])" class="contact-bot" v-if="Object.keys(data)[0]!==''" @click="telPhoneClick($event,Object.keys(data)[0])">
  21. <div class="con-left">
  22. <div class="contact-phonelabel">联系方式:</div>
  23. <div class="contact-phone">{{Object.keys(data)[0]}}</div>
  24. </div>
  25. <div class="con-right"></div>
  26. </a>
  27. </div>
  28. <div class="his-deal" v-if="!!item.date">
  29. <div class="deallabel">成交时间:</div>
  30. <div class="deal-time">{{item.date}}</div>
  31. </div>
  32. </div>
  33. </li>
  34. <li
  35. class="show-more"
  36. v-if="hisData.showMoreBtn"
  37. @click="getHisProjectNews">查看更多</li>
  38. </ul>
  39. </div>
  40. </div>
  41. `
  42. var hisproComponent = {
  43. name: 'history-project',
  44. template: historyProTemplate,
  45. props: {
  46. "type": {
  47. type: String,
  48. default: function() {
  49. return 'winner'
  50. }
  51. },
  52. 'id': {
  53. type: String,
  54. default: function() {
  55. return ''
  56. }
  57. },
  58. 'buyer': {
  59. type: String,
  60. default: function() {
  61. return ''
  62. }
  63. }
  64. },
  65. data: function () {
  66. return {
  67. list: [],
  68. hisData: {
  69. end: 3,
  70. showMoreBtn: false
  71. }
  72. }
  73. },
  74. created () {
  75. this.getData()
  76. },
  77. methods: {
  78. getData: function() {
  79. var loading = this.showLoading()
  80. let _this = this
  81. let item = {
  82. url: '',
  83. datas: {}
  84. }
  85. if(this.type == 'winner') {
  86. item.url = '/bigmember/portrait/winner/contacts'
  87. item.datas.entId = this.id
  88. } else if(this.type == 'buyer') {
  89. item.url = '/bigmember/portrait/buyer/contacts'
  90. item.datas.buyer = this.buyer
  91. } else {
  92. loading.clear()
  93. return
  94. }
  95. $.ajax({
  96. type: "POST",
  97. url: item.url,
  98. data:item.datas,
  99. timeout: 6000,
  100. success: function(res) {
  101. if(res.error_code == 0) {
  102. loading.clear()
  103. if(res.data && res.data.list && res.data.list.length !== 0) {
  104. res.data.list.forEach(function(item, i) {
  105. let phoneArr = []
  106. if(item.date) {
  107. item.date = new Date(item.date * 1000).pattern('yyyy-MM-dd')
  108. } else {
  109. item.date = ''
  110. }
  111. // console.log(Object.keys(item.contacts))
  112. Object.keys(item.contacts).forEach(function(items, index) {
  113. // console.log(items)
  114. // console.log({[items]: item.contacts[Object.keys(item.contacts)[index]]})
  115. phoneArr.push({[items]: item.contacts[Object.keys(item.contacts)[index]]})
  116. })
  117. item.contacts = phoneArr
  118. // console.log(item.contacts)
  119. })
  120. if(res.data.list.length <= 3) {
  121. _this.hisData.showMoreBtn = false
  122. _this.list = res.data.list
  123. } else {
  124. if(res.data.list.length <= _this.hisData.end) {
  125. _this.hisData.showMoreBtn = false
  126. } else {
  127. _this.hisData.showMoreBtn = true
  128. }
  129. _this.list = res.data.list
  130. }
  131. }
  132. } else {
  133. loading.clear()
  134. }
  135. }
  136. })
  137. },
  138. // 点击查看更多
  139. getHisProjectNews() {
  140. if(this.list.length < this.hisData.end + 3) {
  141. this.hisData.end = this.list.length
  142. this.hisData.showMoreBtn = false
  143. } else {
  144. this.hisData.end = this.hisData.end + 3
  145. this.hisData.showMoreBtn = true
  146. }
  147. this.getData()
  148. },
  149. // 拨打电话
  150. telPhoneClick: function(e,tel) {
  151. if(!utils.isWeiXinBrowser) {
  152. e.preventDefault()
  153. try {
  154. var f = /[^\s\、,,;;./。??]+(?=[\s\、,,;;./。??])/g
  155. if(tel.match(f)) {
  156. tel = tel.match(f)[0]
  157. }
  158. JyObj.callPhone(tel);
  159. } catch (error) {
  160. }
  161. }
  162. },
  163. showLoading: function() {
  164. var loading = this.$toast.loading({
  165. duration: 0,
  166. forbidClick: true,
  167. message: '',
  168. })
  169. return loading
  170. },
  171. // 联系方式取第一个
  172. formatTel: function (tel) {
  173. var f = /[^\s\、,,;;./。??]+(?=[\s\、,,;;./。??])/g
  174. if(tel.match(f)) {
  175. tel = tel.match(f)[0]
  176. }
  177. return tel
  178. }
  179. }
  180. }