editCustom.vue 55 KB

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