index.blade.php 61 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438
  1. @extends('layouts.base')
  2. @section('title', '全部会员列表')
  3. @section('content')
  4. <link href="{{static_url('yunshop/css/total.css')}}" media="all" rel="stylesheet" type="text/css" />
  5. <link rel="stylesheet" href="//at.alicdn.com/t/font_432132_0wgb9j72xqub.css"/>
  6. <style scoped>
  7. .vue-title {
  8. display: flex;
  9. margin: 5px 0;
  10. line-height: 32px;
  11. font-size: 16px;
  12. color: #333;
  13. font-weight: 600;
  14. }
  15. .vue-title-left {
  16. width: 4px;
  17. height: 18px;
  18. margin-top: 6px;
  19. background: #29ba9c;
  20. display: inline-block;
  21. margin-right: 10px;
  22. }
  23. .vue-title-content {
  24. font-size: 14px;
  25. flex: 1;
  26. }
  27. .inputs {
  28. margin-top: 20px;
  29. padding-left: 15px;
  30. }
  31. .input-w-1 {
  32. width: 300px;
  33. margin-right: 10px;
  34. }
  35. .picker-box {
  36. margin-left: -10px;
  37. }
  38. .spanClass {
  39. font-family: SourceHanSansCN-Regular;
  40. font-size: 14px;
  41. font-weight: normal;
  42. font-stretch: normal;
  43. letter-spacing: 1px;
  44. color: #999999;
  45. margin-left: 10px;
  46. }
  47. .el-table_1_column_8,
  48. .el-table_1_column_9 {
  49. text-align: left !important;
  50. }
  51. .excelUp {
  52. width: 140px;
  53. height: 40px;
  54. border: 1px solid #29ba9c;
  55. color: #29ba9c;
  56. border-radius: 5px;
  57. }
  58. .excelUp .el-link--inner {
  59. color: #29ba9c;
  60. }
  61. .member-merge{
  62. height: 350px;
  63. }
  64. .member-merge .el-dialog__body {
  65. height: 200px;
  66. }
  67. .p-text {
  68. font-family: SourceHanSansCN-Regular;
  69. font-size: 14px;
  70. font-weight: normal;
  71. font-stretch: normal;
  72. letter-spacing: 0px;
  73. color: #333333;
  74. /* border:1px solid red; */
  75. text-align: center;
  76. }
  77. .cell {
  78. text-align: center;
  79. }
  80. .el-table_1_column_1 .cell {
  81. text-align: left;
  82. margin-left: 10px
  83. }
  84. .el-table_1_column_7 .cell {
  85. text-align: left;
  86. }
  87. .el-table_1_column_8 .cell {
  88. text-align: left;
  89. }
  90. .titleE {
  91. cursor: pointer;
  92. user-select: none;
  93. }
  94. .keep {
  95. width: 40px;
  96. height: 22px;
  97. font-family: SourceHanSansCN-Medium;
  98. font-size: 12px;
  99. font-weight: normal;
  100. font-stretch: normal;
  101. letter-spacing: 1px;
  102. color: #ffffff;
  103. font-weight: bold;
  104. background: #ff9800;
  105. text-align: center;
  106. }
  107. .keep_0 {
  108. background: #9c27b0;
  109. margin: 0 auto !important;
  110. }
  111. /* 显示图标 */
  112. .icon_size {
  113. font-size: 30px;
  114. }
  115. /* 已关注 */
  116. .wechat_public_already {
  117. color: #04af82;
  118. }
  119. /* 未关注 */
  120. .wechat_public_not {
  121. color: #999999;
  122. }
  123. /* 微信小程序 */
  124. .smallprogram {
  125. color: #00b84b;
  126. }
  127. /* APP */
  128. .all_app {
  129. color: #0068ff;
  130. }
  131. /* 微信开放平台 */
  132. .all_wechat {
  133. color: #0ad76d;
  134. }
  135. /* 支付宝 */
  136. .all_alipay {
  137. color: #069eff;
  138. }
  139. /* 抖音 */
  140. .all_tril {
  141. color: #23042b;
  142. }
  143. /* 企业微信 */
  144. .qiyeweixin01 {
  145. color: #0082ef;
  146. }
  147. /* 聚合cps App */
  148. .all_appshouji {
  149. color: #ffb025;
  150. }
  151. [v-cloak] {
  152. display: none;
  153. }
  154. .input-w {
  155. height: 40px;
  156. margin-right: 19px;
  157. margin-bottom: 20px;
  158. border-radius: 4px;
  159. }
  160. .input_1 {
  161. width: 120px;
  162. }
  163. .input_2 {
  164. width: 300px;
  165. }
  166. .input_3 {
  167. width: 230px;
  168. }
  169. .input_4 {
  170. width: 437px;
  171. height: 42px;
  172. border-radius: 6px;
  173. border: solid 1px #dee2ee;
  174. }
  175. .input_5 {
  176. width: 102px;
  177. height: 40px;
  178. background-color: #29ba9c;
  179. border-radius: 4px;
  180. }
  181. .input_6 {
  182. width: 140px;
  183. height: 40px;
  184. border-radius: 4px;
  185. color: #29ba9c;
  186. border: solid 1px #29ba9c;
  187. }
  188. .input_7 {
  189. width: 125px;
  190. height: 40px;
  191. border-radius: 4px;
  192. border: solid 1px #29ba9c;
  193. }
  194. .tag_all {
  195. height: 22px;
  196. line-height: 22px;
  197. }
  198. .tag_13c7a7 {
  199. background-color: #13c7a7;
  200. margin-bottom: 4px;
  201. }
  202. .tag_ffb025 {
  203. background-color: #ffb025;
  204. }
  205. .tag_box {
  206. text-align: left;
  207. }
  208. .tag_box .el-tag--dark {
  209. font-family: SourceHanSansCN-Medium;
  210. font-size: 12px;
  211. font-weight: normal;
  212. font-stretch: normal;
  213. letter-spacing: 1px;
  214. color: #ffffff;
  215. border: none;
  216. }
  217. .table_p p {
  218. margin: 0;
  219. }
  220. .addTag {
  221. width: 89px;
  222. height: 30px;
  223. border-radius: 4px;
  224. font-family: SourceHanSansCN-Heavy;
  225. font-size: 12px;
  226. font-weight: normal;
  227. color: #29ba9c;
  228. padding: 0px 0px;
  229. border: solid 1px #29ba9c;
  230. margin-right: 20px;
  231. margin-left: -45px;
  232. }
  233. /* 隐藏折叠功能 */
  234. .table_p .el-table__expand-column .cell {
  235. display: none;
  236. }
  237. .tableBox.noborder .expanded td {
  238. border: none;
  239. }
  240. .operation {
  241. width: 70px;
  242. height: 30px;
  243. border-radius: 4px;
  244. margin-bottom: 5px;
  245. border: solid 1px #a2a2a2;
  246. }
  247. .el-table__expanded-cell[class*=cell] {
  248. padding: 12px 50px;
  249. }
  250. .fixed {
  251. margin-left: -10px;
  252. }
  253. /* 链接列表 */
  254. .linkList {
  255. height: 30px;
  256. line-height: 30px;
  257. }
  258. .tab-pane {
  259. padding: 10px;
  260. background: #eff3f6;
  261. display: flex;
  262. }
  263. .tab-pane .left {
  264. background: white;
  265. padding: 2px 10px;
  266. width: 200px;
  267. border-radius: 10px;
  268. overflow-y: auto;
  269. height: 530px;
  270. overflow-x: hidden;
  271. }
  272. .tab-pane .acitve-submenu {
  273. background-color: #eaf8f5;
  274. }
  275. .tab-pane .acitve-submenu-item {
  276. color:rgb(41, 186, 156);
  277. }
  278. .tab-pane .el-submenu__icon-arrow {
  279. display: none;
  280. }
  281. .tab-pane .el-menu-item-group__title {
  282. padding-top: 0 ;
  283. padding-bottom: 0 ;
  284. }
  285. .tab-pane .el-menu-item {
  286. height: 100%;
  287. min-width: 162px;
  288. padding: 0;
  289. }
  290. .tab-pane .el-menu {
  291. border-right:none
  292. }
  293. .el-dialog__header {
  294. padding-bottom: 0 !important;
  295. }
  296. .tab-pane .right {
  297. margin-left: 10px;
  298. width: calc(100% - 200px);
  299. }
  300. .tab-pane .right .single-table {
  301. margin-top: 10px;
  302. height: 420px;
  303. overflow: auto;
  304. }
  305. .tab-pane .right-top {
  306. background: white;
  307. padding: 2px 10px 20px 10px;
  308. border-radius: 10px;
  309. }
  310. .tab-pane .search-pane {
  311. display: flex;
  312. justify-content: space-between;
  313. padding: 0 15px;
  314. }
  315. .el-menu-name {
  316. display: flex;
  317. padding: 10px 13px 10px 0px;
  318. }
  319. .tab-pane-page {
  320. display: flex;
  321. justify-content: flex-end;
  322. align-items: center;
  323. margin-top: 10px;
  324. }
  325. .tab-pane-page .el-button {
  326. margin-left: 10px;
  327. }
  328. </style>
  329. <div class="all">
  330. <div id="app" v-cloak>
  331. <div class="total-head">
  332. <div class="vue-title">
  333. <div class="vue-title-left"></div>
  334. <div class="vue-title-content">会员查询</div>
  335. <div>
  336. <el-link class="excelUp" style="width:125px;margin-right:10px;" @click="mergeMemberShow = true">合并会员</el-link>
  337. <el-link href="{{yzWebUrl('member.member.add-member')}}" :underline="false" class="excelUp" style="width:125px;margin-right:10px;"><i class="el-icon-plus"></i> 添加会员</el-link>
  338. <el-link href="{{yzWebUrl('member.member.import')}}" :underline="false" class="excelUp">会员EXCEL导入
  339. </el-link>
  340. </div>
  341. </div>
  342. <!-- 搜索列表 -->
  343. <div class="inputs">
  344. <el-input clearable class="input-w input_1" v-model="search.mid" placeholder="会员ID"></el-input>
  345. <el-input clearable class="input-w input_2" placeholder="可搜索昵称/姓名/手机号" v-model="search.realname">
  346. <el-select style="width:100px;" v-model="search.name_type" clearable slot="append">
  347. <el-option v-for="(item,i) in petOption" :key="i" :label="item.name" :value="item.value"></el-option>
  348. </el-select>
  349. </el-input>
  350. <el-input class="input-w input_1" clearable class="input-w" v-model="search.first_count" placeholder="一级人数">
  351. </el-input>
  352. <el-input class="input-w input_1" clearable class="input-w" v-model="search.second_count" placeholder="二级人数">
  353. </el-input>
  354. <el-input class="input-w input_1" clearable class="input-w" v-model="search.team_count" placeholder="团队人数"></el-input>
  355. <el-input class="input-w input_1" clearable class="input-w" v-model="search.custom_value" placeholder="自定义字段">
  356. </el-input>
  357. <el-select clearable class="input-w input_3" v-model="search.level" filterable placeholder="会员等级不限">
  358. <el-option :label="setLevel_name" :value="0"></el-option>
  359. <el-option v-for="(item,i) in levelOption" :key="i" :label="item.level_name" :value="item.id">
  360. </el-option>
  361. </el-select>
  362. <el-select clearable class="input-w input_3" v-model="search.groupid" filterable placeholder="会员分组不限">
  363. <el-option v-for="(item,i) in groupOption" :key="i" :label="item.group_name" :value="item.id">
  364. </el-option>
  365. </el-select>
  366. <el-select clearable class="input-w input_3" v-model="search.isagent" filterable placeholder="推广员不限">
  367. <el-option v-for="(item,i) in agentOption" :key="i" :label="item.label" :value="item.value">
  368. </el-option>
  369. </el-select>
  370. <el-input class="input-w input_3" clearable class="input-w" v-model="search.parent_id" placeholder="推荐人ID"></el-input>
  371. <el-select clearable class="input-w input_3" v-model="search.followed" filterable placeholder="不限关注">
  372. <el-option v-for="(item,i) in attentionOption" :key="i" :label="item.label" :value="item.value">
  373. </el-option>
  374. </el-select>
  375. <el-select clearable class="input-w input_3" v-model="search.isblack" clearable filterable placeholder="不限黑名单">
  376. <el-option v-for="(item,i) in blacklistOption" :key="i" :label="item.label" :value="item.value">
  377. </el-option>
  378. </el-select>
  379. <el-date-picker class="input_4" style="width: 437px; margin-right:20px" value-format="timestamp"  type="datetimerange" v-model="search.time" align="right" unlink-panels range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期" :picker-options="pickerOptions">
  380. </el-date-picker>
  381. <el-select clearable class="input-w input_3" v-model="search.label_id" filterable placeholder="标签" v-if="tage==1">
  382. <el-option v-for="(item,index) in member_tag" :key="index" :label="item.title" :value="item.id">
  383. </el-option>
  384. </el-select>
  385. <el-button class="input_5" @click="searchBtn" type="primary" @keyup.enter="searchBtn">
  386. 搜索</el-button>
  387. <el-button class="input_6" @click="deriveEvent">导出EXCEL</el-button>
  388. </div>
  389. </div>
  390. <div class="total-floo" style="padding-bottom:50px;overflow-x: scroll;">
  391. <!-- 统计总数 -->
  392. <div class="vue-title">
  393. <div class="vue-title-left"></div>
  394. <div class="vue-title-content" style="flex:none;width:60px;">会员列表</div>
  395. <span :class="{titleE :index!==0 }" v-if="is_customer(index)" @click="titleEvent(index)" class="spanClass" v-for="(item,index) in allList" :key="item.id">[[item.title]]: &nbsp
  396. [[item.num]], </span>
  397. </div>
  398. <div class="main">
  399. <!-- 会员列表 -->
  400. <el-table class="table_p tableBox" :class="[tage==1?'noborder':'']" :default-expand-all="isExpand" :data="itemList" style="width: 100%">
  401. <el-table-column label="会员ID" width="100px">
  402. <template slot-scope="scope">
  403. <p class="p-text" style="text-align:left">[[ scope.row.uid ]]</p>
  404. </template>
  405. </el-table-column>
  406. <el-table-column label="推荐人" min-width="100px" align="center">
  407. <template slot-scope="scope">
  408. <div v-if="scope.row.yz_member==null||!scope.row.yz_member.parent_id" class="p-text">
  409. <p class="keep keep_0">总店</p>
  410. </div>
  411. <div v-else class="p-text" style="overflow: hidden;">
  412. <el-tooltip class="item" effect="light" placement="bottom">
  413. <div slot="content">ID:[[scope.row.yz_member !== null ? scope.row.yz_member.agent !== null ? scope.row.yz_member.agent.uid : '' : '']]</div>
  414. <p v-if="scope.row.yz_member !== null && scope.row.yz_member.agent !== null && scope.row.yz_member.agent.avatar !== null">
  415. <img style="width:37px;height:37px;border-radius: 50%;margin-right:5px;" :src="scope.row.yz_member.agent.avatar" alt="">
  416. </p>
  417. </el-tooltip>
  418. <p v-if="scope.row.yz_member !== null && scope.row.yz_member.agent!==null && scope.row.yz_member.agent.nickname"><span v-if="scope.row.yz_member !== null && scope.row.yz_member.inviter == 0">(暂定)</span>[[scope.row.yz_member.agent.nickname]]</p>
  419. <p v-else>未更新</p>
  420. </div>
  421. </template>
  422. </el-table-column>
  423. <el-table-column label="粉丝">
  424. <template slot-scope="scope">
  425. <div class="p-text" style="padding-left: 6px;">
  426. <p v-if="scope.row.avatar!==null"><img style="width:37px;height:37px;border-radius: 50%;margin-right:5px;" :src="scope.row.avatar" alt=""></p>
  427. <p v-if="scope.row.fans_item">[[ scope.row.fans_item]]</p>
  428. <p v-else>未更新</p>
  429. </div>
  430. </template>
  431. </el-table-column>
  432. <el-table-column label="姓名/手机号">
  433. <template slot-scope="scope">
  434. <p class="p-text">[[scope.row.realname]]</p>
  435. <p class="p-text">[[scope.row.mobile]]</p>
  436. </template>
  437. </el-table-column>
  438. <el-table-column label="等级/分组">
  439. <template slot-scope="scope">
  440. <el-select v-model="scope.row.yz_member.level_id" placeholder="请选择" @change="changeLevel(scope.row.yz_member.level_id,scope.row.uid)">
  441. <el-option
  442. v-for="item in level_list"
  443. :key="item.id"
  444. :label="item.level_name"
  445. :value="item.id">
  446. </el-option>
  447. </el-select>
  448. <el-select v-model="scope.row.yz_member.group_id" placeholder="请选择" @change="changeGroup(scope.row.yz_member.group_id,scope.row.uid)">
  449. <el-option
  450. v-for="item in member_group"
  451. :key="item.id"
  452. :label="item.group_name"
  453. :value="item.id">
  454. </el-option>
  455. </el-select>
  456. </template>
  457. </el-table-column>
  458. <el-table-column label="注册时间" width="100px">
  459. <template slot-scope="scope">
  460. <p class="p-text">[[ scope.row.createtime]]</p>
  461. </template>
  462. </el-table-column>
  463. <el-table-column width="150" label="积分/余额">
  464. <template slot-scope="scope">
  465. <div class="tag_box">
  466. <div>
  467. <el-tag class="tag_all tag_13c7a7" effect="dark">
  468. 积分:[[scope.row.credit1]]</el-tag>
  469. </div>
  470. <div>
  471. <el-tag class="tag_all tag_ffb025" effect="dark">
  472. 余额:[[scope.row.credit2]]</el-tag>
  473. </div>
  474. </div>
  475. </template>
  476. </el-table-column>
  477. <el-table-column width="150" label="已完成订单">
  478. <template slot-scope="scope">
  479. <div class="tag_box">
  480. <div>
  481. <el-tag class="tag_all tag_13c7a7" effect="dark">订单:[[scope.row.has_one_order | total]]
  482. </el-tag>
  483. </div>
  484. <div>
  485. <el-tag class="tag_all tag_ffb025" effect="dark">
  486. 金额:[[scope.row.has_one_order | sum]]</el-tag>
  487. </div>
  488. </div>
  489. </template>
  490. </el-table-column>
  491. <el-table-column label="类型">
  492. <template slot-scope="scope">
  493. <!-- 图标类型显示 -->
  494. <div style="height:40px;line-height:40px;">
  495. <i class="iconfont icon_size" :class="openid(0,scope.row.has_one_fans)" :title="title(scope.row.has_one_fans)"></i>
  496. <i class="iconfont icon_size" :class="openid(1,scope.row.has_one_mini_app)" title="小程序"></i>
  497. <i class="iconfont icon_size" :class="openid(2,scope.row.has_one_wechat)" title="APP"></i>
  498. <i class="iconfont icon_size" :class="openid(3,scope.row.has_one_unique)" title="微信开放平台"></i>
  499. <i class="iconfont icon_size" :class="openid(4,scope.row.has_one_alipay)" title="支付宝"></i>
  500. <i class="iconfont icon_size" :class="openid(5,scope.row.has_one_douyin)" title="抖音"></i>
  501. <i class="iconfont icon_size" :class="openid(6,scope.row.has_one_customers)" title="企业微信"></i>
  502. <i class="iconfont icon_size" :class="openid(7,scope.row.has_one_aggregation_cps_member)" title="聚合cps App"></i>
  503. </div>
  504. </template>
  505. </el-table-column>
  506. <!-- 气泡框显示 -->
  507. <el-table-column label="操作">
  508. <!-- 气泡框模块 -->
  509. <template slot-scope="scope">
  510. <!-- 气泡列表 -->
  511. <el-popover placement="bottom" width="150" trigger="click">
  512. <!-- 链接列表 -->
  513. <el-link v-if="isBlack(i,scope.row)" class="linkList" v-for="(item,i) in linkData" :key="i" :href="item.link+scope.row.uid" :underline="false"><i :class="item.class"></i> [[item.title]]
  514. </el-link>
  515. <el-button slot="reference" size="mini" class="operation">操作
  516. </el-button>
  517. </el-popover>
  518. <el-button v-if="scope.row.yz_member.is_old==1" slot="reference" size="mini" type="danger" style="border: none;" class="operation" @click="memberMerge(scope.row)">合并</el-button>
  519. </template>
  520. </el-table-column>
  521. <!-- 标签类 -->
  522. <el-table-column type="expand" v-if="tage==1">
  523. <template slot-scope="scope">
  524. <el-button class="addTag" @click.stop="openDialog(scope.row)">
  525. <i class="el-icon-plus"></i> 添加标签
  526. </el-button>
  527. <span v-if="scope.row.has_many_tag && item.tag" v-for="(item,index) in scope.row.has_many_tag">
  528. <!-- 手动标签 -->
  529. <el-tag v-if="item.tag.type == 1" :style="{color: item.tag.color,borderColor: item.tag.color}" effect="plain" style="margin-right:10px; margin-bottom:10px; cursor: pointer;user-select: none;" :closable="true" @close="handleCloseTag(scope.row.uid,item.tag_id)" @click="handEventTag(item.tag_id)" :key="index">[[item.tag.title]]</el-tag>
  530. <!-- 自动标签 -->
  531. <el-tag v-if="item.tag.type == 2" :style="{color: item.tag.color,borderColor: item.tag.color}" effect="plain" style="margin-right:10px; margin-bottom:10px; cursor: pointer;user-select: none;" @close="handleCloseTag(scope.row.uid,item.tag_id)" @click="handEventTag(item.tag_id)" :key="index">[[item.tag.title]]</el-tag>
  532. </span>
  533. </template>
  534. </el-table-column>
  535. </el-table>
  536. </div>
  537. <el-dialog
  538. title="合并提示" custom-class="member-merge"
  539. :visible.sync="showMemberMerge"
  540. width="30%"
  541. center>
  542. <div style="font-size: 18px;line-height:1.5;">
  543. <p>该过程不可逆,点击合并后,该会员其他登录凭证(会员ID【[[currentMember.mark_member_id]]】)将会合并到会员ID【[[currentMember.uid]]】上,其他会员ID上的订单、余额、积分、佣金、下线等数据将不会被合并,并无法再次访问!</p>
  544. <p style="color: #EE3939;">点击确定合并代表您已熟知上述风险,执行会员合并,并且自行承担责任!</p>
  545. </div>
  546. <span slot="footer" class="dialog-footer">
  547. <el-button @click="showMemberMerge = false">取消合并</el-button>
  548. <el-button type="primary" @click="sureMemberMerge">确定合并</el-button>
  549. </span>
  550. </el-dialog>
  551. <el-dialog title="合并会员" custom-class="merge-member" :visible.sync="mergeMemberShow" width="40%">
  552. <div>
  553. <el-form :inline="true" :model="merge_member_form" class="demo-form-inline">
  554. <div>
  555. <el-form-item label="选择保留会员">
  556. <el-input v-model="merge_member_form.hold_member_id" placeholder="请输入会员ID"></el-input>
  557. </el-form-item>
  558. </div>
  559. <div>
  560. <el-form-item label="选择被合并会员">
  561. <el-input v-model="merge_member_form.give_up_member_id" placeholder="请输入会员ID"></el-input>
  562. </el-form-item>
  563. </div>
  564. </el-form>
  565. </div>
  566. <div style="font-size: 12px;line-height:1.5;color: #EE3939">
  567. <p><b>重要提示:</b></p>
  568. <p><b>1、保留会员和被合并会员不能同时是微信(具备任意微信标识)、支付宝等同一个第三方渠道会员,不能都绑定了手机号!</b></p>
  569. <p><b>2、操作会员合并,将按照设置的合并会员进行合并,合并操作不会合并两个会员的收入、订单、客户等数据,被合并的会员订单、客户、收入等数据将会丢失,请谨慎操作!!</b></p>
  570. <p><b>操作不可逆,请谨慎操作!!操作不可逆,请谨慎操作!!</b></p>
  571. </div>
  572. <span slot="footer" class="dialog-footer">
  573. <el-button type="primary" @click="sureMergeMember">确定合并</el-button>
  574. <el-button @click="mergeMemberShow = false">取消</el-button>
  575. </span>
  576. </el-dialog>
  577. <!-- 会话框 -->
  578. <el-dialog title="选择标签" :visible.sync="dialogVisible" width="55%" :before-close="handleClose" v-if="tagInfo">
  579. <div class="tab-pane">
  580. <div class="left">
  581. <div class="vue-title">
  582. <div class="vue-title-left"></div>
  583. <div class="vue-title-content">标签组</div>
  584. </div>
  585. <el-menu
  586. default-active="1"
  587. :default-openeds="openeds"
  588. class="el-menu-vertical-demo">
  589. <el-submenu index="1" :class="select_group_id === '' ? 'acitve-submenu' : ''" >
  590. <template slot="title">
  591. <div @click="handleSelect('')">
  592. <i class="el-icon-folder-opened" :class="select_group_id === '' ? 'acitve-submenu-item' : ''"></i>
  593. <span :class="select_group_id === '' ? 'acitve-submenu-item' : ''">全部分组</span>
  594. </div>
  595. </template>
  596. <el-menu-item-group>
  597. <el-menu-item v-for="(item,index) in menu_item_list" :key="index">
  598. <div class="el-menu-name" :style="[{color:( Number(select_group_id) == item.id ? '#29ba9c':'')}]" @click="handleSelect(item.id)">
  599. <i class="el-icon-folder-opened" :style="[{color:( Number(select_group_id) == item.id ? '#29ba9c':'')}]" ></i>
  600. <span style="white-space: normal !important;line-height: normal;">[[item.title]]</span>
  601. </div>
  602. </el-menu-item>
  603. </el-menu-item-group>
  604. </el-submenu>
  605. </el-menu>
  606. </div>
  607. <div class="right">
  608. <div class="right-top">
  609. <div class="vue-title">
  610. <div class="vue-title-left"></div>
  611. <div class="vue-title-content">标签列表</div>
  612. </div>
  613. <div class="search-pane">
  614. <el-input placeholder="标签名称" style="width: 40%;" v-model="keyword"></el-input>
  615. <el-button type="primary" @click="search1(1)">搜索</el-button>
  616. </div>
  617. </div>
  618. <div class="single-table">
  619. <el-table ref="singleTable" :data="tagData">
  620. <el-table-column label="ID" prop="id"></el-table-column>
  621. <el-table-column label="标签名称" prop="title"></el-table-column>
  622. <el-table-column label="操作">
  623. <template slot-scope="scope">
  624. <el-button size="mini" @click="makeMemberTags(scope.row)">选择</el-button>
  625. </template>
  626. </el-table-column>
  627. </el-table>
  628. </div>
  629. </div>
  630. </div>
  631. <div class="vue-page tab-pane-page">
  632. <el-row>
  633. <el-col align="right">
  634. <el-pagination layout="prev, pager, next,jumper" @current-change="search1" :total="tag_total" :page-size="tag_per_page" :current-page="tag_current_page" background></el-pagination>
  635. </el-col>
  636. </el-row>
  637. <el-button @click="dialogVisible = false">取 消</el-button>
  638. </div>
  639. </el-dialog>
  640. <div v-if="itemList.length!==0 && itemList!==null" class="fixed total-floo">
  641. <div class="fixed_box">
  642. <el-pagination layout="prev, pager, next,jumper" background style="text-align:right" :page-size="pagesize" :current-page="currentPage" :total="total" @current-change="handleCurrentChange">
  643. </el-pagination>
  644. </div>
  645. </div>
  646. </div>
  647. </div>
  648. @include("finance.balance.verifyPopupComponent")
  649. <script>
  650. let member_tag = {!! $member_tag ?: '{}' !!};
  651. let groups = {!! $groups ?: '{}' !!};
  652. let levels = {!! $levels ?: '{}' !!};
  653. let uid = '{!! $_GET['uid'] !!}';
  654. if(uid == undefined || uid == '' || uid == 'undefined'){
  655. uid = '';
  656. }
  657. var vm = new Vue({
  658. el: '#app',
  659. // 防止后端冲突,修改ma语法符号
  660. delimiters: ['[[', ']]'],
  661. data() {
  662. return {
  663. pickerOptions: {
  664. shortcuts: [{
  665. text: '最近一周',
  666. onClick(picker) {
  667. const end = new Date();
  668. const start = new Date();
  669. start.setTime(start.getTime() - 3600 * 1000 * 24 * 7);
  670. picker.$emit('pick', [start, end]);
  671. }
  672. }, {
  673. text: '最近一个月',
  674. onClick(picker) {
  675. const end = new Date();
  676. const start = new Date();
  677. start.setTime(start.getTime() - 3600 * 1000 * 24 * 30);
  678. picker.$emit('pick', [start, end]);
  679. }
  680. }, {
  681. text: '最近三个月',
  682. onClick(picker) {
  683. const end = new Date();
  684. const start = new Date();
  685. start.setTime(start.getTime() - 3600 * 1000 * 24 * 90);
  686. picker.$emit('pick', [start, end]);
  687. }
  688. }]
  689. },
  690. showMemberMerge: false,
  691. mergeMemberShow: false,
  692. currentMember: {},
  693. //搜索会员数据源
  694. search: {
  695. mid: uid,
  696. realname: '',
  697. first_count: '',
  698. second_count: '',
  699. team_count: '',
  700. custom_value: '',
  701. level: '',
  702. groupid: '',
  703. isagent: '',
  704. followed: '',
  705. isblack: '',
  706. searchtime: '',
  707. time: '',
  708. name_type: 0,
  709. label_id:'',
  710. },
  711. tagList: [],
  712. //开始时间
  713. starttime: null,
  714. //结束时间
  715. endtime: null,
  716. //页码数
  717. currentPage: 1,
  718. //一页显示数据
  719. pagesize: 1,
  720. //总页数
  721. total: 1,
  722. dialogVisible: false,
  723. // 下拉集合的数据源
  724. petOption: [{
  725. value: 0,
  726. name: '昵称'
  727. }, {
  728. value: 1,
  729. name: '姓名'
  730. }, {
  731. value: 2,
  732. name: '手机号'
  733. }],
  734. //等级搜索列
  735. levelOption: levels,
  736. //分组搜索列
  737. groupOption: groups,
  738. //是否推广员
  739. agentOption: [{
  740. value: '0',
  741. label: '否'
  742. }, {
  743. value: '1',
  744. label: '是'
  745. }],
  746. //是否已关注
  747. attentionOption: [{
  748. value: '1',
  749. label: '已关注'
  750. }, {
  751. value: '0',
  752. label: '未关注'
  753. }],
  754. //是否是黑名单
  755. blacklistOption: [{
  756. value: '0',
  757. label: '否'
  758. }, {
  759. value: '1',
  760. label: '是'
  761. }],
  762. allList: [{
  763. id: 1,
  764. title: '总数',
  765. num: 8,
  766. },
  767. {
  768. id: 2,
  769. title: '微信公众号会员',
  770. num: '---',
  771. },
  772. {
  773. id: 3,
  774. title: '微信小程序会员',
  775. num: '---',
  776. },
  777. {
  778. id: 4,
  779. title: 'APP会员',
  780. num: '---',
  781. },
  782. {
  783. id: 5,
  784. title: '微信开放平台会员',
  785. num: '---',
  786. },
  787. {
  788. id: 6,
  789. title: '手机号绑定会员',
  790. num: '---',
  791. },
  792. {
  793. id: 7,
  794. title: '企业微信会员',
  795. num: '---',
  796. }
  797. ],
  798. tableData: [],
  799. tagData: [],
  800. tagId: '',
  801. itemList: [],
  802. level_list:[],
  803. member_group:[],
  804. sumTit: "---",
  805. isExpand: true,
  806. isIdentification: 0,
  807. groupid: "",
  808. tage: 0,
  809. setLevel_name: "普通会员",
  810. is_customers: 0,
  811. tag_id: "", //保存标签id
  812. //列表跳转链接
  813. linkData: [{
  814. link: "{!! yzWebUrl('member.member.detail') !!}&id=",
  815. class: "fa fa-edit",
  816. title: "会员详情"
  817. },
  818. {
  819. link: "{!! yzWebUrl('member.member-income.index') !!}&id=",
  820. class: "fa fa-edit",
  821. title: "收入详情"
  822. },
  823. {
  824. link: "{!! yzWebUrl('order.order-list.index') !!}&member_id=",
  825. class: "fa fa-list",
  826. title: "会员订单"
  827. },
  828. {
  829. link: "{!! yzWebUrl('point.recharge.index') !!}&id=",
  830. class: "fa fa-credit-card",
  831. title: "充值积分"
  832. },
  833. {
  834. link: "{!! yzWebUrl('balance.recharge.index') !!}&member_id=",
  835. class: "fa fa-money",
  836. title: "充值余额"
  837. },
  838. {
  839. link: "{!! yzWebUrl('password.page.index') !!}&member_id=",
  840. class: "fa fa-money",
  841. title: "支付密码"
  842. },
  843. {
  844. link: "{!! yzWebUrl('member.member.agent-old') !!}&id=",
  845. class: "fa fa-exchange",
  846. title: "直推客户"
  847. },
  848. {
  849. link: "{!! yzWebUrl('member.member.agent') !!}&id=",
  850. class: "fa fa-exchange",
  851. title: "团队客户"
  852. },
  853. {
  854. link: "{!! yzWebUrl('member.member.agent-parent') !!}&id=",
  855. class: "fa fa-exchange",
  856. title: "上级会员"
  857. },
  858. {
  859. link: "{!! yzWebUrl('member.member.black') !!}&black=0&id=",
  860. class: "fa fa-minus-circle",
  861. title: "取消黑名单"
  862. },
  863. {
  864. link: "{!! yzWebUrl('member.member.black') !!}&black=1&id=",
  865. class: "fa fa-minus-circle",
  866. title: "设置黑名单"
  867. },
  868. {
  869. link: "{!! yzWebUrl('member.member-address.index') !!}&id=",
  870. class: "fa fa-truck",
  871. title: "收货地址管理"
  872. },
  873. {
  874. link: "{!! yzWebUrl('member.bank-card.index') !!}&id=",
  875. class: "fa fa-truck",
  876. title: "银行卡管理"
  877. },
  878. ],
  879. member_tag:member_tag,
  880. merge_member_form: {},
  881. // 选中的分组id
  882. select_group_id:"",
  883. //当前打开的 sub-menu 的 index 的数组
  884. openeds:["1"],
  885. menu_item_list:[],
  886. tag_total: 1,
  887. tag_current_page: 1,
  888. tag_per_page: 1,
  889. // 标签名
  890. keyword:"",
  891. tagInfo:false,
  892. }
  893. },
  894. //定义全局的方法
  895. beforeCreate() {
  896. that = this
  897. },
  898. created() {
  899. that = this;
  900. document.onkeydown = (e) => {
  901. let key = window.event.keyCode;
  902. if (key == 13) {
  903. that.searchBtn();
  904. }
  905. };
  906. tag_id = {{ request()->tag_id ?: 0 }};
  907. if (tag_id){
  908. this.tag_id = tag_id;
  909. }
  910. },
  911. mounted() {
  912. //查找分组id
  913. let id = this.indexId('groupid');
  914. if (id) {
  915. this.$set(this, "groupid", id);
  916. this.postYzWebFullUrl(1, "", this.groupid);
  917. } else {
  918. this.postYzWebFullUrl(1, this.getParam('tag_id'));
  919. }
  920. },
  921. watch: {
  922. "tagData": {
  923. handler() {
  924. if (this.$refs.singleTable) {
  925. this.$nextTick(() => {
  926. this.$refs.singleTable.doLayout(); // 解决表格错位
  927. })
  928. }
  929. },
  930. deep: true,
  931. immediate: true
  932. }
  933. },
  934. filters: {
  935. //判断等级是否存在
  936. levelName(name) {
  937. return name.level && name.level !== null ? name.level.level_name : that.setLevel_name
  938. },
  939. //判断分组是否存在
  940. levelgroup(group) {
  941. if (group.group && group.group !== null) {
  942. return group.group.group_name
  943. } else {
  944. return "无分组"
  945. }
  946. },
  947. //订单
  948. total(val) {
  949. return val == null ? 0 : val.total
  950. },
  951. //金额
  952. sum(val) {
  953. return val == null ? 0 : val.sum
  954. },
  955. },
  956. computed: {
  957. // 判断开启企业微信
  958. is_customer() {
  959. return (i) => {
  960. if (i == 6) {
  961. return this.is_customers == 0 ? false : true
  962. } else {
  963. return true;
  964. }
  965. }
  966. },
  967. title() {
  968. return (title) => {
  969. if (title !== null && title.followed == 1) {
  970. return "已关注"
  971. } else if (title !== null && title.followed == 0) {
  972. return "未关注"
  973. } else {
  974. return ""
  975. }
  976. }
  977. },
  978. //图标
  979. openid() {
  980. return (id, val) => {
  981. //关注
  982. if (id == 0) {
  983. if (val && val !== null && val.followed == 1) {
  984. return "icon-all_wechat_public wechat_public_already"
  985. } else if (val && val !== null && val.followed == 0) {
  986. return "icon-all_wechat_public wechat_public_not"
  987. } else {
  988. return ""
  989. }
  990. }
  991. //小程序
  992. if (id == 1) {
  993. return val && val !== null ? "icon-all_smallprogram smallprogram" : ""
  994. }
  995. //APP
  996. if (id == 2) {
  997. return val && val !== null ? "icon-all_app all_app" : ""
  998. }
  999. /* 微信开放平台 */
  1000. if (id == 3) {
  1001. return val && val !== null ? "icon-all_wechat all_wechat" : ""
  1002. }
  1003. /* 支付宝 */
  1004. if (id == 4) {
  1005. return val && val !== null ? "icon-all_alipay all_alipay" : ""
  1006. }
  1007. /* 抖音 */
  1008. if (id == 5) {
  1009. return val && val !== null ? "icon-all_trill all_tril" : ""
  1010. }
  1011. /* 企业微信 */
  1012. if (id == 6) {
  1013. return val && val !== null ? "icon-qiyeweixin01 qiyeweixin01" : ""
  1014. }
  1015. // 聚合cps App
  1016. if(id == 7) {
  1017. return val && val !== null ? "icon-all_appshouji all_appshouji" : ""
  1018. }
  1019. }
  1020. },
  1021. //黑名单
  1022. isBlack() {
  1023. return (i, row) => {
  1024. //取消黑名单
  1025. if (i == 9) return row.yz_member.is_black == 1;
  1026. //设置黑名单
  1027. if (i == 10) return row.yz_member.is_black !== 1;
  1028. return true
  1029. }
  1030. }
  1031. },
  1032. methods: {
  1033. // 获取会员标签的id
  1034. getParam(name) {
  1035. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  1036. var r = window.location.search.substr(1).match(reg);
  1037. if (r != null) return unescape(r[2]);
  1038. return null;
  1039. },
  1040. //数据类
  1041. //1.请求列表数据
  1042. postYzWebFullUrl(page, tag_id, groupid) {
  1043. this.tag_id = tag_id ? tag_id : 0;
  1044. let loading = this.$loading({lock: true, text: 'Loading', spinner: 'el-icon-loading', background: 'rgba(0, 0, 0, 0.7)'});
  1045. const SEARCH = this.search;
  1046. this.$http.post("{!! yzWebFullUrl('member.member.show') !!}", {
  1047. page: page,
  1048. tag_id:this.tag_id,
  1049. search: {
  1050. mid: SEARCH.mid,
  1051. name_type: SEARCH.name_type,
  1052. realname: SEARCH.realname,
  1053. first_count: SEARCH.first_count,
  1054. second_count: SEARCH.second_count,
  1055. team_count: SEARCH.team_count,
  1056. custom_value: SEARCH.custom_value,
  1057. level: SEARCH.level,
  1058. groupid: SEARCH.groupid || groupid,
  1059. isagent: SEARCH.isagent,
  1060. followed: SEARCH.followed,
  1061. isblack: SEARCH.isblack,
  1062. times: {
  1063. start: this.starttime !== null ? this.starttime : "",
  1064. end: this.endtime !== null ? this.endtime : ""
  1065. },
  1066. label_id:SEARCH.label_id,
  1067. parent_id:SEARCH.parent_id,
  1068. }
  1069. }).then(response => {
  1070. if (response.data.result) {
  1071. let data_list = response.data.data.list;
  1072. let member_set = response.data.data.rest;
  1073. this.level_list = response.data.data.level;
  1074. this.member_group = response.data.data.member_group;
  1075. this.is_customers = member_set.is_customers;
  1076. this.tage = member_set.is_member_tags;
  1077. this.allList[0].num = data_list.total;
  1078. this.setLevel_name = member_set.default_level_name;
  1079. this.total = data_list.total;
  1080. this.pagesize = data_list.per_page;
  1081. this.currentPage = data_list.current_page;
  1082. this.itemList = data_list.data !== null ? data_list.data : [];
  1083. setTimeout(() => {
  1084. loading.close();
  1085. }, 500)
  1086. } else {
  1087. loading.close();
  1088. this.$message.error("请求失败");
  1089. }
  1090. })
  1091. },
  1092. //2.点击获取统计数据
  1093. titleEvent(index) {
  1094. if (index === 0) {
  1095. return
  1096. }
  1097. this.postDateList(index)
  1098. },
  1099. //3.请求标签的列表数据
  1100. handleTagsList(page) {
  1101. let group_id = {};
  1102. if(this.select_group_id) {
  1103. group_id = { group_id : this.select_group_id };
  1104. }
  1105. this.$http.post("{!!yzWebFullUrl('plugin.member-tags.Backend.controllers.tag.get-tags-list')!!}", {
  1106. search:{
  1107. ...group_id,
  1108. title:this.keyword,
  1109. },
  1110. page
  1111. }).then(({data,result,msg}) => {
  1112. if(data.result) {
  1113. this.tagData = data.data.data;
  1114. this.tag_current_page = data.data.current_page;
  1115. this.tag_total = data.data.total;
  1116. this.tag_per_page = data.data.per_page;
  1117. }else {
  1118. console.log(data.msg);
  1119. }
  1120. })
  1121. },
  1122. // 获取标签分组数据
  1123. getTagsGroupList() {
  1124. this.tagInfo = false;
  1125. this.$http.get("{!!yzWebFullUrl('plugin.member-tags.Backend.controllers.tag.getGroupList')!!}", {}).then(({data,result,msg}) => {
  1126. if(data.result) {
  1127. this.menu_item_list = data.data;
  1128. }else {
  1129. console.log(data.msg);
  1130. }
  1131. this.tagInfo = true;
  1132. })
  1133. },
  1134. //4.各软件统计总会员数数据
  1135. postDateList(i) {
  1136. this.$http.post("{!!yzWebFullUrl('member.member.member-chart')!!}", {
  1137. chart_type: i
  1138. }).then(res => {
  1139. let {
  1140. count
  1141. } = res.body.data
  1142. //改变总数
  1143. this.allList[i].num = count;
  1144. })
  1145. },
  1146. //功能类
  1147. memberMerge(row) {
  1148. this.showMemberMerge = true;
  1149. this.currentMember = row;
  1150. },
  1151. sureMemberMerge() {
  1152. this.$http.post("{!!yzWebFullUrl('member.member.memberMerge')!!}", {
  1153. uid: this.currentMember.uid
  1154. }).then(res => {
  1155. if(res.data.result == 1){
  1156. this.$message.success(res.data.msg);
  1157. this.showMemberMerge = false;
  1158. //重新请求列表数据
  1159. this.postYzWebFullUrl(this.currentPage)
  1160. }else {
  1161. this.$message.error(res.data.msg);
  1162. }
  1163. })
  1164. },
  1165. //1.标签点击搜索
  1166. handEventTag(tag_id) {
  1167. this.tag_id = tag_id
  1168. //记录进入标签搜索标识符
  1169. this.isIdentification = 1;
  1170. this.postYzWebFullUrl(1, tag_id);
  1171. },
  1172. //2.点击请求当前点击的标签的列表
  1173. openDialog(row) {
  1174. //当前会员的id
  1175. this.tagId = row.uid
  1176. //打开回话框
  1177. this.dialogVisible = true
  1178. //请求标签列表
  1179. this.handleTagsList(1);
  1180. //请求标签组列表
  1181. this.getTagsGroupList();
  1182. },
  1183. //3.删除会员标签校验
  1184. handleCloseTag(member_id, tag_id) {
  1185. this.$confirm('是否需要删除?', '提示').then(() => {
  1186. this.$http.post("{!!yzWebFullUrl('plugin.member-tags.Backend.controllers.tag.delMemberTags')!!}", {
  1187. member_id,
  1188. tag_id,
  1189. member_tag_id:'-1'
  1190. }).then(res => {
  1191. if (res.data.result == 1) {
  1192. this.$message.success("删除" + res.data.msg);
  1193. //重新获取数据
  1194. if (this.isIdentification == 0) {
  1195. this.postYzWebFullUrl(1);
  1196. } else {
  1197. this.postYzWebFullUrl(this.currentPage, tag_id);
  1198. }
  1199. } else {
  1200. this.$message.error("删除" + res.data.msg);
  1201. }
  1202. })
  1203. }).catch(() => {});
  1204. },
  1205. //4.添加标签数据
  1206. makeMemberTags(row) {
  1207. this.$http.post("{!!yzWebFullUrl('plugin.member-tags.Backend.controllers.tag.makeMemberTags')!!}", {
  1208. tag_id: row.id,
  1209. member_id: this.tagId
  1210. }).then(res => {
  1211. if (res.data.result == 1) {
  1212. this.$message.success("标签添加" + res.data.msg);
  1213. //重新获取数据
  1214. this.postYzWebFullUrl(this.currentPage);
  1215. //关闭回话框
  1216. this.dialogVisible = false;
  1217. } else {
  1218. this.$message.error("标签添加" + res.data.msg + "已存在!" + "请勿重新添加");
  1219. }
  1220. })
  1221. },
  1222. //5.选择完标签关闭弹窗
  1223. handleClose() {
  1224. this.dialogVisible = false
  1225. },
  1226. //6.分页点击切换下一页数据
  1227. handleCurrentChange(val) {
  1228. //切换下一页数据
  1229. this.tag_id ? this.postYzWebFullUrl(val, this.tag_id) : this.postYzWebFullUrl(val)
  1230. },
  1231. //7.点击搜索
  1232. searchBtn() {
  1233. if (!this.search.time) {
  1234. this.search.time = [];
  1235. }
  1236. this.starttime = parseInt(this.search.time[0] / 1000);
  1237. this.endtime = parseInt(this.search.time[1] / 1000);
  1238. //重新请求列表数据
  1239. this.postYzWebFullUrl(1)
  1240. },
  1241. //8.导出文件
  1242. deriveEvent() {
  1243. let isSubmied = false;
  1244. if (verifyed && (expireTime === 0 || expireTime * 1000 < Date.now())) {
  1245. showGetVerifyCodePopup();
  1246. return false;
  1247. }
  1248. if (isSubmied) {
  1249. return false;
  1250. } else {
  1251. isSubmied = true;
  1252. }
  1253. let SEARCH = this.search;
  1254. let start = this.starttime && !isNaN(this.starttime) ? parseInt(this.starttime) : "";
  1255. let end = this.endtime && !isNaN(this.endtime) ? parseInt(this.endtime) : "";
  1256. let parent_id = SEARCH.parent_id == undefined ? '' : `&search[parent_id]=${SEARCH.parent_id}`;
  1257. //不能换行
  1258. let url = `{!! yzWebFullUrl('member.member.export') !!}${parent_id}` + `&search[mid]=` + SEARCH.mid + '&search[name_type]=' + SEARCH.name_type + '&search[realname]=' + SEARCH.realname + '&search[first_count]=' + SEARCH.first_count + '&search[second_count]=' + SEARCH.second_count + '&search[team_count]=' + SEARCH.team_count + '&search[custom_value]=' + SEARCH.custom_value + '&search[level]=' + SEARCH.level + '&search[groupid]=' + SEARCH.groupid + '&search[isagent]=' + SEARCH.isagent + '&search[followed]=' + SEARCH.followed + '&search[isblack]=' + SEARCH.isblack + '&search[times][start]=' + start + '&search[times][end]=' + end + '&tag_id=' + this.tag_id+'&search[label_id]=' + SEARCH.label_id;
  1259. window.location.href = url;
  1260. },
  1261. // 工具类
  1262. //1.查找地址栏id
  1263. indexId(variable) {
  1264. var query = window.location.search.substring(1);
  1265. var vars = query.split("&");
  1266. for (var i = 0; i < vars.length; i++) {
  1267. var pair = vars[i].split("=");
  1268. if (pair[0] == variable) {
  1269. return Number(pair[1]);
  1270. }
  1271. }
  1272. return (false);
  1273. },
  1274. //2.时间的转换
  1275. timeDate(date) {
  1276. let d = new Date(date);
  1277. let resDate = d.getFullYear() + '-' + (d.getMonth() + 1) + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();;
  1278. return resDate;
  1279. },
  1280. // 选中的分组
  1281. handleSelect(id){
  1282. this.select_group_id = id;
  1283. this.keyword = "";
  1284. this.handleTagsList(1);
  1285. },
  1286. // 标签搜索
  1287. search1(page) {
  1288. this.handleTagsList(page);
  1289. },
  1290. changeLevel(level_id,uid) {
  1291. this.$http.post("{!! yzWebFullUrl('member.member.change-level') !!}", {
  1292. level_id: level_id,
  1293. uid : uid
  1294. }).then(response => {
  1295. if (response.data.result) {
  1296. this.$message.success(response.data.msg)
  1297. loading.close();
  1298. } else {
  1299. this.$message.error(response.data.msg);
  1300. loading.close();
  1301. }
  1302. })
  1303. },
  1304. changeGroup(group_id,uid) {
  1305. this.$http.post("{!! yzWebFullUrl('member.member.change-group') !!}", {
  1306. group_id: group_id,
  1307. uid : uid
  1308. }).then(response => {
  1309. if (response.data.result) {
  1310. this.$message.success(response.data.msg)
  1311. loading.close();
  1312. } else {
  1313. this.$message.error(response.data.msg);
  1314. loading.close();
  1315. }
  1316. })
  1317. },
  1318. sureMergeMember() {
  1319. let json = {
  1320. hold_member_id: this.merge_member_form.hold_member_id,
  1321. give_up_member_id: this.merge_member_form.give_up_member_id,
  1322. };
  1323. this.$http.post("{!!yzWebFullUrl('member.member.mergeMember')!!}", json).then(res => {
  1324. if(res.data.result == 1){
  1325. this.$message.success(res.data.msg);
  1326. this.mergeMemberShow = false;
  1327. //重新请求列表数据
  1328. this.postYzWebFullUrl(this.currentPage)
  1329. }else {
  1330. this.$message.error(res.data.msg);
  1331. }
  1332. })
  1333. },
  1334. //标签列表
  1335. {{--getMemberTag() {--}}
  1336. {{--let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});--}}
  1337. {{--this.$http.post('{!! yzWebFullUrl('member.member.getMemberTag') !!}',{}).then(function(response) {--}}
  1338. {{--if (response.data.result) {--}}
  1339. {{--this.member_tag = response.data.data;--}}
  1340. {{--loading.close();--}}
  1341. {{--} else {--}}
  1342. {{--this.$message({--}}
  1343. {{--message: response.data.msg,--}}
  1344. {{--type: 'error'--}}
  1345. {{--});--}}
  1346. {{--}--}}
  1347. {{--loading.close();--}}
  1348. {{--}, function(response) {--}}
  1349. {{--this.$message({--}}
  1350. {{--message: response.data.msg,--}}
  1351. {{--type: 'error'--}}
  1352. {{--});--}}
  1353. {{--loading.close();--}}
  1354. {{--});--}}
  1355. {{--}--}}
  1356. }
  1357. })
  1358. </script>
  1359. <script>
  1360. </script>
  1361. @endsection