detail.vue 7.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <template>
  2. <div>
  3. <basicDetails
  4. ref="details"
  5. :titleText="mainData.name"
  6. :oldFormPath="{
  7. edit:'HManagement/clueManage/clue_public/modules',
  8. }"
  9. :editData="mainData"
  10. :mainAreaData="mainAreaData"
  11. turnPageId="20221101094402"
  12. idname="sat_orderclueid"
  13. tags=""
  14. :tabs="['详细信息','跟进记录']"
  15. @pageChange="pageChange"
  16. delApiId="20221101100502"
  17. @onEditSuccess="queryMainData($route.query.id)">
  18. <div slot="tags">
  19. </div>
  20. <div slot="customOperation">
  21. <recall v-if="tool.checkAuth($route.name,'recall')" :data="mainData" @onSuccess="queryMainData"></recall>
  22. </div>
  23. <div slot="slot0" class="container normal-panel">
  24. <BaseInfo :detailInfo="detailInfo"/>
  25. </div>
  26. <div slot="slot1" class="container normal-panel">
  27. <el-descriptions>
  28. <div slot="title">跟进记录 &nbsp;<i @click="followRecord(isdesc === 1?isdesc = 0:isdesc =1)" :class="isdesc === 1?'fa fa-sort-amount-asc':'fa fa-sort-amount-desc'"></i></div>
  29. </el-descriptions>
  30. <div class="flex-align-center normal-margin">
  31. <p>日期:&nbsp;</p>
  32. <el-date-picker
  33. v-model="value2"
  34. type="daterange"
  35. align="right"
  36. unlink-panels
  37. range-separator="至"
  38. start-placeholder="开始日期"
  39. end-placeholder="结束日期"
  40. value-format="yyyy-MM-dd"
  41. size="small"
  42. @change="dateChange"
  43. clearable>
  44. </el-date-picker>
  45. </div>
  46. <div class="item" v-for="(item,index) in recordlist" :key="index">
  47. <p>{{index + 1}}.{{item.createdate}},由经销商端<span style="font-weight:bold;margin:0 6px;font-size:13px">{{item.createby}}</span>开始跟进,跟进方式:<span style="font-weight:bold;margin:0 5px">{{item.followupmode}}</span>,{{handleTxt[item.logtype]}}</p>
  48. <div class="content">
  49. <div style="margin-bottom:10px">
  50. <p v-if="item.competitor">已购买品牌:{{item.competitor}}</p>
  51. {{item.content}}
  52. </div>
  53. <file-item
  54. :rowCount="5"
  55. :isDownLoad="true"
  56. :fileData="item.attinfo"
  57. @deleteSuccess="deleteFile">
  58. </file-item>
  59. </div>
  60. </div>
  61. </div>
  62. </basicDetails>
  63. </div>
  64. </template>
  65. <script>
  66. import FileItem from '@/SManagement/orderclue/components/file/index2'
  67. import BaseInfo from '@/HDrpManagement/projectChange/modules/modules/baseInfo/baseInfo'
  68. import recall from './recall.vue'
  69. export default {
  70. name: "detail",
  71. data() {
  72. return {
  73. mainData:{},
  74. mainAreaData:{},
  75. detailInfo:{},
  76. recordlist:[],
  77. isdesc:1,
  78. value2:'',
  79. dateParam:{
  80. "start": "",
  81. "end": ""
  82. },
  83. handleTxt:{
  84. '跟进中':'跟进内容',
  85. '成交':'成交操作,添加备注',
  86. '丢单':'丢单操作,具体原因如下',
  87. '无效':'无效操作,具体原因如下',
  88. },
  89. }
  90. },
  91. components:{
  92. BaseInfo,recall,
  93. FileItem
  94. },
  95. methods:{
  96. async followRecord () {
  97. const res = await this.$api.requested({
  98. "classname": "webmanage.saletool.orderclue.publicclue.PublicClue",
  99. "method": "getFollowList",
  100. "content": {
  101. "sat_orderclueid": this.$route.query.id,
  102. "isdesc": this.isdesc,
  103. "where": this.dateParam
  104. }
  105. })
  106. this.recordlist = res.data
  107. this.recordlist.forEach(item => {
  108. item.attinfo = this.fileType.fileList(item.attinfo)
  109. })
  110. },
  111. dateChange (val) {
  112. if (!val) {val = []}
  113. this.dateParam.start = val[0]
  114. this.dateParam.end = val[1]
  115. this.followRecord()
  116. },
  117. async queryMainData(id) {
  118. const res = await this.$api.requested({
  119. "classname": "webmanage.saletool.orderclue.publicclue.PublicClue",
  120. "method": "selectDetail",
  121. "content": {
  122. "sat_orderclueid": this.$route.query.id
  123. }
  124. })
  125. this.mainData = res.data
  126. this.changeDataStructure()
  127. },
  128. changeDataStructure() {
  129. this.mainAreaData = [
  130. {
  131. label:'客户名称',
  132. value:this.mainData.enterprisename_customer
  133. },
  134. {
  135. label:'联系人',
  136. value:this.mainData.name
  137. },
  138. {
  139. label:'手机号',
  140. value:this.mainData.phonenumber
  141. },
  142. {
  143. label:'来源',
  144. value:this.mainData.cluesource
  145. },
  146. {
  147. label:'所属经销商',
  148. value:this.mainData.enterprisename
  149. },
  150. {
  151. label:'负责人',
  152. value:this.mainData.leader ? this.mainData.leader[0].name : ''
  153. },
  154. {
  155. label:'分配状态',
  156. value:this.mainData.allocationstatus
  157. },
  158. {
  159. label:'跟进状态',
  160. value:this.mainData.status
  161. },
  162. ]
  163. this.detailInfo = {
  164. baseInfo: [
  165. {
  166. label:'客户名称',
  167. value:this.mainData.name
  168. },
  169. {
  170. label:'手机号',
  171. value:this.mainData.phonenumber
  172. },
  173. {
  174. label:'省市县',
  175. value:`${this.mainData.province}-${this.mainData.city}-${this.mainData.county}`
  176. },
  177. {
  178. label:'地址',
  179. value:this.mainData.address
  180. },
  181. {
  182. label:'来源',
  183. value:this.mainData.cluesource
  184. },
  185. {
  186. label:'负责人',
  187. value:this.mainData.leadername
  188. },
  189. {
  190. label:'备注',
  191. value:this.mainData.notes
  192. },
  193. {
  194. label:'所属经销商',
  195. value:this.mainData.enterprisename
  196. },
  197. {
  198. label:'分配状态',
  199. value:this.mainData.allocationstatus
  200. },
  201. {
  202. label:'跟进状态',
  203. value:this.mainData.status
  204. },
  205. ],
  206. systemInfo: [
  207. {label:'创建人',value:this.mainData.createBy},
  208. {label:'分配人',value:this.mainData.assignedBy},
  209. {label:'最近跟进人',value:this.mainData.followBy},
  210. {label:'转移人',value:this.mainData.changeBy},
  211. {label:'最近编辑人',value:this.mainData.editBy},
  212. {label:'创建时间',value:this.mainData.createDate},
  213. {label:'分配时间',value:this.mainData.assignedDate},
  214. {label:'最近跟进时间',value:this.mainData.followDate},
  215. {label:'最近转移时间',value:this.mainData.changeDate},
  216. {label:'最近编辑时间',value:this.mainData.editDate},
  217. ]
  218. }
  219. },
  220. // 监听切换数据,上一页,下一页
  221. pageChange (id,rowindex) {
  222. this.flag = false
  223. this.$router.replace({path:'/clueDetail',query:{id:id,rowindex:rowindex}})
  224. this.queryMainData(id)
  225. }
  226. },
  227. mounted () {
  228. this.queryMainData(this.$route.query.id)
  229. },
  230. created() {
  231. this.followRecord()
  232. }
  233. }
  234. </script>
  235. <style scoped>
  236. .content {
  237. margin: 10px 0 16px 0;
  238. background: #F2F2F2;
  239. padding: 16px;
  240. border-radius: 5px;
  241. font-size: 14px;
  242. }
  243. </style>