customDetail.vue 59 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876
  1. <template>
  2. <div class="customDetail_box" v-if="showData">
  3. <div class="customDetail_container" style="display:flex">
  4. <div class="left_form_cont" style="flex:1;margin-right:100px">
  5. <p class="page-title">基础信息</p>
  6. <ul class="detail_item" v-if="basicform">
  7. <li style="width:40%">
  8. <label class="label">客户名称</label>
  9. <span class="con">
  10. <span style="margin-right: 10px;">{{basicform.CompanyName}} </span>
  11. <el-tooltip content="此客户存在长期且反复申请试用,但从未签约的情况,请谨慎领取" placement="top" :open-delay="500"
  12. v-if="RaiSellerRole && basicform.IsScrounge==1" >
  13. <img width="16" style="cursor: pointer;vertical-align: text-top;" src="../../../assets/img/icons/warning_triangle_yellow.png" />
  14. </el-tooltip>
  15. </span>
  16. </li>
  17. <li style="width:26%">
  18. <label class="label">所属区域</label>
  19. <span class="con">{{basicform.RegionType}}</span>
  20. </li>
  21. <li v-if="basicform.RegionType==='海外'">
  22. <label class="label">所属国家</label>
  23. <span class="con">{{basicform.Nation}}</span>
  24. </li>
  25. <li v-else>
  26. <label class="label">客户地址</label>
  27. <span class="con">{{basicform.Province}}<span v-if="basicform.Province">/</span>{{basicform.City}}</span>
  28. </li>
  29. <li style="width:40%">
  30. <label class="label">社会信用码</label>
  31. <span class="con">{{basicform.CreditCode}}</span>
  32. </li>
  33. <li style="width:26%">
  34. <label class="label">客户类型</label>
  35. <span class="con">{{raiform&&ficcform?'FICC/权益':basicform.CreateAuth==1?'FICC':"权益"}}</span>
  36. </li>
  37. </ul>
  38. <!-- 权益类型信息 -->
  39. <template v-if="raiform">
  40. <p class="page-title">权益类型信息</p>
  41. <ul class="detail_item" style="margin-bottom:0">
  42. <li style="width:40%">
  43. <label class="label">客户状态</label>
  44. <span class="con">{{raiform.Status}}</span>
  45. </li>
  46. <li style="width:26%">
  47. <label class="label">所属销售</label>
  48. <span class="con">{{raiform.SellerName}}</span>
  49. </li>
  50. <li>
  51. <label class="label">所属行业</label>
  52. <span class="con">{{raiform.IndustryName}}</span>
  53. </li>
  54. <li style="width:40%">
  55. <label class="label">客户来源</label>
  56. <span class="con">{{raiform.Source}}</span>
  57. </li>
  58. <!-- <li style="width:50%">
  59. <label class="label">备注</label>
  60. <span class="con">{{raiform.Reasons}}</span>
  61. </li> -->
  62. <li style="width:23%">
  63. <label class="label">管理规模</label>
  64. <span class="con">{{raiform.Scale ==1?'50亿以下':raiform.Scale ==2?'50~100亿':raiform.Scale ==3?'100亿以上':''}}</span>
  65. </li>
  66. <li v-if="raiform.SpecialSurplus">
  67. <label class="label-num" >专项调研剩余次数</label>
  68. <span class="con">{{raiform.SpecialSurplus}} <span class="editsty" @click="clickDlgNumberHandler('专项调研')">明细>></span></span>
  69. </li>
  70. <li v-if="RoleType==='admin'" style="width:100%">
  71. <label class="label"
  72. >客户编码</label>
  73. <span class="con" style="word-break: break-word;">{{raiform.OpenCode}}</span>
  74. </li>
  75. <li style="width:100%" v-if="raiform.Points">
  76. <label class="label-num">研选服务点数</label>
  77. <span class="con" style="word-break: break-word;">{{raiform.Points}}</span>
  78. <span v-if="raiform.Points" @click="clickDlgNumberHandler('研选服务')" class="con" style="word-break: break-word;color:#409EFF;padding-left:10px;cursor: pointer;">明细>></span>
  79. </li>
  80. </ul>
  81. <el-collapse v-model="raiCollapseOpen" accordion>
  82. <el-collapse-item name="1">
  83. <template slot="title">
  84. <p style="display:inline-block;font-size:15px;padding-left:23px">
  85. <span style="font-weight:bold">权限设置</span>
  86. <span style="color:#1989FA;display:inline-block;margin-left:10px">{{raiCollapseOpen=='1'?'收起':'展开'}}</span>
  87. </p>
  88. </template>
  89. <!-- <CpessionTable fromType="detail" :authList="raiform.authList"/> -->
  90. <CpessionTableEquity fromType="detail" :authList="raiform.authList"/>
  91. </el-collapse-item>
  92. </el-collapse>
  93. </template>
  94. <!-- FICC类型信息 -->
  95. <template v-if="ficcform">
  96. <p class="page-title">FICC类型信息</p>
  97. <ul class="detail_item" style="margin-bottom:0">
  98. <li style="width:40%">
  99. <label class="label">客户状态</label>
  100. <span class="con">{{ficcform.Status}}</span>
  101. </li>
  102. <li style="width:26%">
  103. <label class="label">所属销售</label>
  104. <span class="con">{{ficcform.SellerName}}</span>
  105. </li>
  106. <li>
  107. <label class="label">所属行业</label>
  108. <span class="con">{{ficcform.IndustryName}}</span>
  109. </li>
  110. <li style="width:40%">
  111. <label class="label">客户来源</label>
  112. <span class="con">{{ficcform.Source}}</span>
  113. </li>
  114. <!-- <li style="width:50%">
  115. <label class="label">备注</label>
  116. <span class="con">{{ficcform.Reasons}}</span>
  117. </li> -->
  118. <li v-if="RoleType==='admin'">
  119. <label class="label">客户编码</label>
  120. <span class="con" style="word-break: break-word;">{{ficcform.OpenCode}}</span>
  121. </li>
  122. </ul>
  123. <el-collapse v-model="ficcCollapseOpen" accordion>
  124. <el-collapse-item name="1">
  125. <template slot="title">
  126. <p style="display:inline-block;font-size:15px;padding-left:23px">
  127. <span style="font-weight:bold">权限设置</span>
  128. <span style="color:#1989FA;display:inline-block;margin-left:10px">{{ficcCollapseOpen=='1'?'收起':'展开'}}</span>
  129. </p>
  130. </template>
  131. <CpessionTable fromType="detail" :authList="ficcform.authList"/>
  132. </el-collapse-item>
  133. </el-collapse>
  134. </template>
  135. </div>
  136. <div style="flex-shrink: 0;">
  137. <div style="display:flex;justify-content:flex-end;align-items: center;gap:0 20px;margin:0 0 30px;">
  138. <span style="color:#409EFF;cursor:pointer;font-size: 14px;margin-right: 20px;" v-if="isBtnShow.BtnHistoryList&&dealList.length" @click="previewHistory">历史签约</span>
  139. <el-button type="primary" style="width:100px;" @click="editHandle" v-if="isBtnShow.BtnEdit">编辑</el-button>
  140. <el-button type="danger" plain style="width:100px;" @click="delHandle" v-if="isBtnShow.BtnDelete">删除</el-button>
  141. </div>
  142. <Ctimeline :id="companyId"></Ctimeline>
  143. </div>
  144. </div>
  145. <!-- 联系人 -->
  146. <div class="customDetail_container" style="marginTop:20px;padding:30px 40px 80px 60px;">
  147. <div class="customList_bot_top">
  148. <div >
  149. <div v-if="isContractButtonShow">
  150. <input type="file" size="small" name="file" @change="fileSelected()" id="fileImport" class="true-file" style="display:none;">
  151. <el-button type="primary" @click="addConcat">添加联系人</el-button>
  152. <el-button type="primary" @click.native="importHandle">批量导入</el-button>
  153. <!-- <span style="fontSize:16px;color:#AAB4CC;">(请至少添加一位联系人)</span> -->
  154. <!-- <el-button v-if="RoleType=='admin' || isUserYanXuanButtonShow" style="margin-left:20px" type="primary" @click="exportDataIsShow=true">导出数据</el-button> -->
  155. <a :href="downTemplate" download style="fontSize:14px;color:#409eff;margin-left:30px">下载导入模板</a>
  156. </div>
  157. </div>
  158. <div style="display: flex">
  159. <template v-if="!isUserYanXuanButtonShow">
  160. <el-select
  161. v-model="IsSubscribe"
  162. placeholder="是否关注公众号"
  163. multiple
  164. clearable
  165. style="margin-right: 10px;width: 300px;"
  166. @change="changeSubscribe"
  167. >
  168. <el-option
  169. label="已关注弘则研究"
  170. value="1"
  171. :disabled="IsSubscribe.includes('2')"
  172. />
  173. <el-option
  174. label="已关注查研观向小助手"
  175. value="3"
  176. :disabled="IsSubscribe.includes('4')"
  177. />
  178. <el-option
  179. label="未关注弘则研究"
  180. value="2"
  181. :disabled="IsSubscribe.includes('1')"
  182. />
  183. <el-option
  184. label="未关注查研观向小助手"
  185. value="4"
  186. :disabled="IsSubscribe.includes('3')"
  187. />
  188. </el-select>
  189. <el-select v-model="platform_type" style="margin-right: 10px;width: 250px;" @change="changeSubProductHandle">
  190. <el-option
  191. v-for="item in platformOption"
  192. :key="item.key"
  193. :label="item.ProductName"
  194. :value="item.key"
  195. >
  196. {{ item.ProductName }}
  197. </el-option>
  198. </el-select>
  199. </template>
  200. <el-input
  201. placeholder="姓名/手机号码/邮箱"
  202. v-model="search_txt"
  203. style="maxWidth:400px"
  204. @input="searchUser"
  205. clearable>
  206. <i slot="prefix" class="el-input__icon el-icon-search"></i>
  207. </el-input>
  208. </div>
  209. </div>
  210. <div class="bot_cont">
  211. <el-table
  212. ref="userTable"
  213. :data="userTable"
  214. v-loading="isShowloadding"
  215. :row-class-name="setRowClass"
  216. element-loading-text="数据加载中..."
  217. border>
  218. <el-table-column
  219. prop="RealName"
  220. label="姓名"
  221. align="center"
  222. min-width="80px"
  223. >
  224. <template slot-scope="scope"
  225. :class="{'isShared':scope.row.IsShared}"
  226. >
  227. <img :src="$icons.card" alt="" style="width:17px;cursor:pointer;marginRight:5px;"
  228. v-if="scope.row.BusinessCardUrl"
  229. @click="reviewCard(scope.row.BusinessCardUrl)">
  230. <img src="~@/assets/img/icons/like-heart.png" class="name-follow-heart" v-if="scope.row.IsFollow==1">
  231. <span :class="{'isShared':scope.row.IsShared}">{{scope.row.RealName}}</span>
  232. </template>
  233. </el-table-column>
  234. <el-table-column prop="Position" label="职位" align="center" min-width="80px"></el-table-column>
  235. <el-table-column
  236. prop="Mobile"
  237. label="手机号"
  238. align="center"
  239. min-width="100">
  240. <template slot-scope="scope"><span v-if="scope.row.Mobile&&scope.row.CountryCode">{{scope.row.CountryCode}}-</span><span>{{scope.row.Mobile+(scope.row.MobileTwo?'/'+scope.row.MobileTwo:'')}}</span> </template>
  241. </el-table-column>
  242. <el-table-column
  243. prop="Email"
  244. label="邮箱"
  245. min-width="120"
  246. align="center">
  247. <template slot-scope="scope"> <span>{{scope.row.Email}}</span> </template>
  248. </el-table-column>
  249. <el-table-column
  250. prop="IsMaker"
  251. label="是否KP"
  252. align="center">
  253. <template slot-scope="scope"> <span>{{scope.row.IsMaker==1?'是':'否'}}</span> </template>
  254. </el-table-column>
  255. <!-- crm 14.7 -->
  256. <template v-if="isUserYanXuanButtonShow">
  257. <el-table-column
  258. prop="IsRegister"
  259. label="是否绑定"
  260. width="90"
  261. align="center">
  262. <template slot-scope="scope">
  263. <div style="text-align:left; display: flex;align-items: center;">
  264. <img v-if="scope.row.MfyxIsBinding" style="width:16px;height:16px;margin-right: 5px;" src="~@/assets/img/icons/icon_1.png" alt="">
  265. <img v-else style="width:16px;height:16px;margin-right: 5px;" src="~@/assets/img/icons/icon_2.png" alt="">
  266. <span>{{scope.row.MfyxIsBinding?'已绑定':'未绑定'}}</span>
  267. </div>
  268. </template>
  269. </el-table-column>
  270. <el-table-column
  271. prop="CreatedTime"
  272. label="绑定时间"
  273. min-width="150"
  274. align="center">
  275. <template slot-scope="scope"> <span>{{scope.row.MfyxBindingTime}}</span> </template>
  276. </el-table-column>
  277. </template>
  278. <template v-else>
  279. <el-table-column
  280. prop="IsRegister"
  281. label="是否注册"
  282. align="center">
  283. <template slot-scope="scope"> <span>{{scope.row.IsRegister?'已注册':'未注册'}}</span> </template>
  284. </el-table-column>
  285. <el-table-column
  286. prop="CreatedTime"
  287. label="注册时间"
  288. min-width="150"
  289. align="center">
  290. <template slot-scope="scope"> <span>{{scope.row.RegisterTime|formatTime}}</span> </template>
  291. </el-table-column>
  292. </template>
  293. <el-table-column
  294. prop="IsSubscribeHzyj"
  295. label="是否关注公众号"
  296. min-width="90"
  297. align="center">
  298. <template slot-scope="scope">
  299. <div style="text-align:left" v-if="RoleType !=='权益'">
  300. <img v-if="scope.row.IsSubscribeHzyj==1" style="width:16px;height:16px" src="~@/assets/img/icons/icon_1.png" alt="">
  301. <img v-else style="width:16px;height:16px" src="~@/assets/img/icons/icon_2.png" alt="">
  302. <span>弘则研究</span>
  303. </div>
  304. <div style="text-align:left">
  305. <img v-if="scope.row.IsSubscribeCygx==1" style="width:16px;height:16px" src="~@/assets/img/icons/icon_1.png" alt="">
  306. <img v-else style="width:16px;height:16px" src="~@/assets/img/icons/icon_2.png" alt="">
  307. <span>查研观向小助手</span>
  308. </div>
  309. </template>
  310. </el-table-column>
  311. <!-- crm 14.7 -->
  312. <el-table-column
  313. v-if="isUserYanXuanButtonShow"
  314. prop="IsRegister"
  315. label="互动次数"
  316. align="center">
  317. <template slot-scope="scope"> <span class="editsty" @click="MfyxInteractionNumHandler(scope.row)">{{scope.row.MfyxInteractionNum}}</span> </template>
  318. </el-table-column>
  319. <!-- crm 14.7 -->
  320. <el-table-column
  321. v-if="!isUserYanXuanButtonShow"
  322. prop="ViewTotal"
  323. label="累计阅读次数"
  324. align="center">
  325. <template slot-scope="scope"> <span>{{scope.row.ViewTotal||'暂无'}}</span> </template>
  326. </el-table-column>
  327. <el-table-column
  328. prop="LastViewTimeStr"
  329. label="最近一次阅读时间"
  330. min-width="150"
  331. align="center">
  332. <template slot-scope="scope"> <span>{{scope.row.ViewTotal?scope.row.LastViewTimeStr:''|formatTime}}</span> </template>
  333. </el-table-column>
  334. <el-table-column
  335. v-if="!isUserYanXuanButtonShow"
  336. label="研报统计"
  337. align="center">
  338. <template slot-scope="scope"> <span v-if="scope.row.ViewTotal!=0" class="editsty" @click="lookReport(scope.row)" :disabled="!isContractButtonShow" >点击查看</span></template>
  339. </el-table-column>
  340. <el-table-column
  341. v-if="ficcform && !isUserYanXuanButtonShow"
  342. prop="YbProductViewTotal"
  343. label="其他统计"
  344. min-width="110"
  345. align="center">
  346. <template slot-scope="scope"> <span :class="scope.row.YbProductViewTotal?'editsty':''" @click="lookReadInfo(scope.row)">{{scope.row.YbProductViewTotal||'0'}}</span> </template>
  347. </el-table-column>
  348. <!-- crm 14.7 -->
  349. <template v-if="isUserYanXuanButtonShow">
  350. <el-table-column
  351. prop="IsRegister"
  352. label="个人研选订阅权限"
  353. width="140"
  354. align="center">
  355. <template slot-scope="scope">
  356. <div style="text-align:left; display: flex;align-items: center;">
  357. <img v-if="scope.row.MfyxStatus=='试用'" style="width:16px;height:16px;margin-right: 5px;" src="~@/assets/img/icons/icon_1.png" alt="">
  358. <img v-else style="width:16px;height:16px;margin-right: 5px;" src="~@/assets/img/icons/icon_2.png" alt="">
  359. <span>{{scope.row.MfyxStatus}}</span>
  360. </div>
  361. </template>
  362. </el-table-column>
  363. <el-table-column
  364. prop="CreatedTime"
  365. label="研选服务期限"
  366. min-width="150"
  367. align="center">
  368. <template slot-scope="scope"> <span>{{scope.row.MfyxStartDate}} -- {{scope.row.MfyxEndDate}}</span> </template>
  369. </el-table-column>
  370. </template>
  371. <el-table-column label="操作" align="center" min-width="150">
  372. <template slot-scope="scope" v-if="isContractButtonShow">
  373. <div class="contact-opt-box" style="color:#4099ef; font-size:14px;">
  374. <span class="editsty" @click="editContact(scope.row)">编辑</span>
  375. <span class="editsty move" style="margin:0 5px;" @click="handleShowMove(scope.row)">移动</span>
  376. <span style="margin-right:5px;" :class="scope.row.IsFollow==1?'deletesty':'editsty'"
  377. @click="followContact(scope.row)"
  378. >{{ scope.row.IsFollow==1?'取消关注':'关注' }}</span>
  379. <span class="deletesty" @click.stop="delConcat(scope.row)">删除</span>
  380. <!-- <block v-if="RoleType!='权益'&&ficcform&&['正式','试用','永续'].includes(ficcform.Status)">
  381. <span
  382. class="chart"
  383. @click.stop="handleShowChartAuth(scope.row)"
  384. v-if="scope.row.IsChartPermissionSetting==0"
  385. style="color:#4099ef"
  386. >图表权限</span>
  387. <span
  388. class="chart"
  389. @click.stop="handleShowChartAuth(scope.row)"
  390. v-if="scope.row.IsChartPermissionSetting==1"
  391. style="color:#13ce66"
  392. >图表权限</span>
  393. <span
  394. class="chart"
  395. v-if="scope.row.IsChartPermissionSetting==2"
  396. style="color:#bbb"
  397. >图表权限</span>
  398. </block> -->
  399. <p v-if="isUserYanXuanButtonShow" class="editsty" @click="isOpenMfyxStatusHandler(scope.row)">{{scope.row.MfyxStatus =='试用'?'关闭研选订阅试用':'开通研选订阅试用'}} </p>
  400. </div>
  401. </template>
  402. </el-table-column>
  403. <div slot="empty" style="lineHeight:40px;margin:30px 0;color:#999;">
  404. <img src="~@/assets/img/cus_m/nodata.png" alt="" style="display:block;width:160px;height:128px;margin: auto;">
  405. <span>暂无联系人</span>
  406. </div>
  407. </el-table>
  408. <el-col :span="24" class="toolbar">
  409. <el-pagination
  410. layout="total,prev,pager,next,jumper"
  411. background
  412. :current-page="page_no"
  413. @current-change="handleCurrentChange"
  414. page-size="10"
  415. :total="total"
  416. style="float:right;">
  417. </el-pagination>
  418. </el-col>
  419. </div>
  420. </div>
  421. <!-- 添加联系人弹窗 -->
  422. <Contactdia
  423. :userId="userId"
  424. :name="defaultName"
  425. :id="companyId"
  426. :title="diatit"
  427. :userForm="diaform"
  428. :custom_name="diaform.companyName"
  429. :isAddContact="isAddContact"
  430. :regionType="regionType"
  431. :isEditUser="true"
  432. @cancel="canceldialog"
  433. >
  434. </Contactdia>
  435. <!-- 阅读报告弹窗 -->
  436. <Readia
  437. :readId="readId"
  438. :lookRead="isRead"
  439. :title="readTit"
  440. @cancelRead="cancelRead">
  441. </Readia>
  442. <!-- 图片预览 -->
  443. <el-image-viewer
  444. v-if="showViewer"
  445. :on-close="closeViewer"
  446. :url-list="[imgView]" />
  447. <!-- 历史签约弹窗 旧版-->
  448. <!-- <el-dialog
  449. :visible.sync="isPreview"
  450. :modal-append-to-body='false'
  451. :show-close="false"
  452. custom-class="customDetail_contract_dialog"
  453. center
  454. top="7vh"
  455. v-dialogDrag
  456. width="60%">
  457. <div slot="title" style="display:flex;alignItems:center;">
  458. <span style="fontSize:16px;color:#333;fontWeight:bold;">历史签约</span>
  459. </div>
  460. <template v-if="dealList.length">
  461. <div v-for="(item,index) in dealList" :key="index" class="history_item">
  462. <el-tag style="margin-bottom:30px;margin-right:10px" size="small">合同编号:{{item.ContractCode}}</el-tag>
  463. <div style="display:inline-block">
  464. <span style="margin-right:5px;border:1px solid #409eff;padding:4px 8px;font-size:12px;color:#409eff;background:#ecf5ff;border-radius:4px">
  465. {{item.ContractType}}
  466. </span>
  467. <el-tooltip
  468. class="item"
  469. effect="dark"
  470. v-if="item.ContractType!='补充协议'"
  471. placement="top-start">
  472. <div slot="content" v-if="item.ContractType=='新签合同'">没有正式转试用记录的客户,在申请转正时提交的合同</div>
  473. <div slot="content" v-if="item.ContractType=='续约合同'">
  474. 1、有正式转试用记录的客户,在申请转正时提交的合同<br>
  475. 2、所有客户在续约申请时提交的合同
  476. </div>
  477. <i class="el-icon-info"></i>
  478. </el-tooltip>
  479. </div>
  480. <ul class="detail_item">
  481. <li>
  482. <span style="min-width:300px;marginRight:200px;display:inline-block;">合同期限:{{item.StartDate+'~'+item.EndDate}}</span>
  483. <span>合同金额:{{item.Money}}元</span>
  484. </li>
  485. <li>
  486. <span style="min-width:300px;marginRight:200px;display:inline-block;">付款方式:{{item.PayMethod}}</span>
  487. <span>付款渠道:{{item.PayChannel}}</span>
  488. </li>
  489. <li>
  490. <span style="min-width:300px;marginRight:200px;display:inline-block;">审批时间:{{item.ModifyTimeStr|formatTime}}</span>
  491. </li>
  492. <li class="textarea_item" style="width:97%;">
  493. <label style="display:block;marginBottom:20px;fontSize:16px;position:relative;">
  494. 权限设置
  495. </label>
  496. <ul class="menu_lists">
  497. <li v-for="auth in item.PermissionList" :key="auth.ClassifyName" class="menu_item">
  498. <el-checkbox :indeterminate="auth.CheckList.length>0&&auth.CheckList.length<auth.Items.length" v-model="auth.CheckAll" disabled @change="handleCheckAll(item)" style="marginRight:30px;fontWeight:bold;">{{auth.ClassifyName+':'}}</el-checkbox>
  499. <el-checkbox-group v-model="auth.CheckList" @change="handleChecked(item)" disabled>
  500. <el-checkbox v-for="list in auth.Items" :label="list.ChartPermissionId" :key="list.ChartPermissionId" class="list_item">{{list.PermissionName}}</el-checkbox>
  501. </el-checkbox-group>
  502. </li>
  503. </ul>
  504. </li>
  505. <li class="textarea_item" style="width:97%;display:flex" v-if="item.ImgUrl!=''">
  506. <label style="marginRight:17px;fontSize:16px;position:relative;width:112px;">
  507. 查看合同附件
  508. </label>
  509. <ul class="img_cont">
  510. <li v-for="img in item.constractFiles" :key="img" class="img_item" style="display:inline-block;margin-right:10px">
  511. <el-image :src="require('@/assets/img/constract/word-icon.png')" style="width:240px;height:180px;" v-if="img.type=='word'" @click.native="preViewConstractFile(img)"></el-image>
  512. <pdf ref="pdf" :src="img.url" style="width:240px;height:180px;overflow:hidden" v-else-if="img.type=='pdf'" @click.native="preViewConstractFile(img)"></pdf>
  513. <el-image :src="img.url" :preview-src-list="constractFileImgList" alt="" style="background:#aaa;width:240px;height:180px;" v-else @click.native="preViewConstractFile(item.constractFiles)"/>
  514. <i class="el-icon-zoom-in" style="position:absolute;right:12px;top:12px;color:#fff;" @click="preViewConstractFile(img)"></i>
  515. </li>
  516. </ul>
  517. </li>
  518. </ul>
  519. </div>
  520. </template>
  521. <span v-else>暂无历史合同</span>
  522. </el-dialog> -->
  523. <!-- 导入的联系人表格 -->
  524. <el-dialog
  525. title="批量导入"
  526. :visible.sync="isShowImportDia"
  527. :close-on-click-modal="false"
  528. :modal-append-to-body='false'
  529. @close="cancelImport"
  530. center
  531. width="1000px">
  532. <template v-if="!isImportRepeat">
  533. <div style="fontSize:15px;color:#606266;marginBottom:20px;">请确认导入信息(已过滤信息不全的联系人):</div>
  534. <el-table :data="importData" border max-height="350">
  535. <el-table-column align="center" label="姓名">
  536. <template slot-scope="scope">{{scope.row.RealName}}</template>
  537. </el-table-column>
  538. <el-table-column align="center" label="性别">
  539. <template slot-scope="scope">{{scope.row.Sex==1?'男':scope.row.Sex==2?'女':''}}</template>
  540. </el-table-column>
  541. <el-table-column align="center" label="手机号">
  542. <template slot-scope="scope">{{scope.row.CountryCode+'-'+scope.row.Mobile||''}}</template>
  543. </el-table-column>
  544. <!-- <el-table-column align="center" label="手机号2">
  545. <template slot-scope="scope">{{scope.row.MobileTwo||''}}</template>
  546. </el-table-column> -->
  547. <el-table-column align="center" label="邮箱">
  548. <template slot-scope="scope">{{scope.row.Email||''}}</template>
  549. </el-table-column>
  550. <el-table-column align="center" label="是否KP">
  551. <template slot-scope="scope">{{scope.row.IsMaker==1?'是':'否'}}</template>
  552. </el-table-column>
  553. <el-table-column align="center" label="职位">
  554. <template slot-scope="scope">{{scope.row.Position||''}}</template>
  555. </el-table-column>
  556. <el-table-column align="center" label="部门">
  557. <template slot-scope="scope">{{scope.row.DepartmentName||''}}</template>
  558. </el-table-column>
  559. </el-table>
  560. </template>
  561. <!-- 重复联系人 -->
  562. <template v-else>
  563. <div style="font-size:16px;color:#606266;margin-bottom:10px">导入完成。</div>
  564. <div style="fontSize:16px;color:#606266;marginBottom:20px;">请单独处理以下系统中已存在的联系人:</div>
  565. <el-table :data="repeatData" border max-height="300">
  566. <el-table-column align="center" label="联系人">
  567. <template slot-scope="scope">{{scope.row.RealName}}</template>
  568. </el-table-column>
  569. <el-table-column align="center" label="手机号/邮箱" width="300">
  570. <template slot-scope="scope">
  571. {{scope.row.Mobile}}
  572. {{(scope.row.Mobile&&scope.row.Email)?'/':''}}
  573. {{scope.row.Email}}
  574. </template>
  575. </el-table-column>
  576. <el-table-column align="center" label="销售">
  577. <template slot-scope="scope">{{scope.row.SellerRealName}}</template>
  578. </el-table-column>
  579. <el-table-column align="center" label="关联客户" min-width="150">
  580. <template slot-scope="scope">{{scope.row.CompanyName}}</template>
  581. </el-table-column>
  582. <el-table-column align="center" label="操作">
  583. <template slot-scope="scope">
  584. <el-button type="text" size="small" @click="handleMoveToCurrentCustom(scope.row,scope.$index)" v-if="scope.row.HasMove">移至当前客户</el-button>
  585. </template>
  586. </el-table-column>
  587. </el-table>
  588. <p style="padding:20px 0;font-size:16px;">无法移至当前客户的联系人,请联系对应销售处理。</p>
  589. </template>
  590. <div style="display:flex;justify-content:center;margin:30px 0">
  591. <template v-if="!isImportRepeat">
  592. <el-button type="primary" style="marginRight:24px;" @click="ensureImport">确定</el-button>
  593. <el-button type="primary" plain style="width:80px;" @click="cancelImport">取消</el-button>
  594. </template>
  595. <el-button type="primary" style="width:100px;" v-else @click="cancelImport(1)">知道了</el-button>
  596. </div>
  597. </el-dialog>
  598. <!-- 移动联系人弹窗 -->
  599. <el-dialog
  600. title="提示"
  601. :visible.sync="isMove"
  602. :close-on-click-modal="false"
  603. :modal-append-to-body="false"
  604. @close="cancelMove"
  605. center
  606. top="25vh"
  607. width="500px">
  608. <div slot="title" style="display: flex; align-items: center; position: relative">
  609. <img
  610. src="../../../assets/img/icons/move.png"
  611. style="color: #fff; width: 16px; height: 16px; margin-right: 5px"/>
  612. <span style="font-size: 16px">移动联系人</span>
  613. <i
  614. class="el-icon-close"
  615. style="
  616. font-size: 24px;
  617. cursor: pointer;
  618. position: absolute;
  619. right: 20px;
  620. top: 50%;
  621. transform: translateY(-50%);
  622. "
  623. @click="cancelMove"
  624. ></i>
  625. </div>
  626. <el-form
  627. @submit.native.prevent
  628. :model="moveForm"
  629. ref="moveFormvalidate"
  630. inline
  631. :rules="moveRule"
  632. label-width="80px"
  633. class="demo-ruleForm"
  634. style="margin-top: 15px">
  635. <el-form-item
  636. label="移动到"
  637. prop="companyId"
  638. style="width: 100%">
  639. <el-select
  640. v-model="moveForm.companyId"
  641. filterable
  642. remote
  643. :remote-method="getCompany"
  644. @focus="focusGetCompany"
  645. @change="getCompanySeller"
  646. placeholder="请选择公司"
  647. style="width: 280px">
  648. <el-option
  649. v-for="item in typeArr"
  650. :key="item.CompanyId"
  651. :label="item.CompanyName"
  652. :value="item.CompanyId">
  653. </el-option>
  654. </el-select>
  655. </el-form-item>
  656. <el-form-item
  657. label="所属销售"
  658. prop="belongUser"
  659. style="width: 100%"
  660. v-if="!hideBelongUser">
  661. <el-select
  662. v-model="moveForm.belongUser"
  663. placeholder="请选择对应销售"
  664. style="width: 280px">
  665. <el-option
  666. v-for="item in belongList"
  667. :key="item.AdminId"
  668. :label="item.RealName"
  669. :value="item.AdminId">
  670. </el-option>
  671. </el-select>
  672. </el-form-item>
  673. <div v-if="isMoveShowTips&&ficcform&&['正式','试用','永续'].includes(ficcform.Status)" style="text-align:center;color:#999">提示:移动联系人会关闭该联系人的图表权限</div>
  674. <div style="display: flex; justify-content: center; margin: 30px 0 55px">
  675. <el-button type="primary" @click="submitMove">保存</el-button>
  676. <el-button @click="cancelMove">取消</el-button>
  677. </div>
  678. </el-form>
  679. </el-dialog>
  680. <!-- 设置图库权限弹窗 -->
  681. <chartAuthDialog
  682. :chartAuthClassifyList="chartAuthClassifyList"
  683. :chartAuthUserInfo="chartAuthUserInfo"
  684. :showChartAuthPop="showChartAuthPop"
  685. @chartAuthClose="showChartAuthPop=false"
  686. @chartAuthSave="chartAuthSave"
  687. ></chartAuthDialog>
  688. <export-data :exportDataIsShow.sync="exportDataIsShow" :companyId="companyId"/>
  689. <!-- 分产品阅读统计弹窗 -->
  690. <product-read-info
  691. :productReadInfoShow="productReadInfoShow"
  692. :productReadId="productReadId"
  693. :subProductId="platform_type"
  694. :subProductName="subProductName"
  695. :clickToal="clickToal"
  696. :productReadTitle="productReadTitle"
  697. @close="productReadInfoShow=false"
  698. ></product-read-info>
  699. <!-- 研选服务点数明细 弹框 -->
  700. <DeductDetailDlg :isShowResearchNumber.sync="isShowResearchNumber" :isShowDlgType.sync="isShowDlgType" :dataForm="raiform"/>
  701. <!-- 历史签约弹窗 新版 -->
  702. <HistoryContract
  703. :isPreview="isPreview"
  704. :dealList="dealList"
  705. @close="isPreview=false"
  706. />
  707. </div>
  708. </template>
  709. <script>
  710. import Ctimeline from '../compontents/Ctimeline.vue'
  711. import Contactdia from '../compontents/Contactdialog.vue'
  712. import Readia from '../compontents/ReadDialog.vue'
  713. import ElImageViewer from 'element-ui/packages/image/src/image-viewer'
  714. import CpessionTable from '../compontents/CpessionTable.vue'
  715. import { customInterence,mychartInterface } from '@/api/api.js'
  716. import{ customAllInterence } from '@/api/modules/crmApi.js'
  717. import pdf from 'vue-pdf'
  718. import chartAuthDialog from '../compontents/chartAuthDialog.vue'
  719. import CpessionTableEquity from '../compontents/CpessionTableEquity.vue'
  720. import ExportData from '../compontents/exportData.vue'
  721. import ProductReadInfo from '../compontents/ProductReadInfo.vue'
  722. import DeductDetailDlg from './components/deductDetailDlg.vue'
  723. import HistoryContract from '../compontents/historyContract.vue'
  724. import { async } from '@antv/x6/lib/registry/marker/async'
  725. export default {
  726. name:'',
  727. components: { Ctimeline, Contactdia, Readia, ElImageViewer, CpessionTable, pdf, chartAuthDialog, ExportData, CpessionTableEquity, ProductReadInfo, DeductDetailDlg, HistoryContract },
  728. computed:{
  729. Role() {
  730. let role = localStorage.getItem('Role') || '';
  731. return role;
  732. },
  733. RoleType() {
  734. let type = localStorage.getItem('RoleType') || '';
  735. return type;
  736. },
  737. RaiSellerRole(){
  738. return ['rai_seller','rai_admin','admin'].includes(this.Role)
  739. },
  740. },
  741. beforeRouteLeave(to, from, next) {
  742. from.matched[0].name='客户管理'
  743. next()
  744. },
  745. data () {
  746. return {
  747. exportDataIsShow:false,
  748. raiCollapseOpen:'0',//1展开 0 收起
  749. ficcCollapseOpen:'0',// 1展开 0 收起
  750. basicform:'',
  751. ficcform:"",
  752. raiform:"",
  753. constractFileImgList:[],//预览合同图片列表
  754. hideBelongUser:false,
  755. isMove:false,//移动联系人弹窗
  756. isMoveShowTips:false,//移动联系人弹窗中是否提示移动联系人将重置图表权限
  757. moveForm:{
  758. companyId:'',
  759. belongUser:''
  760. },
  761. moveRule:{
  762. companyId:[{ required: true, message: "公司不能为空", trigger: "change" }],
  763. belongUser:[{ required: true, message: "所属销售不能为空", trigger: "change" }]
  764. },
  765. belongList:[],//所属销售列表
  766. typeArr: [], //公司列表
  767. showData:false,//
  768. downTemplate:process.env.API_ROOT+'/custom/template?'+localStorage.getItem('auth')||'',//下载模板
  769. activeNames:'1',//默认展开
  770. companyId:this.$route.query.id,
  771. IsFullCompany:Number(this.$route.query.IsFullCompany)||0,
  772. isBtnShow:{
  773. BtnEdit:'',
  774. BtnDelete:'',
  775. },
  776. dataForm2:null,
  777. dataForm:null,
  778. fromArr:[
  779. '无',
  780. '七禾',
  781. '万德',
  782. '潮汛课堂',
  783. '进门',
  784. '全时',
  785. '鑫乐',
  786. '沃理',
  787. ],//客户来源
  788. authList:[],//权限列表1
  789. authList2:[],
  790. search_txt:'',
  791. userTable:[],//联系人表格
  792. total:1,
  793. page_no:1,
  794. isAddContact:false,//联系人弹窗
  795. userId:'',//联系人id
  796. diaform:{
  797. companyName:'',
  798. name:'',
  799. sex:1,
  800. telCode:'86',
  801. tel1:'',
  802. tel2:'',
  803. mail:'',
  804. post:'',
  805. desiger:'',
  806. depart:'',
  807. carte:'',
  808. mailQY:'',
  809. telQY:'',
  810. Source:'add_user',
  811. },//联系人表单
  812. defaultName:'',//默认公司名称
  813. diatit:'新增联系人',
  814. isRead:false,//阅读弹窗
  815. readTit:'研报统计',
  816. readId:'',
  817. showViewer:false,//名片预览
  818. imgView:'',
  819. dealList:[],//合同列表
  820. isPreview:false,//合同弹窗
  821. isShowImportDia:false,//导入联系人弹窗
  822. importData:[],//要导入的信息
  823. isImportRepeat:false,//导入数据出现重复
  824. repeatData:[],//重复的联系人
  825. importParams:null,
  826. productName:'',
  827. regionType:'',
  828. isContractButtonShow:true, //不是同一销售不允许操作 //true 默认可以操作
  829. companyStatus:"",// 删除联系人时根据此状态判断是否为 试用、正式、永续
  830. showChartAuthPop:false,//图表权限弹窗
  831. chartAuthClassifyList:[],
  832. chartAuthUserInfo:{},
  833. productReadInfoShow:false,//分产品阅读统计弹窗
  834. productReadId:0,//联系人ID
  835. productReadTitle:'',//分产品阅读统计弹窗的标题
  836. platform_type: 1,
  837. subProductName: '',//分产品名称
  838. clickToal:'',//点击量
  839. platformOption: [],
  840. IsSubscribe:[],//是否关注公众号
  841. isShowResearchNumber:false,// 研选服务点数明细 弹框
  842. isShowDlgType:'',
  843. isUserYanXuanButtonShow:false,//是否显示研选的按钮以及表格
  844. };
  845. },
  846. methods: {
  847. // 显示配置联系人图库权限弹窗
  848. async handleShowChartAuth(item){
  849. const res=await mychartInterface.commonClassify()
  850. if(res.Ret==200){
  851. this.chartAuthClassifyList=res.Data&&res.Data.List||[]
  852. }
  853. const res2=await customInterence.chartPermissionInfo({UserId:item.UserId})
  854. if(res2.Ret==200){
  855. this.chartAuthUserInfo={...res2.Data,auth:res2.Data.Enabled==0?false:true}
  856. // if(item.IsChartPermissionSetting==0){
  857. // this.chartAuthUserInfo.auth=true
  858. // }
  859. }
  860. if(res.Ret==200&&res2.Ret==200){
  861. this.showChartAuthPop=true
  862. }
  863. },
  864. // 联系人图库权限配置
  865. async chartAuthSave(){
  866. let res
  867. let params={
  868. UserId: this.chartAuthUserInfo.UserId,
  869. StartTime: this.chartAuthUserInfo.StartTime,
  870. EndTime: this.chartAuthUserInfo.EndTime,
  871. Enabled: this.chartAuthUserInfo.auth?1:0
  872. }
  873. if(this.chartAuthUserInfo.ChartPermissionId==0){
  874. res=await customInterence.chartPermissionSet(params)
  875. }else{
  876. res=await customInterence.chartPermissionEdit(params)
  877. }
  878. if(res.Ret==200){
  879. this.$message.success('保存成功')
  880. this.showChartAuthPop=false
  881. this.getuserTable()
  882. }
  883. },
  884. // 导入联系人弹窗中的移动至当前客户
  885. handleMoveToCurrentCustom(e,index){
  886. let SellerId=localStorage.getItem('AdminId')
  887. let params={
  888. CompanyId: Number(this.companyId),
  889. BusinessCardUrl:e.BusinessCardUrl,
  890. DepartmentName:e.DepartmentName,
  891. Email:e.Email,
  892. IsMaker:Number(e.IsMaker),
  893. Mobile:e.Mobile,
  894. Position:e.Position,
  895. RegionType:"",
  896. RealName:e.RealName,
  897. Remark:"",
  898. SellerId:Number(SellerId),
  899. Sex:Number(e.Sex),
  900. UserId:Number(e.UserId),
  901. }
  902. console.log(params);
  903. customInterence.moveUser(params).then(res=>{
  904. if(res.Ret==200){
  905. this.$message.success("移动成功!");
  906. this.repeatData[index].HasMove=false
  907. }
  908. })
  909. },
  910. //点击预览历史签约中的合同附件
  911. preViewConstractFile(e) {
  912. console.log(e);
  913. this.constractFileImgList=[]
  914. if(e instanceof Array){
  915. e.forEach(item=>{
  916. if(item.type==='img'){
  917. this.constractFileImgList.push(item.url)
  918. }
  919. })
  920. }else{
  921. if(e.type==='pdf'){
  922. window.open(e.url);
  923. }else if(e.type==='word'){
  924. window.open('https://view.officeapps.live.com/op/view.aspx?src='+e.url,'_blank');
  925. }
  926. }
  927. },
  928. //获取公司对应的销售列表
  929. getCompanySeller(){
  930. this.moveForm.belongUser=null
  931. customInterence.companySellerList({CompanyId:Number(this.moveForm.companyId)}).then(res=>{
  932. if(res.Ret===200){
  933. if(!res.Data.List){
  934. this.hideBelongUser=true
  935. this.moveRule.belongUser[0].required=false
  936. return
  937. }
  938. if(res.Data.List.length===1){
  939. this.moveForm.belongUser=res.Data.List[0].AdminId
  940. }
  941. this.belongList=res.Data.List
  942. this.moveRule.belongUser[0].required=true
  943. this.hideBelongUser=false
  944. }
  945. })
  946. },
  947. //显示移动联系人弹窗
  948. handleShowMove(e){
  949. this.userId = e.UserId;
  950. this.isMoveShowTips=e.IsChartPermissionSetting==0?false:true
  951. this.isMove=true
  952. },
  953. //关闭移动联系人弹窗
  954. cancelMove(){
  955. this.isMove=false
  956. this.isMoveShowTips=false
  957. this.hideBelongUser=false
  958. this.moveForm.companyId=''
  959. this.moveForm.belongUser=''
  960. this.moveRule.belongUser[0].required=true
  961. this.$refs.moveFormvalidate.resetFields();
  962. },
  963. //提交移动联系人
  964. submitMove(){
  965. this.$refs.moveFormvalidate.validate((valid,key)=>{
  966. if(!valid) return
  967. console.log(this.moveForm.companyId,this.moveForm.belongUser,this.userId);
  968. customInterence
  969. .moveCustom({
  970. CompanyId:Number(this.moveForm.companyId),
  971. SellerId:Number(this.moveForm.belongUser)||0,
  972. UserId:Number(this.userId)
  973. }).then(res=>{
  974. if(res.Ret===200){
  975. this.$message.success('移动成功');
  976. this.$router.go(0)
  977. }
  978. })
  979. })
  980. },
  981. focusGetCompany() {
  982. customInterence
  983. .companySearch({
  984. KeyWord: "##",
  985. })
  986. .then((res) => {
  987. if (res.Ret === 200) {
  988. this.typeArr = res.Data.List || [];
  989. }
  990. });
  991. },
  992. /* 过滤公司 */
  993. getCompany(query) {
  994. if (query) {
  995. customInterence
  996. .companySearch({
  997. KeyWord: query,
  998. })
  999. .then((res) => {
  1000. if (res.Ret === 200) {
  1001. this.typeArr = res.Data.List || [];
  1002. }
  1003. });
  1004. } else {
  1005. this.typeArr = [];
  1006. }
  1007. },
  1008. /* 获取客户详情 */
  1009. async getDetail() {
  1010. const res = this.IsFullCompany
  1011. ? await customAllInterence.customDetail({
  1012. CompanyId:this.companyId
  1013. })
  1014. : await customInterence.customDetail({
  1015. CompanyId:this.companyId
  1016. })
  1017. if(res.Ret!==200) return
  1018. this.isContractButtonShow=res.Data.IsContractButtonShow
  1019. this.isUserYanXuanButtonShow = res.Data.IsUserYanXuanButtonShow
  1020. this.formatCustomDetail(res)
  1021. },
  1022. formatCustomDetail(res){
  1023. this.showData = true;
  1024. this.isBtnShow = res.Data.BtnItem;
  1025. this.regionType=res.Data.Item.RegionType
  1026. let ficcform = res.Data.FiccItem;//ficc添加的信息
  1027. let basicform = res.Data.Item;//客户基本信息
  1028. let raiform = res.Data.RaiItem;//权益添加的信息
  1029. this.basicform = {...res.Data.Item,CreateAuth:res.Data.CreateAuth};//客户基本信息
  1030. this.ficcform = res.Data.FiccItem;//ficc添加的信息
  1031. this.raiform = res.Data.RaiItem;//权益添加的信息
  1032. // 处理ficc权限列表格式
  1033. if(res.Data.FiccItem){
  1034. let auth = [];
  1035. res.Data.FiccItem.PermissionList.forEach(item=> {
  1036. item.Items=item.Items||[]
  1037. item.CheckList=item.CheckList||[]
  1038. let obj = {
  1039. checkAll:item.CheckList&&item.CheckList.length===item.Items.length?true:false,
  1040. isIndeterminate:item.CheckList&&item.CheckList.length>0 && item.CheckList.length<item.Items.length,
  1041. ...item,
  1042. }
  1043. auth.push(obj)
  1044. })
  1045. this.ficcform={...this.ficcform,authList:auth}
  1046. }
  1047. // 处理权益权限列表格式
  1048. if(res.Data.RaiItem){
  1049. let auth = [];
  1050. res.Data.RaiItem.PermissionList.forEach(item=> {
  1051. let obj = {
  1052. checkAll:item.CheckList&&item.CheckList.length===item.Items.length?true:false,
  1053. isIndeterminate:item.CheckList&&item.CheckList.length>0 && item.CheckList.length<item.Items.length,
  1054. ...item,
  1055. }
  1056. auth.push(obj)
  1057. })
  1058. this.raiform={...this.raiform,authList:auth}
  1059. }
  1060. this.companyStatus=res.Data.CreateAuth == 1?this.ficcform.Status:this.raiform.Status
  1061. /* 基础表单 */
  1062. this.dataForm = {
  1063. area:basicform.RegionType,
  1064. custom_name:basicform.CompanyName,
  1065. code:basicform.CreditCode,
  1066. province:basicform.Province,
  1067. city:basicform.City,
  1068. cuStatus:res.Data.CreateAuth == 1?ficcform.Status:raiform.Status,
  1069. custype:res.Data.CreateAuth == 1?'ficc':'权益',
  1070. trade:res.Data.CreateAuth == 1?ficcform.IndustryName:raiform.IndustryName,
  1071. from:res.Data.CreateAuth == 1?ficcform.Source:raiform.Source,
  1072. sales:res.Data.CreateAuth == 1?ficcform.SellerName:raiform.SellerName,
  1073. addreason:res.Data.CreateAuth == 1?ficcform.Reasons:raiform.Reasons
  1074. }
  1075. if(res.Data.CreateAuth == 1) { //ficc创建客户
  1076. /* 处理权限列表格式 */
  1077. let auth = [];
  1078. ficcform.PermissionList.forEach(item=> {
  1079. let obj = {
  1080. checkAll:item.CheckList&&item.CheckList.length===item.Items.length?true:false,
  1081. isIndeterminate:item.CheckList&&item.CheckList.length>0 && item.CheckList.length<item.Items.length,
  1082. ...item,
  1083. }
  1084. auth.push(obj)
  1085. })
  1086. this.authList = auth;
  1087. //
  1088. if(raiform) {
  1089. this.dataForm2 = {
  1090. cuStatus:raiform.Status,
  1091. custype:'权益',
  1092. trade:raiform.IndustryName,
  1093. from:raiform.Source,
  1094. sales:raiform.SellerName,
  1095. addreason:raiform.Reasons,
  1096. }
  1097. /* 处理权限列表格式 */
  1098. let auth2 = [];
  1099. raiform.PermissionList.forEach(item=> {
  1100. let obj = {
  1101. checkAll:item.CheckList&&item.CheckList.length===item.Items.length?true:false,
  1102. isIndeterminate:item.CheckList&&item.CheckList.length>0 && item.CheckList.length<item.Items.length,
  1103. ...item,
  1104. }
  1105. auth2.push(obj)
  1106. })
  1107. this.authList2 = auth2;
  1108. }
  1109. }else if (res.Data.CreateAuth == 2){ //权益创建客户
  1110. // /* 基础表单 */
  1111. // this.dataForm = {
  1112. // custom_name:basicform.CompanyName,
  1113. // code:basicform.CreditCode,
  1114. // province:basicform.Province,
  1115. // city:basicform.City,
  1116. // cuStatus:raiform.Status,
  1117. // custype:'权益',
  1118. // trade:raiform.IndustryName,
  1119. // from:raiform.Source,
  1120. // sales:raiform.SellerName,
  1121. // addreason:raiform.Reasons
  1122. // }
  1123. /* 处理权限列表格式 */
  1124. let auth = [];
  1125. raiform.PermissionList.forEach(item=> {
  1126. let obj = {
  1127. checkAll:item.CheckList&&item.CheckList.length===item.Items.length?true:false,
  1128. isIndeterminate:item.CheckList&&item.CheckList.length>0 && item.CheckList.length<item.Items.length,
  1129. ...item,
  1130. }
  1131. auth.push(obj)
  1132. })
  1133. this.authList = auth;
  1134. //
  1135. if(ficcform) {
  1136. this.dataForm2 = {
  1137. cuStatus:ficcform.Status,
  1138. custype:'ficc',
  1139. trade:ficcform.IndustryName,
  1140. from:ficcform.Source,
  1141. sales:ficcform.SellerName,
  1142. addreason:ficcform.Reasons
  1143. };
  1144. /* 处理权限列表格式 */
  1145. let auth2 = [];
  1146. ficcform.PermissionList.forEach(item=> {
  1147. let obj = {
  1148. checkAll:item.CheckList&&item.CheckList.length===item.Items.length?true:false,
  1149. isIndeterminate:item.CheckList&&item.CheckList.length>0 && item.CheckList.length<item.Items.length,
  1150. ...item,
  1151. }
  1152. auth2.push(obj)
  1153. })
  1154. this.authList2 = auth2;
  1155. }
  1156. }
  1157. },
  1158. /* 获取联系人列表 */
  1159. getuserTable() {
  1160. const subProductArr = this.platform_type.split('-');
  1161. customInterence.concactList({
  1162. PageSize:10,
  1163. CurrentIndex:this.page_no,
  1164. CompanyId:this.companyId,
  1165. KeyWord:this.search_txt,
  1166. ProductType: Number(subProductArr[0]),
  1167. ProductId: Number(subProductArr[1]),
  1168. IsSubscribeHzyj:this.IsSubscribe.includes('1')?1:this.IsSubscribe.includes('2')?0:'',
  1169. IsSubscribeCygx:this.IsSubscribe.includes('3')?1:this.IsSubscribe.includes('4')?0:'',
  1170. }).then(res => {
  1171. if(res.Ret === 200) {
  1172. this.userTable = res.Data.List || [];
  1173. this.total = res.Data.Paging.Totals
  1174. }else {
  1175. this.userTable = []
  1176. }
  1177. })
  1178. },
  1179. /* 获取历史签约 */
  1180. getDealList() {
  1181. customInterence.historydeal({
  1182. CompanyId:this.companyId,
  1183. CompanyType:this.RoleType
  1184. }).then(res => {
  1185. if(res.Ret === 200) {
  1186. let auth = [];
  1187. res.Data.List&&res.Data.List.forEach(item=> {
  1188. item.StartDate = item.StartDate.replace(/-/g,'.')
  1189. item.EndDate = item.EndDate.replace(/-/g,'.')
  1190. item.PermissionList.forEach(auth => {
  1191. auth.CheckAll = auth.CheckList&&auth.CheckList.length===auth.Items.length?true:false
  1192. })
  1193. // 处理合同附件
  1194. let arr=item.ImgUrl.split('#').map(e=>{
  1195. const reg = /\.(pdf)$/;
  1196. const reg2= /\.doc|\.docx$/
  1197. if(reg.test(e)){
  1198. return {
  1199. type:'pdf',
  1200. url:e
  1201. }
  1202. }else if(reg2.test(e)){
  1203. return {
  1204. type:'word',
  1205. url:e
  1206. }
  1207. }else{
  1208. return {
  1209. type:'img',
  1210. url:e
  1211. }
  1212. }
  1213. })
  1214. item.constractFiles=arr
  1215. })
  1216. this.dealList = res.Data.List || []
  1217. }
  1218. })
  1219. },
  1220. /* 查看历史签约 */
  1221. previewHistory() {
  1222. this.isPreview = true
  1223. },
  1224. /* 编辑客户 */
  1225. editHandle() {
  1226. this.$router.push({
  1227. path:'/editCustom',
  1228. query: {
  1229. id:this.companyId
  1230. }
  1231. })
  1232. },
  1233. /* 删除客户 */
  1234. delHandle() {
  1235. this.$confirm('是否确认删除该客户吗?','提示',{
  1236. type:'warning'
  1237. }).then(() => {
  1238. customInterence.customDel({
  1239. CompanyId:Number(this.companyId)
  1240. }).then(res => {
  1241. if(res.Ret === 200) {
  1242. this.$message.success(res.Msg)
  1243. //this.$router.go(-1);
  1244. this.$router.push({path:'/customList'})
  1245. }
  1246. })
  1247. }).catch(() => {});
  1248. },
  1249. /* 搜索联系人 */
  1250. searchUser() {
  1251. this.page_no = 1;
  1252. this.getuserTable();
  1253. },
  1254. /* 新增联系人 */
  1255. addConcat() {
  1256. this.diaform.companyName = this.dataForm.custom_name;
  1257. this.defaultName = this.dataForm.custom_name;
  1258. this.isAddContact = true;
  1259. this.diatit = '新增联系人'
  1260. // 客户ID
  1261. customInterence.customDetail({
  1262. CompanyId: window.location.search.split("=")[1]
  1263. }).then((res) =>{
  1264. // 得知用户是FICC或是权益
  1265. this.ProductName =res.Data.ProductName;
  1266. }).catch((err)=>{
  1267. console.log(err)
  1268. })
  1269. },
  1270. /* 编辑联系人 */
  1271. editContact(item) {
  1272. this.defaultName = item.CompanyName;
  1273. this.diaform = {
  1274. companyName:item.CompanyName,
  1275. name:item.RealName,
  1276. sex:item.Sex,
  1277. telCode:item.CountryCode,
  1278. tel1:item.Mobile,
  1279. tel2:item.MobileTwo||'',
  1280. mail:item.Email||'',
  1281. post:item.Position||'',
  1282. desiger:item.IsMaker,
  1283. depart:item.DepartmentName,
  1284. carte:item.BusinessCardUrl,
  1285. mailQY:item.Email,
  1286. telQY:item.Mobile
  1287. }
  1288. this.userId = item.UserId;
  1289. this.isAddContact = true;
  1290. this.diatit = '编辑联系人';
  1291. },
  1292. // 关注与取消关注
  1293. followContact(row){
  1294. // console.log(row);
  1295. let isFollow = row.IsFollow==1
  1296. let confirmText = isFollow?'是否取消':'是否设为'
  1297. this.$confirm(`${confirmText}特别关注?`, "提示", {
  1298. type: "warning",
  1299. }).then(() => {
  1300. let params={
  1301. UserId:row.UserId,
  1302. CompanyId:row.CompanyId,
  1303. Type:isFollow?0:1
  1304. }
  1305. customInterence.concactFollow(params).then(res=>{
  1306. if(res.Ret == 200){
  1307. this.$message.success(isFollow?"取消成功":"关注成功")
  1308. this.getuserTable()
  1309. }
  1310. })
  1311. })
  1312. .catch(() => {});
  1313. },
  1314. // 删除联系人判断 试用、正式、永续、冻结状态下的客户 如只剩一个联系人不允许删除
  1315. /**
  1316. * 1.如果是非管理员用户则直接根据数量判断
  1317. * 2.如果是管理员 根据该联系人数据中的ProductIds 判断
  1318. *
  1319. */
  1320. async beforeDelConcat(e){
  1321. let tag=true
  1322. if(this.companyStatus=='试用'||this.companyStatus=='正式'||this.companyStatus=='永续'||this.companyStatus=='冻结'){
  1323. const roleType=localStorage.getItem('RoleType')
  1324. if(roleType!='admin'){
  1325. let res=await customInterence.companyUserTotal({CompanyId:this.companyId})
  1326. if(res.Ret==200&&res.Data.Total<=1){
  1327. tag=false
  1328. }
  1329. }else{
  1330. let arr=e.ProductIds.split(',')
  1331. console.log(arr);
  1332. if(arr.length==1){
  1333. let res=await customInterence.companyUserTotal({CompanyId:this.companyId,ProductId:arr[0]})
  1334. if(res.Ret==200&&res.Data.Total<=1){
  1335. tag=false
  1336. }
  1337. }
  1338. if(arr.length>1){
  1339. let res1=await customInterence.companyUserTotal({CompanyId:this.companyId,ProductId:arr[0]})
  1340. let res2=await customInterence.companyUserTotal({CompanyId:this.companyId,ProductId:arr[1]})
  1341. if((res1.Ret==200&&res1.Data.Total<=1)||(res2.Ret==200&&res2.Data.Total<=1)){
  1342. tag=false
  1343. }
  1344. }
  1345. }
  1346. }
  1347. return new Promise((resolve,reject)=>{
  1348. resolve(tag)
  1349. })
  1350. },
  1351. /* 删除联系人 */
  1352. async delConcat(item) {
  1353. let flag=await this.beforeDelConcat(item)
  1354. if(!flag){
  1355. this.$confirm('当前只有一个联系人,无法删除','提示',{
  1356. confirmButtonText: '知道了',
  1357. showCancelButton:false,
  1358. type: 'warning',
  1359. })
  1360. return
  1361. }
  1362. // let totalRes=await customInterence.companyUserTotal({CompanyId:this.companyId})
  1363. // if(totalRes.Ret===200){
  1364. // console.log(this.companyStatus);
  1365. // if(totalRes.Data.Total<=1&&(this.companyStatus=='试用'||this.companyStatus=='正式'||this.companyStatus=='永续'||this.companyStatus=='冻结')){
  1366. // this.$confirm('当前只有一个联系人,无法删除','提示',{
  1367. // confirmButtonText: '知道了',
  1368. // showCancelButton:false,
  1369. // type: 'warning',
  1370. // })
  1371. // return
  1372. // }
  1373. // }else{
  1374. // return
  1375. // }
  1376. this.$confirm('是否确认删除该联系人吗?','提示',{
  1377. type:'warning'
  1378. }).then(() => {
  1379. customInterence.concactDel({
  1380. UserId:item.UserId
  1381. }).then(res => {
  1382. if(res.Ret === 200) {
  1383. this.$message.success(res.Msg)
  1384. this.page_no = 1
  1385. this.getuserTable()
  1386. // let index = this.userTable.indexOf(item);
  1387. // this.userTable.splice(index,1);
  1388. // this.total = this.total-1;
  1389. }
  1390. })
  1391. }).catch(() => {});
  1392. },
  1393. /* 取消弹窗 */
  1394. canceldialog(type) {
  1395. this.isAddContact = false;
  1396. this.userId = '';
  1397. this.defaultName = this.dataForm.custom_name;
  1398. this.diaform = {
  1399. companyName:this.dataForm.custom_name,
  1400. name:'',
  1401. telCode:'86',
  1402. sex:1,
  1403. tel1:'',
  1404. tel2:'',
  1405. mail:'',
  1406. post:'',
  1407. desiger:'',
  1408. depart:'',
  1409. carte:''
  1410. }
  1411. if(type==1) {
  1412. this.getuserTable();
  1413. }
  1414. },
  1415. /* 页码改变 */
  1416. handleCurrentChange(page) {
  1417. this.page_no = page;
  1418. this.getuserTable();
  1419. },
  1420. /* 查看阅读报告列表 */
  1421. lookReport(item) {
  1422. this.readId = item.UserId;
  1423. this.readTit = item.RealName+'研报统计';
  1424. this.isRead = true;
  1425. },
  1426. /* 关闭阅读报告弹窗 */
  1427. cancelRead() {
  1428. this.readTit = '研报统计';
  1429. this.isRead = false;
  1430. },
  1431. /* 预览名片 */
  1432. reviewCard(card) {
  1433. this.showViewer = true;
  1434. this.imgView = card;
  1435. },
  1436. /* 关闭预览 */
  1437. closeViewer() {
  1438. this.imgView = '';
  1439. this.showViewer = false;
  1440. },
  1441. /* 导入联系人打开弹窗 */
  1442. async importHandle() {
  1443. let totalRes=await customInterence.companyUserTotal({CompanyId:this.companyId})
  1444. if(totalRes.Ret===200){
  1445. if(totalRes.Data.Total>=1) {
  1446. setTimeout(() => {
  1447. $('#fileImport').click();
  1448. })
  1449. }else {
  1450. this.$message.error('请先至少添加一位名片联系人')
  1451. }
  1452. }else{
  1453. this.$message.error(totalRes.ErrMsg)
  1454. }
  1455. },
  1456. /* 关闭导入弹窗 */
  1457. cancelImport(type) {
  1458. this.isShowImportDia = false;
  1459. this.isImportRepeat = false;
  1460. this.importData = [];
  1461. this.repeatData = [];
  1462. this.importParams = null;
  1463. if(type == 1) {
  1464. this.getuserTable();
  1465. }
  1466. },
  1467. // 获取文件上传的数据
  1468. fileSelected(type){
  1469. console.log(document.getElementById('fileImport').files)
  1470. const that = this;
  1471. if( document.getElementById('fileImport').files[0] ){
  1472. let hostfile = document.getElementById('fileImport').files[0];
  1473. let size = Math.floor(hostfile.size / 1024 / 1024);
  1474. if( size>200 ){
  1475. that.$message.error('上传文件大小不能大于200M!');
  1476. hostfile = {};
  1477. return false
  1478. }
  1479. if( hostfile.name.toLowerCase().includes('.xlsx')){
  1480. let form = new FormData();
  1481. form.append('File',hostfile); //hostfile.name
  1482. form.append('CompanyId',that.companyId);
  1483. customInterence.getimportList(form).then((res) => {
  1484. if( res.Ret === 200 ){
  1485. if(res.Data.RepeatUser.length>0){
  1486. this.$confirm('excel表中存在重复手机号,请去重后,重新导入','提示',{
  1487. confirmButtonText: '知道了',
  1488. showCancelButton:false,
  1489. type: 'warning'
  1490. })
  1491. }else{
  1492. that.isShowImportDia = true;
  1493. that.importParams = form;
  1494. that.importData = res.Data.ValidUser || [];
  1495. }
  1496. }
  1497. $("#fileImport").val('');
  1498. hostfile = {};
  1499. });
  1500. }else{
  1501. that.$message.error('请上传.xlsx的文件格式!');
  1502. }
  1503. }
  1504. },
  1505. /* 确认导入联系人 */
  1506. ensureImport() {
  1507. customInterence.importUser(this.importParams).then(res => {
  1508. if(res.Ret === 200) {
  1509. this.$message.success('导入成功');
  1510. this.cancelImport(1);
  1511. }else if(res.Ret === 600) {
  1512. this.cancelImport();
  1513. // this.$nextTick(()=> {
  1514. this.isShowImportDia = true;
  1515. this.isImportRepeat = true;
  1516. this.repeatData = res.Data;
  1517. // })
  1518. }
  1519. })
  1520. },
  1521. /* 选择全选或取消全选 */
  1522. handleCheckAll(item) {
  1523. // 取到所有的子菜单id
  1524. let ids = item.Items.map(item =>{
  1525. return item.ChartPermissionId
  1526. })
  1527. item.CheckList = item.checkAll ? ids : [];
  1528. item.isIndeterminate = false;
  1529. },
  1530. /* 复选框組选中时 */
  1531. handleChecked(item) {
  1532. let len = item.CheckList.length;
  1533. item.checkAll = len === item.Items.length;
  1534. item.isIndeterminate = len > 0 && len < item.Items.length;
  1535. },
  1536. lookReadInfo(item){
  1537. if(!item.YbProductViewTotal) return
  1538. this.productReadId = item.UserId
  1539. this.productReadTitle = item.RealName + '其他统计'
  1540. this.clickToal = item.YbProductViewTotal
  1541. this.productReadInfoShow = true
  1542. },
  1543. /* 获取分产品的几种类型 */
  1544. getSubProductList() {
  1545. customInterence.getSubProduct({StatisticFlag:true}).then(res => {
  1546. if(res.Ret !== 200) return
  1547. res.Data.forEach(item => {
  1548. item.key = `${item.ProductType}-${item.ProductId}`
  1549. })
  1550. this.platformOption = res.Data;
  1551. this.platform_type = `${res.Data[0].ProductType}-${res.Data[0].ProductId}`;
  1552. this.subProductName = res.Data[0].ProductName;
  1553. this.getuserTable();
  1554. })
  1555. },
  1556. changeSubProductHandle(val) {
  1557. this.search_txt = '';
  1558. let obj = this.platformOption.find(_ =>_.key === val);
  1559. this.subProductName = obj.ProductName;
  1560. this.getuserTable();
  1561. },
  1562. changeSubscribe(){
  1563. this.search_txt = '';
  1564. this.getuserTable();
  1565. },
  1566. // 研选服务、专项调研明细
  1567. clickDlgNumberHandler(type){
  1568. this.isShowDlgType = type
  1569. this.isShowResearchNumber =true
  1570. },
  1571. // 点击了互助详情数量
  1572. MfyxInteractionNumHandler(item){
  1573. const { href } = this.$router.resolve({
  1574. path: "/mutualList" ,
  1575. query: {
  1576. id: item.UserId,
  1577. CompanyId: item.CompanyId,
  1578. },
  1579. });
  1580. window.open(href, "_blank");
  1581. },
  1582. // 开通严选
  1583. isOpenMfyxStatusHandler(item) {
  1584. if(item.BusinessCardUrl){
  1585. let str = `${item.MfyxStatus == "试用" ? "关闭" : "开通"}`;
  1586. this.$confirm(`确定要${str}个人的研选订阅试用权限吗?`, `${str}试用`, {
  1587. confirmButtonText: "确定",
  1588. cancelButtonText: "取消",
  1589. type: "warning",
  1590. })
  1591. .then(async () => {
  1592. const res = await customInterence.yananxuanPermissionOpen({
  1593. UserId: item.UserId,
  1594. Type: item.MfyxStatus == "试用" ? 0 : 1,
  1595. });
  1596. if (res.Ret === 200) {
  1597. this.$message.success("操作成功");
  1598. this.getuserTable();
  1599. }
  1600. })
  1601. } else {
  1602. this.$alert('该联系人尚未添加名片,请点击编辑,上传名片后再开通试用', '开通试用', {
  1603. confirmButtonText: '知道了',
  1604. });
  1605. }
  1606. },
  1607. // 设置表格行的样式
  1608. setRowClass({row}){
  1609. if(row.NotRead && row.IsFollow==1){
  1610. return "not-read-seven-days"
  1611. }
  1612. }
  1613. },
  1614. mounted() {
  1615. this.getDetail();
  1616. this.getSubProductList();
  1617. this.getDealList();
  1618. },
  1619. }
  1620. </script>
  1621. <style lang='scss'>
  1622. .contact-opt-box{
  1623. .chart{
  1624. display: inline-block;
  1625. cursor: pointer;
  1626. margin-left: 5px;
  1627. }
  1628. }
  1629. .el-icon-arrow-right:before{
  1630. color: #1989FA;
  1631. }
  1632. .el-message-box__header .el-message-box__title{
  1633. color: #333 !important;
  1634. }
  1635. .page-title{
  1636. font-size: 16px;
  1637. font-weight: bold;
  1638. color: #333;
  1639. height: 40px;
  1640. line-height: 40px;
  1641. padding-left: 10px;
  1642. background: #F0F2F5;
  1643. margin-bottom: 40px;
  1644. }
  1645. .customDetail_container {
  1646. .isShared::after{
  1647. content: '共享';
  1648. font-size: 12px;
  1649. // padding: 0px 0px 0px 2px;
  1650. width: 30px;
  1651. color: #3994fb;
  1652. background-color: #dcecfc;
  1653. position: absolute;
  1654. left: 0;
  1655. bottom: 0;
  1656. border-top-right-radius: 5px;
  1657. }
  1658. padding:30px 40px 60px 60px;
  1659. background: #fff;
  1660. position: relative;
  1661. border: 1px solid #ECECEC;
  1662. border-radius: 4px;
  1663. box-shadow: 0 3px 6px rgba(0, 0, 0, 0.05);
  1664. font-size: 16px;
  1665. color: #666;
  1666. /* reset */
  1667. .el-form-item {
  1668. margin-bottom: 30px;
  1669. &:last-child {
  1670. margin-bottom: 0;
  1671. }
  1672. }
  1673. .el-collapse {
  1674. border: none;
  1675. }
  1676. .el-collapse-item__header {
  1677. display: block;
  1678. border: none;
  1679. font-size: 16px;
  1680. color: #333;
  1681. }
  1682. .el-collapse-item__wrap {
  1683. border: none;
  1684. }
  1685. .textarea_item .el-form-item__content {
  1686. width: 100%;
  1687. }
  1688. .el-form-item .el-checkbox-group {
  1689. height: 40px;
  1690. line-height: 40px;
  1691. }
  1692. .distpicker-address-wrapper select {
  1693. width: 198px;
  1694. }
  1695. /* */
  1696. .detail_item {
  1697. display: flex;
  1698. align-items: center;
  1699. flex-wrap: wrap;
  1700. margin-bottom: 40px;
  1701. li {
  1702. width: 33%;
  1703. color: #666;
  1704. margin-bottom: 30px;
  1705. font-size: 15px;
  1706. display: flex;
  1707. .label{
  1708. display: inline-block;
  1709. width: 80px;
  1710. text-align: right;
  1711. margin-right: 30px;
  1712. flex-shrink: 0;
  1713. }
  1714. .label-num {
  1715. flex-shrink: 0;
  1716. margin-right: 30px;
  1717. }
  1718. .con{
  1719. display: inline-block;
  1720. color: #333;
  1721. // font-weight: bold;
  1722. }
  1723. }
  1724. }
  1725. .menu_lists {
  1726. padding: 40px 18px;
  1727. border: 1px dashed #AAB4CC;
  1728. border-radius: 4px;
  1729. .menu_item {
  1730. display: flex;
  1731. // align-items: center;
  1732. margin-bottom: 30px;
  1733. &:last-child {
  1734. margin-bottom: 0;
  1735. }
  1736. .list_item {
  1737. margin-right: 30px;
  1738. margin-bottom: 10px;
  1739. &:last-child {
  1740. margin-right: 0;
  1741. }
  1742. }
  1743. }
  1744. }
  1745. .customList_bot_top {
  1746. display: flex;
  1747. justify-content: space-between;
  1748. align-items: center;
  1749. margin-bottom: 28px;
  1750. }
  1751. .name-follow-heart{
  1752. width:25px;
  1753. height: 15px;
  1754. position: absolute;
  1755. left: 0;
  1756. top: 0;
  1757. }
  1758. .not-read-seven-days{
  1759. background-color: #FFF8F8;
  1760. }
  1761. }
  1762. .customDetail_contract_dialog {
  1763. max-height: 810px;
  1764. min-height: 200px;
  1765. overflow-y: auto;
  1766. .el-dialog__header {
  1767. background: #fff;
  1768. }
  1769. .el-dialog__body {
  1770. padding: 30px 50px !important;
  1771. }
  1772. .history_item {
  1773. margin-bottom: 60px;
  1774. .detail_item {
  1775. font-size: 16px;
  1776. color: #666;
  1777. li {
  1778. margin-bottom: 30px;
  1779. &:last-child {
  1780. margin-bottom: 0;
  1781. }
  1782. }
  1783. }
  1784. }
  1785. .menu_lists {
  1786. padding: 20px 18px;
  1787. border: 1px dashed #AAB4CC;
  1788. border-radius: 4px;
  1789. .menu_item {
  1790. display: flex;
  1791. // align-items: center;
  1792. margin-bottom: 20px;
  1793. &:last-child {
  1794. margin-bottom: 0;
  1795. }
  1796. .list_item {
  1797. margin-right: 30px;
  1798. margin-bottom: 5px;
  1799. &:last-child {
  1800. margin-right: 0;
  1801. }
  1802. }
  1803. }
  1804. }
  1805. }
  1806. </style>