index.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358
  1. <template>
  2. <div>
  3. <basicDetails
  4. v-if="mainData"
  5. ref="details"
  6. :titleText="mainData.enterprisename_customer"
  7. :editData="mainData"
  8. :mainAreaData="mainAreaData"
  9. turnPageId="20221101094502"
  10. idname="sat_orderclueid"
  11. tags=""
  12. :tabs="['跟进记录','详细信息']"
  13. :justsaler="1"
  14. @pageChange="pageChange"
  15. @onEditSuccess="queryMainData($route.query.id)"
  16. @detailCreate="detailCreate">
  17. <div slot="customOperation">
  18. <edit class="inline-16" v-if="Object.keys(mainData).length > 0 && tool.checkAuth($route.name,'update')" :disabled="!isHandle" :data="mainData" @onSuccess="queryMainData"/>
  19. <follow :detailInfo="mainData"
  20. v-if="tool.checkAuth($route.name,'follow')"
  21. @updataList="queryMainData();$refs.followDetail.getFollowDetail()" @onSuccess="onFollow" :disabled="!isHandle" :data="mainData"></follow>
  22. <!-- <move :data="mainData"
  23. @updataList="queryMainData"
  24. :teamList="teamList()"
  25. v-if="userInfo.isAuth == 1 ? mainData.status == '待跟进' || mainData.status == '跟进中' : ''"></move> -->
  26. <changeProject v-if="mainData.isproject == 0 && tool.checkAuth($route.name,'changeProject')" :data="mainData" :disabled="!isHandle" class="inline-16" @onChangeProject="queryMainData($route.query.id)"/>
  27. <changeCustomer v-if="mainData.iscustomer == 0 && tool.checkAuth($route.name,'changeCutomer')" :data="mainData" :disabled="!isHandle" class="inline-16" @onChangeCustomer="onChangeCustomer"></changeCustomer>
  28. <el-button :type="!isHandle || mainData.status === '已无效'?'':'primary'" v-if="tool.checkAuth($route.name,'goBack') && mainData.status != '已转化' && mainData.isprivate !== 1" :disabled="!isHandle || mainData.status === '已无效'" class="inline-16" size="mini" @click="goBack">退 回</el-button>
  29. <noNull v-if="tool.checkAuth($route.name,'noNull') && mainData.status != '已转化' " class="inline-16" :data="mainData" :disabled="!isHandle" @onSuccess="$store.dispatch('changeDetailDrawer',false);$router.replace('/orderclue')" :id="mainData.sat_orderclueid"/>
  30. <Del v-if="tool.checkAuth($route.name,'delete') && mainData.status != '已转化'" class="inline-16" :data="mainData" :disabled="!isHandle" :idName="20221123193702" @onSuccess="$store.dispatch('changeDetailDrawer',false);$router.replace('/orderclue')" :id="mainData.sat_orderclueid" idKey="sat_orderclueids"/>
  31. </div>
  32. <div slot="slot1" class="container normal-panel">
  33. <BaseInfo :detailInfo="detailInfo"/>
  34. </div>
  35. <div slot="slot0">
  36. <followDetail ref="followDetail"/>
  37. </div>
  38. </basicDetails>
  39. </div>
  40. </template>
  41. <script>
  42. import BaseInfo from '@/HDrpManagement/projectChange/modules/modules/baseInfo/baseInfo'
  43. import followDetail from '@/SManagement/orderclue_detail/components/followDetail'
  44. import follow from '@/SManagement/orderclue/components/follow'
  45. import move from '@/SManagement/orderclue/components/move'
  46. import edit from '@/SManagement/orderclue/components/edit'
  47. import Del from './components/delete'
  48. import noNull from './components/noNull'
  49. import changeProject from './components/changeProject'
  50. import changeCustomer from './components/changeCustomer'
  51. export default {
  52. name: "detail",
  53. inject:['teamList'],
  54. data() {
  55. return {
  56. mainData:{},
  57. mainAreaData:{},
  58. detailInfo:{},
  59. userInfo:JSON.parse(window.sessionStorage.getItem('userInfo')),
  60. isHandle:''
  61. }
  62. },
  63. components:{
  64. BaseInfo,
  65. followDetail,
  66. follow,
  67. move,
  68. Del,
  69. noNull,
  70. changeProject,
  71. changeCustomer,
  72. edit
  73. },
  74. watch: {
  75. mainData(val) {
  76. let is
  77. if (Object.keys(JSON.parse(window.sessionStorage.getItem('userInfo'))).length > 0) {
  78. console.log('负责人逻辑');
  79. if(this.mainData.leader.length <= 0 ) return
  80. if(JSON.parse(window.sessionStorage.getItem('userInfo')).userid == this.mainData.leader[0].userid) {
  81. is = true
  82. } else {
  83. is = false
  84. }
  85. } else {
  86. console.log('不是负责人逻辑');
  87. is = true
  88. }
  89. this.isHandle = is
  90. console.log(this.isHandle,'权限');
  91. }
  92. },
  93. methods:{
  94. detailCreate (param) {
  95. param.content.isAll = 0
  96. },
  97. async queryMainData(id) {
  98. const res = await this.$api.requested({
  99. "classname": "saletool.orderclue.web.orderclue",
  100. "method": "selectDetail",
  101. "content": {
  102. "sat_orderclueid": this.$route.query.id
  103. }
  104. })
  105. this.mainData = res.data
  106. this.$refs.details.param.content.type = this.$route.query.tabIndex
  107. console.log(this.mainData,"销售线索手机号数据");
  108. this.changeDataStructure()
  109. },
  110. changeDataStructure() {
  111. var that = this
  112. this.mainAreaData = [
  113. {
  114. label:'客户名称',
  115. value:this.mainData.enterprisename_customer
  116. },
  117. {
  118. label:'联系人',
  119. value:this.mainData.name
  120. },
  121. {
  122. label:'手机号',
  123. value:this.mainData.phonenumber
  124. },
  125. {
  126. label:'来源',
  127. value:this.mainData.cluesource
  128. },
  129. {
  130. label:'市场活动',
  131. value:this.mainData.campaign_name
  132. },
  133. {
  134. label:'负责人',
  135. value:this.mainData.leader.length > 0 && this.mainData.leader[0].name
  136. },
  137. {
  138. label:'分配状态',
  139. value:this.mainData.allocationstatus
  140. },
  141. {
  142. label:'跟进状态',
  143. value:this.mainData.status,
  144. style:function () {
  145. let style = {}
  146. switch (that.mainData.status) {
  147. case '已过期':
  148. style = {color:'#333'}
  149. break;
  150. case '跟进中':
  151. style = {color:'#52C41A'}
  152. break;
  153. case '待跟进':
  154. style = {color:'#3874f6'}
  155. break;
  156. case '已无效':
  157. style = {color:'#333333'}
  158. break;
  159. case '已转化':
  160. style = {color:'#fa8c16'}
  161. break;
  162. default:
  163. break;
  164. }
  165. return style
  166. }
  167. },
  168. {
  169. label:'跟进次数',
  170. value:this.mainData.followcount
  171. },
  172. ]
  173. this.detailInfo = {
  174. baseInfo: [
  175. {
  176. label:'客户',
  177. value:this.mainData.enterprisename_customer
  178. },
  179. {
  180. label:'联系人',
  181. value:this.mainData.name
  182. },
  183. {
  184. label:'手机号',
  185. value:this.mainData.phonenumber
  186. },
  187. {
  188. label:'省市县',
  189. value:`${this.mainData.province}-${this.mainData.city}-${this.mainData.county}`
  190. },
  191. {
  192. label:'地址',
  193. value:this.mainData.address
  194. },
  195. {
  196. label:'项目名称',
  197. value:this.mainData.projectname
  198. },
  199. {
  200. label:'项目规模',
  201. value:this.mainData.scale
  202. },
  203. {
  204. label:'总投资额(百万)',
  205. value:this.mainData.totalinvestment
  206. },
  207. {
  208. label:'造价(百万)',
  209. value:this.mainData.costofconstruction
  210. },
  211. {
  212. label:'预计开工时间',
  213. value:this.mainData.begdate_due
  214. },
  215. {
  216. label:'预计完工时间',
  217. value:this.mainData.enddate_due
  218. },
  219. {
  220. label:'市场活动',
  221. value:this.mainData.campaign_name
  222. },
  223. {
  224. label:'来源',
  225. value:this.mainData.cluesource
  226. },
  227. {
  228. label:'线索概况',
  229. value:this.mainData.notes
  230. },
  231. {
  232. label:'所属业务员',
  233. value:this.mainData.salename
  234. },
  235. {
  236. label:'负责人',
  237. value:this.mainData.leader.length > 0 && this.mainData.leader[0].name
  238. },
  239. {
  240. label:'分配状态',
  241. value:this.mainData.allocationstatus,
  242. style:function () {
  243. let style = {}
  244. switch (that.mainData.status) {
  245. case '已分配':
  246. style = {color:'#333333'}
  247. break;
  248. case '待分配':
  249. style = {color:'#3874f6'}
  250. break;
  251. default:
  252. break;
  253. }
  254. return style
  255. }
  256. },
  257. // {
  258. // label:'负责人',
  259. // value:this.mainData.leader[0].name
  260. // },
  261. {
  262. label:'跟进状态',
  263. value:this.mainData.status,
  264. style:function () {
  265. let style = {}
  266. switch (that.mainData.status) {
  267. case '已过期':
  268. style = {color:'#333'}
  269. break;
  270. case '跟进中':
  271. style = {color:'#52C41A'}
  272. break;
  273. case '待跟进':
  274. style = {color:'#3874f6'}
  275. break;
  276. case '已无效':
  277. style = {color:'#333333'}
  278. break;
  279. case '已转化':
  280. style = {color:'#fa8c16'}
  281. break;
  282. default:
  283. break;
  284. }
  285. return style
  286. }
  287. },
  288. ],
  289. systemInfo: [
  290. {label:'创建人',value:this.mainData.createBy},
  291. {label:'创建时间',value:this.mainData.createDate},
  292. {label:'分配人',value:this.mainData.assignedBy},
  293. {label:'分配时间',value:this.mainData.assignedDate},
  294. {label:'最近编辑人',value:this.mainData.editBy},
  295. {label:'最近编辑时间',value:this.mainData.editDate},
  296. {label:'最近跟进人',value:this.mainData.followBy},
  297. {label:'最近跟进时间',value:this.mainData.followDate},
  298. {label:'无效原因',value:this.mainData.invalidreason},
  299. {label:'作废原因',value:this.mainData.deletereason},
  300. {label:'跟进次数',value:this.mainData.followcount === 0?'0':this.mainData.followcount},
  301. /*{label:'转化次数',value:this.mainData.isproject === 0 && this.mainData.iscustomer === 0?'0':this.mainData.isproject + this.mainData.iscustomer },*/
  302. {label:'转手次数', value:this.mainData.leader[0].leadernum === 0?'0':this.mainData.leader[0].leadernum},
  303. ]
  304. }
  305. },
  306. goBack () {
  307. this.$confirm('退回该线索后无法撤销,是否继续','提示',{
  308. "confirmButtonText":'确定',
  309. "cancelButtonText":'取消'
  310. }).then(async confirm => {
  311. let res = await this.$api.requested({
  312. "id":20221207160802,
  313. "content": {
  314. sat_orderclueid: this.mainData.sat_orderclueid
  315. }
  316. })
  317. this.tool.showMessage(res , () => {
  318. this.$store.dispatch('changeDetailDrawer',false)
  319. this.$router.push('/orderclue')
  320. })
  321. })
  322. },
  323. // 监听切换数据,上一页,下一页
  324. pageChange (id,rowindex,tabIndex) {
  325. this.flag = false
  326. tabIndex = this.$route.query.tabIndex
  327. this.$router.replace({path:'/orderclue_detail',query:{id:id,rowindex:rowindex,tabIndex:tabIndex}})
  328. this.queryMainData(id)
  329. },
  330. onChangeCustomer(){
  331. this.queryMainData(this.$route.query.id)
  332. },
  333. onFollow(){
  334. this.$refs.followDetail.getFollowDetail()
  335. this.queryMainData()
  336. }
  337. },
  338. mounted () {
  339. this.queryMainData(this.$route.query.id)
  340. },
  341. created() {
  342. }
  343. }
  344. </script>
  345. <style scoped>
  346. </style>