memberIndex.vue 54 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966
  1. <template>
  2. <view class="container column hb flex-1 hidden">
  3. <view class="headbox">
  4. <view style="padding: 10px 10px 0 10px;" class="mb20">
  5. <view>
  6. <u-subsection class="subsection" :list="list" :current="current" bgColor="#e7f1fe" activeColor="#1677ff" :fontSize="15" :bold="false" @change="sectionChange"></u-subsection>
  7. </view>
  8. <!-- <view style="width: 70%;">
  9. <u-subsection class="subsection" :list="list" :current="current" bgColor="#e7f1fe" activeColor="#1677ff"
  10. :fontSize="15" :bold="false" @change="sectionChange" ></u-subsection>
  11. </view> -->
  12. <view style="margin-top: 10px;" class="justify-between align-center" v-if="!viewload">
  13. <u-search placeholder="搜索微信名称、手机、标签" v-model="keyword" :showAction="false" height="30px" @search='searchKeyword'></u-search>
  14. <view v-if="current!==0" class="fs24 ml20" @click="blackSel()">{{!isShowSelectAll?'批量管理':'取消批量'}}</view>
  15. </view>
  16. <view class="x-bc" v-if="current==0">
  17. <u-tabs :list="list2" :current='currentType' :lineWidth="40" lineColor="#1677ff" :activeStyle="activeStyle" :inactiveStyle="inactiveStyle" @click="clickTypeTab"></u-tabs>
  18. <view class="participate-order x-f">
  19. <image :src="imgPath+'/app/images/order_icon2.png'" mode="aspectFill" v-if="searchTypeIndex == 0 || searchTypeIndex == 2"></image>
  20. <image :src="imgPath+'/app/images/order_icon.png'" mode="aspectFill" v-else></image>
  21. <picker @change="bindPickerChange" :value="searchTypeIndex" :range="typeArray">
  22. {{typeoption[searchTypeIndex]}}
  23. </picker>
  24. </view>
  25. </view>
  26. <view class="tagbox x-bc" v-if="current==0">
  27. <view class="tagbox-left x-f">
  28. <!-- <view class="x-f" @click="openPop('search')">{{array[queryParam.typeIndex].name}}<u-icon name="arrow-down-fill" color="#2979ff" size="11" style="margin: 0 3px;"></u-icon></view> -->
  29. <view v-if="showCompanytag.length<=0" style="color: #888;" class="ml30">请点击筛选,选择标签</view>
  30. <view class="tagbox-list x-f">
  31. <view class="tagbox-item x-f" v-for="(item,index) in showCompanytag" :key='item.tagId' :class="item.checked?'checked-bg':''">
  32. {{item.tagName}}
  33. </view>
  34. </view>
  35. </view>
  36. <view class="tagbox-right x-f" @click="openPop('tag')">筛选<u-icon name="arrow-down" color="#1677ff" size="12"></u-icon></view>
  37. </view>
  38. </view>
  39. <view v-if="current==0&&!viewload">
  40. <dropdownPanel :filterData='filterData' @onClick="getactNav" :itemname='itemname' @onChange="onChange" @confirm="confirm" @reset="reset" :ispopshow='ispopshow' :top="tops">
  41. <view v-if="filterData[searchbarNav].type == 'userStatus'">
  42. <view class="boxnav x-bc">
  43. <view class="boxnav-item" v-for="(item,index) in filterData[searchbarNav].option" :key="index">
  44. <view class="boxnav-item-info one-t"
  45. :class="userStatusIndex == index ? 'boxnav-active':''" @click="handleParamItem('userStatus',index,item.id)">{{item.label}}</view>
  46. </view>
  47. </view>
  48. </view>
  49. <view v-if="filterData[searchbarNav].type == 'registerTime'">
  50. <view class="boxnav x-bc ">
  51. <view class="boxnav-item" style="width: 25%;" v-for="(item,index) in filterData[searchbarNav].option" :key="index">
  52. <view class="boxnav-item-info one-t" :class="registerTimeIndex == index ? 'boxnav-active':''" @click="handleParamItem('registerTime',index)">{{item.label}}</view>
  53. </view>
  54. <view class="boxnav-item x-ac" style="width: 100%;" v-show="registerTimeIndex == 4">
  55. <view class="calendar-day x-c" @click="$refs.calendar.open()">
  56. <u-icon name="calendar" color="#999" size="20"></u-icon>{{queryParam.startTime || '选择日期'}}
  57. </view>
  58. <view class="calendar-day x-c" @click="$refs.calendar.open()">
  59. <u-icon name="calendar" color="#999" size="20"></u-icon>{{queryParam.endTime || '选择日期'}}
  60. </view>
  61. </view>
  62. </view>
  63. </view>
  64. <view v-if="filterData[searchbarNav].type == 'watchStatus'">
  65. <view class="boxnav x-bc">
  66. <view class="boxnav-item" v-for="(item,index) in filterData[searchbarNav].option" :key="index">
  67. <view class="boxnav-item-info one-t" :class="watchStatusIndex == index ? 'boxnav-active':''" @click="handleParamItem('watchStatus',index)">{{item.label}}</view>
  68. </view>
  69. </view>
  70. </view>
  71. <view v-if="filterData[searchbarNav].type == 'courseStatus'">
  72. <view class="boxnav x-bc">
  73. <view class="boxnav-item" v-for="(item,index) in filterData[searchbarNav].option" :key="index">
  74. <view class="boxnav-item-info one-t" :class="courseStatusIndex == index ? 'boxnav-active':''" @click="handleParamItem('courseStatus',index)">{{item.label}}</view>
  75. </view>
  76. </view>
  77. </view>
  78. <view v-if="filterData[searchbarNav].type == 'project'">
  79. <view class="boxnav x-bc">
  80. <view class="boxnav-item" v-for="(item,index) in filterData[searchbarNav].option" :key="index">
  81. <view class="boxnav-item-info one-t" :class="projectStatusIndex == index ? 'boxnav-active':''" @click="handleParamItem('project',index,item.id)">{{item.label}}</view>
  82. </view>
  83. </view>
  84. </view>
  85. </dropdownPanel>
  86. </view>
  87. </view>
  88. <view class="">
  89. <uni-calendar ref="calendar" :clear-date="true" :date="date" :insert="false" :lunar="false"
  90. :startDate="$u.timeFormat(new Date().getTime() - (3600 * 24 * 365 * 1000), 'yyyy-mm-dd')" :range='true'
  91. @confirm="confirmCalendar" :endDate="$u.timeFormat(new Date().getTime(), 'yyyy-mm-dd')" />
  92. </view>
  93. <view class="">
  94. <!-- 搜索选择弹窗/标签筛选 -->
  95. <u-popup :show="showPop" :round="12" @close="closePop" class="model" :zIndex="10076" style="flex: 0;">
  96. <view class="popbox">
  97. <view class="popbox-head">
  98. <u-icon class="close-circle" name="close-circle" color="#ccc" size="24"
  99. @click="closePop"></u-icon>
  100. {{popTitle}}
  101. </view>
  102. <view class="popbox-body">
  103. <view class="radiobox" v-show="popTitle == '搜索选择'">
  104. <label class="radiobox-item x-bc mbline" v-for="(item, index) in array" :key="item.value"
  105. @click="bindTypeChange(index)">
  106. <view>{{item.name}}</view>
  107. <radio :value="item.value" :checked="index === typeIndex"
  108. style="transform:scale(0.75)" />
  109. </label>
  110. </view>
  111. <!-- <input placeholder="请输入标签 多个标签用 , 隔开" /> -->
  112. <view class="mb20" v-if="current==0">
  113. <u-search placeholder="请输入标签 多个标签用 , 隔开" v-model="tagkeywords" :showAction="false" height="30px" @search='getcompanyTag'></u-search>
  114. </view>
  115. <scroll-view scroll-y="true" class="hb" :refresher-enabled="isEnableds" :refresher-triggered="triggereds" refresher-background="rgba(0,0,0,0)" @refresherrefresh="pullDownRefreshs" @refresherrestore="triggereds = false"
  116. :upper-threshold="100" :lower-threshold="100" @refresherabort="triggereds = false"
  117. @scrolltolower="reachBottoms">
  118. <view class="tagbox-list x-f">
  119. <view class="tagbox-item x-f tag-active" v-if="companytag.length<=0">暂无标签</view>
  120. <view class="mlr10 mb10" v-for="(item,index) in companytag" :key='item.tagId'>
  121. <u-tag :text="item.tagName" :plain="!item.checked" :name="index" @click="chooseTag(index)"></u-tag>
  122. </view>
  123. </view>
  124. <view class="center fs24 mt20">
  125. <text class="mr20" @click="getTagpage('last')">上一页</text>
  126. <text class="base-color-red">{{pagetag.pageNum}}/{{pagetag.pages}}</text>
  127. <text class="ml20" @click="getTagpage('next')">下一页</text>
  128. </view>
  129. </scroll-view>
  130. </view>
  131. <view class="popbox-footer x-bc">
  132. <button class="popbox-footer-btn" @click="resetPop" v-show="popTitle == '标签筛选'">重置</button>
  133. <button class="popbox-footer-btn" @click="closePop" v-show="popTitle == '搜索选择'">取消</button>
  134. <button class="popbox-footer-btn con-btn" @click="confirmPop">确定</button>
  135. </view>
  136. </view>
  137. </u-popup>
  138. </view>
  139. <view class="userbox column hb hidden flex-1">
  140. <!-- <mescroll-body bottom="0" ref="mescrollRef" @init="mescrollInit" :down="downOption" :up="upOption" @down="downCallback" @up="upCallback"> -->
  141. <view class="userlist column hb hidden flex-1">
  142. <vipUserItem :viplist='userList' :isShowSelectAll="isShowSelectAll" @changeItem="changeItem" @getuserId='singleChange' @getlableId='singleChangeLable' @change='changesinglevip' @getuserIds='singleDelete' @pullDownRefresh="getfsuserListdata('refresh')"
  143. @changelistname="getfsuserListdata('more')" @reachBottom="getfsuserListdata()" @changePageOptions="e=>pageOptions=e" :pageOptions="pageOptions" :status="status"
  144. @changeStatus="e=>status=e" class="pb2 hb" />
  145. <view class="justify-between base-bg-f foot-select pb40" v-if="isShowSelectAll">
  146. <view class="align-center justify-between" v-if="isShowSelectAll">
  147. <u-checkbox-group @change="selectAll">
  148. <u-checkbox :checked="isSelectAll" shape="circle" activeColor="#FF6C47" :name="true" label="全选" labelColor="#333" /><text class="fs24 base-color-9 ml12">已选 {{selectedCount}}
  149. 个</text>
  150. </u-checkbox-group>
  151. </view>
  152. <view class="justify-center ">
  153. <button class="base-bg-red radius100 colorf h62 fs28 lh62 mlr10" @click="changeProhibit" v-if="current==0">禁用</button>
  154. <button class="base-bg-red radius100 colorf h62 fs28 lh62 mlr10" @click="changeblack" v-else>取消禁用</button>
  155. <button class="base-bg-blue radius100 colorf h62 fs28 lh62" @click="changetagall" v-if="current==0">改标签</button>
  156. <!-- <button class="base-bg-f radius100 base-color-red h62 ml10 fs28 lh60"
  157. style="border: #ef4c50 solid 2rpx;"
  158. @click="changevipuser" v-if="current==0">更换归属</button> -->
  159. </view>
  160. </view>
  161. </view>
  162. <!-- </mescroll-body> -->
  163. </view>
  164. <!-- <u-picker :show="showTagSelect" :columns="companytag" keyName="tag" @cancel='showTagSelect=false'
  165. @confirm='singleChangeLable' ></u-picker> -->
  166. <view>
  167. <u-popup :show="projectbox" :round="12" @close="projectbox = false" :zIndex="10074" style="flex: 0;">
  168. <view class="pb120">
  169. <view class="center bold fs32 mt30">选择项目</view>
  170. <view class="p20 justify-start mb60" style="flex-wrap: wrap">
  171. <view class="plr16 ptb8 u-border mlr10 radius8 " :class="projectId==item.dictValue?'probgsel':'probg'"
  172. v-for="(item,index) in projectList" :key="index" @click="selproject(item)">
  173. {{item.dictLabel}}
  174. </view>
  175. </view>
  176. <view class="quedingpro" @click="submitPro">确定</view>
  177. </view>
  178. </u-popup>
  179. <u-popup :show="showTagSelect" @close='closetagselect' :closeOnClickOverlay='true' mode="bottom"
  180. style="z-index: 999;">
  181. <view class=" w100 bgf pb120">
  182. <view class="plr28 ptb16 justify-between" style="flex-direction: row-reverse">
  183. <u-icon class="" name="close-circle" color="#ccc" size="24" @click="closetagselect"></u-icon>
  184. </view>
  185. <view class="mb20">
  186. <u-search placeholder="请输入标签 多个标签用 , 隔开" v-model="tagchangekeywords" :showAction="false"
  187. height="30px" @search='getcompanyTags'></u-search>
  188. </view>
  189. <scroll-view scroll-y="true" class="hb" :refresher-enabled="isEnableds"
  190. :refresher-triggered="triggeredsA" refresher-background="rgba(0,0,0,0)"
  191. @refresherrefresh="pullDownRefreshsA" @refresherrestore="triggeredsA = false"
  192. :upper-threshold="100" :lower-threshold="100" @refresherabort="triggeredsA = false">
  193. <view class="justify-start p32 wrap">
  194. <view class="mlr10 mt10 " v-for="(item,index) in changetag" :key='item.tagId'>
  195. <u-tag :text="item.tag" :plain="!item.checked" :name="index"
  196. @click="choosechangeTag"></u-tag>
  197. </view>
  198. </view>
  199. <view class="center fs24 mt20">
  200. <text class="mr20" @click="getTagpageS('last')">上一页</text>
  201. <text class="base-color-red">{{pagetagA.pageNum}}/{{pagetagA.pages}}</text>
  202. <text class="ml20" @click="getTagpageS('next')">下一页</text>
  203. </view>
  204. </scroll-view>
  205. <view class="justify-between p32 " :class="isShowSelectAll?'pb120':''">
  206. <view class="changetagbtn base-bg-f8" @click="showTagSelect=!showTagSelect">取消</view>
  207. <view class="changetagbtn colorf base-bg-blue" @click="suretagchangeAll">确定</view>
  208. </view>
  209. </view>
  210. </u-popup>
  211. </view>
  212. <view class="invite-member" :style="{right:vipInviteshow?'-72rpx':'20rpx'}">
  213. <image :src="imgPath+'/app/images/invite-member-icon.png'" mode="aspectFill" @click="vipInvite"
  214. style="position: relative;" class="intimg"> </image>
  215. <image :src="imgPath+'/app/image/tc_close_icon.png'" class="falseimg" @click="showinimg"></image>
  216. </view>
  217. <view class="">
  218. <!-- 邀请弹窗 -->
  219. <u-popup :show="invitePop" :round="12" @close="invitePop = false" :zIndex="10074" style="flex: 0;">
  220. <view class="popbox">
  221. <view class="popbox-head">
  222. <u-icon class="close-circle" name="close-circle" color="#ccc" size="24"
  223. @click="invitePop = false"></u-icon>
  224. 分享方式
  225. </view>
  226. <view class="popbox-body">
  227. <view class="choosetitle x-bc">
  228. <view>选择标签</view>
  229. <view v-if="sharetaglist" style="color:#1677ff" @click="addtag(0)">{{zhanshitag}}</view>
  230. <view class="x-f" style="color:#1677ff;" v-else @click="addtag(0)">
  231. <u-icon name="plus" color="#1677ff" size="14" style="margin-right: 5px;"></u-icon>添加标签
  232. </view>
  233. </view>
  234. <view class="invitetip">选择标签,当会员注册成功后,即可自动打标签</view>
  235. <!-- <view class="tagbox-list x-f" style="margin-top: 10px;margin-left: 0px;">
  236. <view class="tagbox-item x-f" @click="chooseTag">未打标签</view>
  237. <view class="tagbox-item x-f tag-active">未打标签</view>
  238. </view> -->
  239. <!--#ifdef MP-WEIXIN-->
  240. <view class="justify-center" style="margin-top: 10px;">
  241. <!--#endif-->
  242. <!--#ifdef H5-->
  243. <view class="justify-center" style="margin-top: 10px;">
  244. <!--#endif-->
  245. <!-- <view class="x-bc " style="margin-top: 30px;"> -->
  246. <!--#ifdef MP-WEIXIN-->
  247. <view class="sharePop-item y-f " style="text-align: center;">
  248. <!--#endif-->
  249. <!--#ifdef H5-->
  250. <view class="sharePop-item y-f card-share" @click="shareimg"
  251. style="text-align: center;">
  252. <!--#endif-->
  253. <image :src="imgPath+'/app/images/card_icon.png'" mode="aspectFill"
  254. style="width: 80rpx; height: 80rpx;margin-top: 20rpx;">
  255. </image>
  256. <view class='u-border radius100 plr20 ptb10' @click="copyPageLink"
  257. >复制页面地址</view>
  258. <!-- <view style="font-weight: bold;margin-bottom: 4px;">生成卡片</view>
  259. <view style="font-size: 12px;color: #888;">指导分享轻松转发</view> -->
  260. <!-- #ifdef MP-WEIXIN -->
  261. <!-- <button open-type="share" class="share">分享卡片</button> -->
  262. <!-- #endif -->
  263. </view>
  264. <!--#ifdef H5-->
  265. <view class="sharePop-item y-f " @click="buildimg" style="text-align: center;">
  266. <image :src="imgPath+'/app/images/poster_icon.png'" mode="aspectFill"></image>
  267. <view style="font-weight: bold;margin-bottom: 4px;">生成海报</view>
  268. <view style="font-size: 12px;color: #888;">保存海报美观宣传</view>
  269. </view>
  270. <view class="sharePop-item y-f " @click="copyLink" style="text-align: center;">
  271. <image :src="imgPath+'/app/images/link_icon.png'" mode="aspectFill"></image>
  272. <view style="font-weight: bold;margin-bottom: 4px;">复制链接</view>
  273. <view style="font-size: 12px;color: #888; ">生成链接一键复制</view>
  274. </view>
  275. <!--#endif-->
  276. </view>
  277. </view>
  278. </view>
  279. </u-popup>
  280. <!-- 设置链接有效时长弹窗 -->
  281. <u-modal :show="setTimeShow" content='content' class="model" @confirm="confirmTime">
  282. <view class="setTimebox">
  283. <view class="timetip">不传默认以系统参数为准</view>
  284. <view class="x-f">
  285. <text style="margin-right: 20px;">链接有效时长(分钟)</text>
  286. <u-input fontSize="14px" placeholder="链接有效时长" border="none" v-model="time"
  287. maxlength="5"></u-input>
  288. </view>
  289. </view>
  290. </u-modal>
  291. <!-- 长按保存海报 -->
  292. <u-popup :show="setImg" @close="closeimg" :round="12">
  293. <view class="w100 h500 center">
  294. <image :src="codeLink.url" mode="aspectFill"></image>
  295. </view>
  296. <view class="justify-around mb40">
  297. <view class="column justify-center align-center" @click="downimg">
  298. <image :src="imgPath+'/app/image/downicon.png'" class="w80 h80"></image>
  299. <view class="mt10">长按图片保存</view>
  300. </view>
  301. </view>
  302. </u-popup>
  303. <!-- 卡片分享引导 -->
  304. <u-overlay :show="showzhidao" @click="showzhidao = false" style="z-index: 9999;">
  305. <view class="point-box">
  306. <view class="imgshe">
  307. <image :src="imgPath+'/app/image/point.png'" class="w300 h300"></image>
  308. </view>
  309. <view class="column colorf fs32 xu-box fs40
  310. align-center justify-center">
  311. <view class="justify-center">点击右上角
  312. <image :src="imgPath+'/app/image/wxmore.png'" class="w50 h50 mlr10"></image>
  313. </view>
  314. <view class="mt20">选择 “转发给朋友”</view>
  315. <view style="color: #cbcbcb;" class="fs28 mt40">点击任意位置关闭弹窗</view>
  316. </view>
  317. </view>
  318. </u-overlay>
  319. <!-- 更改归属 -->
  320. <u-picker :show="showcol" :columns="columns" @cancel='showcol=!showcol' @confirm='receiveA'
  321. keyName="nickName"></u-picker>
  322. <u-loading-page :loading="viewload" iconSize="32" loadingColor="#3c9cff" fontSize="20"
  323. :loading-text="loadingtext"></u-loading-page>
  324. </view>
  325. </view>
  326. </template>
  327. <script>
  328. import {
  329. getfsuserList,
  330. getcompanyTaglist,
  331. Addblacklist,
  332. changeLable,
  333. getvipNum,
  334. changevipUser,
  335. getgroupList,
  336. becomeVipuser,
  337. becomeVipuserImg,
  338. getusersales,
  339. removebalcklist,
  340. getallTags,
  341. copyuniLink,
  342. getlinkCode,
  343. getprojectlist
  344. } from "@/api/manageCompany.js";
  345. import vipUserItem from "../components/vipUserItem.vue"
  346. import dropdownPanel from "../components/dropdownPanel.vue"
  347. // import wx from 'weixin-js-sdk'
  348. export default {
  349. components: {
  350. vipUserItem,
  351. dropdownPanel,
  352. },
  353. data() {
  354. return {
  355. viewload: true,
  356. loadingtext: "数据加载中...",
  357. showcol: false,
  358. setImg: false,
  359. columns: [],
  360. showTagSelect: false,
  361. list: [{
  362. name: '会员(0)',
  363. }, {
  364. name: '小黑屋(0)'
  365. },
  366. {
  367. name: '黑名单(0)'
  368. }
  369. ],
  370. userList: [],
  371. current: 0,
  372. keyword: "",
  373. companytag: [],
  374. showCompanytag: [],
  375. selectedList: [], //已经选中标签列表
  376. list2: [{
  377. name: '全部',
  378. }, {
  379. name: '今日新增',
  380. }, {
  381. name: '今日完播'
  382. }, {
  383. name: '未看过课'
  384. }],
  385. currentType: 0,
  386. activeStyle: {
  387. color: '#1677ff',
  388. fontSize: '14px',
  389. fontWeight: 'bold'
  390. },
  391. inactiveStyle: {
  392. fontSize: '14px'
  393. },
  394. searchTypeIndex: 0,
  395. typeArrays: ['连续缺课天数多到少', '连续缺课天数少到多', '按注册时间晚到早', '会员姓名0-9-A-Z'],
  396. typeArray: ['按注册时间晚到早', '会员姓名0-9-A-Z'],
  397. typeoption: ['注册时间', '会员姓名'],
  398. array: [{
  399. value: '0',
  400. name: '关联搜索',
  401. },
  402. {
  403. value: '1',
  404. name: '精准搜索'
  405. }
  406. ],
  407. typeIndex: 0,
  408. popTitle: '搜索选择',
  409. showPop: false,
  410. filterData: [{
  411. name: '销售',
  412. value: 0,
  413. type: 'userStatus',
  414. option: [{
  415. label: '全部',
  416. id: ''
  417. }, ]
  418. },
  419. {
  420. name: '注册',
  421. value: 1,
  422. type: 'registerTime',
  423. option: [{
  424. label: '全部',
  425. }, {
  426. label: '今天',
  427. }, {
  428. label: '昨天',
  429. }, {
  430. label: '近7天',
  431. }, {
  432. label: '自定义',
  433. }]
  434. }, {
  435. name: '看课',
  436. value: 2,
  437. type: 'watchStatus',
  438. option: [{
  439. label: '全部',
  440. }, {
  441. label: '未看过课',
  442. }, {
  443. label: '正常看课',
  444. }, {
  445. label: '停止看课',
  446. }]
  447. },
  448. {
  449. name: '缺课',
  450. value: 3,
  451. type: 'courseStatus',
  452. option: [{
  453. label: '全部',
  454. }, {
  455. label: '已缺课',
  456. }, {
  457. label: '未缺课',
  458. }]
  459. },
  460. {
  461. name: '项目',
  462. value: 4,
  463. type: 'project',
  464. option: [{
  465. label: '全部',
  466. id: ''
  467. }]
  468. },
  469. {
  470. name: '批量',
  471. value: 5,
  472. type: 'piliang',
  473. special: true,
  474. stopPrevent: true
  475. }
  476. ],
  477. searchbarNav: 0,
  478. userStatusIndex: 0,
  479. registerTimeIndex: 0,
  480. watchStatusIndex: 0,
  481. courseStatusIndex: 0,
  482. projectStatusIndex: 0,
  483. selprojectId: '',
  484. showCalendar: false,
  485. date: '',
  486. mode: 'range',
  487. queryParam: {
  488. typeIndex: 0,
  489. startTime: '',
  490. endTime: ''
  491. },
  492. mescroll: null,
  493. downOption: {
  494. use: true,
  495. auto: false
  496. },
  497. upOption: {
  498. onScroll: false,
  499. use: true, // 是否启用上拉加载; 默认true
  500. auto: true,
  501. page: {
  502. pae: 0, // 当前页码,默认0,回调之前会加1,即callback(page)会从1开始
  503. size: 10 // 每页数据的数量,默认10
  504. },
  505. noMoreSize: 10, // 配置列表的总数量要大于等于5条才显示'-- END --'的提示
  506. textNoMore: "已经到底了",
  507. empty: {
  508. icon: 'https://cos.his.cdwjyyh.com/fs/20240423/cf4a86b913a04341bb44e34bb4d37aa2.png',
  509. tip: '暂无数据'
  510. }
  511. },
  512. dataList: [],
  513. invitePop: false,
  514. setTimeShow: false,
  515. time: "",
  516. user: {},
  517. idx: [],
  518. todayday: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd'),
  519. startTime: '',
  520. endTime: '',
  521. isShowSelectAll: false, //是否显示全选
  522. isSelectAll: false, //是否全选
  523. ispopshow: false,
  524. selectidAll: [],
  525. changetag: [],
  526. selectidtag: '',
  527. itemname: '',
  528. userid: '',
  529. groupid: [],
  530. pageOptions: {
  531. pageNum: 1,
  532. pageSize: 8,
  533. },
  534. status: 'loadmore',
  535. sharetag: 1,
  536. sharetaglist: [],
  537. codeLink: [],
  538. zhanshitag: '',
  539. copyLinks: '',
  540. showzhidao: false,
  541. imgs: this.$store.state.imgpath + '/app/image/logoshare.png',
  542. currentIsBlack: 1,
  543. tagpageNum: 1,
  544. tagpageSize: 16,
  545. triggereds: false,
  546. statusA: 'loadmore',
  547. isEnableds: true,
  548. pagetag: [],
  549. tagkeywords: '',
  550. salesid: '',
  551. tagchangekeywords: '',
  552. tagpageNums: 1,
  553. tagpageSizes: 16,
  554. triggeredsA: false,
  555. statusAs: 'loadmore',
  556. isEnabledsA: true,
  557. pagetagA: [],
  558. tops: '464rpx',
  559. showInvite: false,
  560. vipInviteshow: false,
  561. projectbox:false,
  562. projectList:{},
  563. projectId:''
  564. }
  565. },
  566. // onLoad() {
  567. // // #ifdef MP-WEIXIN
  568. // uni.showShareMenu({
  569. // withShareTicket: true,
  570. // menus: ['shareAppMessage']
  571. // });
  572. // // #endif
  573. // },
  574. mounted() {
  575. this.getsalelist()
  576. this.user = uni.getStorageSync("companyUserInfo") ? JSON.parse(uni.getStorageSync("companyUserInfo")) : {},
  577. this.getvipListnum()
  578. this.userList = []
  579. this.getfsuserListdata()
  580. this.getprojectlistsA()
  581. },
  582. onShow() {
  583. // #ifdef H5
  584. this.getjssdklist()
  585. // #endif
  586. },
  587. // 这个是分享聊天
  588. // onShareAppMessage() {
  589. // return {
  590. // title:this.$store.state.logoname+'小程序的'+this.user.userName + '邀请您成为会员!',
  591. // path: '/pages/user/users/becomeVIP?companyId=' +
  592. // this.user.companyId + '&companyUserId=' + this.user.userId + '&tagids=' + this.sharetaglist,
  593. // imageUrl: this.imgs,
  594. // }
  595. // },
  596. computed: {
  597. selectedCount() {
  598. return this.userList.filter(item => item.checked).length;
  599. },
  600. imgPath() {
  601. return this.$store.state.imgpath
  602. }
  603. },
  604. methods: {
  605. getlinkCodes(){
  606. getlinkCode().then(res=>{
  607. if(res.code){
  608. this.projectCode=res.code
  609. console.log(this.projectCode)
  610. setTimeout(()=>{
  611. this.setlnk()
  612. },100)
  613. }
  614. })
  615. },
  616. setlnk(){
  617. let params={
  618. companyId: this.user.companyId,
  619. companyUserId: this.user.userId,
  620. tagids: this.sharetaglist,
  621. projectCode: this.projectCode,
  622. projectId: this.projectId,
  623. }
  624. const pages = '/pages_course/becomeVIP?becomeVip='+JSON.stringify(params)
  625. console.log(pages)
  626. const data={
  627. appid:wx.getAccountInfoSync().miniProgram.appId,
  628. linkStr:pages
  629. }
  630. copyuniLink(data).then(res=>{
  631. if(res.code==200){
  632. uni.hideLoading();
  633. setTimeout(() => {
  634. uni.setClipboardData({
  635. data:res.data,
  636. success: () => {
  637. uni.showToast({
  638. title: '链接已复制',
  639. icon: 'none',
  640. duration: 2000
  641. });
  642. },
  643. fail: () => {
  644. uni.showToast({
  645. title: '复制失败',
  646. icon: 'none'
  647. });
  648. }
  649. });
  650. }, 200)
  651. }else{
  652. uni.hideLoading();
  653. uni.showToast({
  654. title: res.msg,
  655. icon: 'none'
  656. });
  657. }
  658. })
  659. },
  660. copyPageLink(){
  661. uni.showLoading({
  662. title: "处理中..."
  663. });
  664. this.getlinkCodes()
  665. },
  666. submitPro() {
  667. if (this.projectId == '') {
  668. uni.showToast({
  669. title: '请选择项目',
  670. icon: 'none',
  671. duration: 1000
  672. });
  673. return
  674. }
  675. this.projectbox = false
  676. this.invitePop = true
  677. const pages = '/pages_course/becomeVIP?companyId=' +this.user.companyId
  678. +"&projectId=" +this.projectId+ '&companyUserId=' + this.user.userId + '&tagids=' + this.sharetaglist
  679. this.$emit('childEvent', pages);
  680. },
  681. selproject(item) {
  682. this.projectId = item.dictValue
  683. },
  684. getprojectlistsA() {
  685. const oldlist = this.filterData[4].option
  686. const data = {
  687. key: 'sys_course_project'
  688. }
  689. getprojectlist(data).then(res => {
  690. if (res.code == 200) {
  691. const list = res.data
  692. this.filterData[4].option = oldlist.concat(list.map(item => {
  693. return {
  694. id: item.dictValue,
  695. label: item.dictLabel
  696. };
  697. }));
  698. console.log('1212121212', this.filterData[4].option)
  699. } else {
  700. uni.showToast({
  701. title: res.msg,
  702. icon: 'none',
  703. });
  704. }
  705. })
  706. },
  707. getprojectlists() {
  708. const data = {
  709. key: 'sys_course_project'
  710. }
  711. getprojectlist(data).then(res => {
  712. // this.projectList=res.data
  713. this.projectList = res.data.map(item => {
  714. return {
  715. ...item,
  716. checked: false,
  717. }
  718. })
  719. console.log(this.projectList)
  720. })
  721. },
  722. sharecard() {
  723. console.log(11)
  724. },
  725. changetagall() {
  726. this.showTagSelect = !this.showTagSelect
  727. this.tagchangekeywords = ''
  728. this.selectidtag = ''
  729. this.showInvite = false
  730. this.sharetag = 1
  731. this.getalltagtaglist()
  732. },
  733. getTagpageS(type) {
  734. if (type == 'last') {
  735. if (this.tagpageNums >= 2) {
  736. this.tagpageNums--
  737. this.getalltagtaglist()
  738. } else {
  739. uni.showToast({
  740. title: '已经是第一页',
  741. icon: 'none',
  742. duration: 1000
  743. });
  744. }
  745. } else {
  746. if (this.tagpageNums < this.pagetagA.pages) {
  747. this.tagpageNums++
  748. this.getalltagtaglist()
  749. } else {
  750. uni.showToast({
  751. title: '已经是最后一页',
  752. icon: 'none',
  753. duration: 1000
  754. });
  755. }
  756. }
  757. },
  758. getcompanyTags(value) {
  759. this.tagchangekeywords = value
  760. this.getalltagtaglist()
  761. },
  762. singleDelete(data) {
  763. this.pageOptions.pageNum = 1
  764. this.$emit('update:parentValue', '新值');
  765. this.userList = []
  766. this.selectidAll[0] = data
  767. this.changeblack()
  768. },
  769. changeblack() {
  770. // console.log(this.selectidAll[0])
  771. //取消禁用
  772. if (this.selectidAll.length < 1) {
  773. uni.showToast({
  774. icon: 'none',
  775. title: '所选列表为空'
  776. })
  777. return
  778. }
  779. removebalcklist(this.selectidAll).then(res => {
  780. if (res.code == 200) {
  781. this.pageOptions.pageNum = 1
  782. // console.log(this.pageOptions.pageNum)
  783. this.getfsuserListdata('refresh')
  784. // 创建一个在**秒后执行的定时器
  785. const timer = setTimeout(function() {
  786. uni.showToast({
  787. icon: 'none',
  788. title: '取消禁用成功'
  789. })
  790. }, 200);
  791. this.getvipListnum()
  792. this.isShowSelectAll = false
  793. this.isSelectAll = false
  794. } else {
  795. uni.showToast({
  796. icon: 'none',
  797. title: res.msg
  798. })
  799. }
  800. })
  801. },
  802. blackSel() {
  803. this.isShowSelectAll = !this.isShowSelectAll
  804. // if (data.value == 4) {
  805. // this.itemname = data.name
  806. // this.isShowSelectAll = !this.isShowSelectAll
  807. // } else {
  808. // this.isShowSelectAll = false
  809. // }
  810. },
  811. getsalelist() {
  812. const oldlist = this.filterData[0].option
  813. getusersales().then(res => {
  814. if (res.code == 200) {
  815. const list = res.data
  816. this.filterData[0].option = oldlist.concat(list.map(item => {
  817. return {
  818. id: item.userId,
  819. label: item.nickName
  820. };
  821. }));
  822. // this.filterData[0].option=list.map(item => {
  823. // return {
  824. // id: item.userId,
  825. // label: item.nickName
  826. // };
  827. // })
  828. } else {
  829. uni.showToast({
  830. title: res.msg,
  831. icon: 'none',
  832. });
  833. }
  834. })
  835. },
  836. getTagpage(type) {
  837. if (type == 'last') {
  838. if (this.tagpageNum >= 2) {
  839. this.tagpageNum--
  840. this.getcompanyTag()
  841. } else {
  842. uni.showToast({
  843. title: '已经是第一页',
  844. icon: 'none',
  845. duration: 1000
  846. });
  847. }
  848. } else {
  849. if (this.tagpageNum < this.pagetag.pages) {
  850. this.tagpageNum++
  851. this.getcompanyTag()
  852. } else {
  853. uni.showToast({
  854. title: '已经是最后一页',
  855. icon: 'none',
  856. duration: 1000
  857. });
  858. }
  859. }
  860. },
  861. //标签展示下拉
  862. pullDownRefreshs() {
  863. // 下拉
  864. this.triggereds = true; //下拉了状态为true
  865. setTimeout(() => {
  866. this.triggereds = false;
  867. uni.stopPullDownRefresh()
  868. this.tagpageNum = 1;
  869. this.getcompanyTag('refresh') //触底 不穿执行else
  870. // 请求接口里面需要判断是不是最后一页 是最后一页 status赋值为‘loadmore’没有更多了
  871. // 请求接口
  872. }, 1000)
  873. },
  874. getjssdklist() {
  875. const param = {
  876. url: window.location.href
  877. }
  878. getSDK(param).then(res => {
  879. wx.config({
  880. appId: res.data.appId, // 必填,公众号的唯一标识
  881. timestamp: res.data.timestamp, // 必填,生成签名的时间戳
  882. nonceStr: res.data.nonceStr, // 必填,生成签名的随机串
  883. signature: res.data.signature, // 必填,签名
  884. jsApiList: ["updateAppMessageShareData"] // 必填,需要使用的JS接口列表
  885. });
  886. })
  887. },
  888. shareimg() {
  889. //分享好友
  890. this.getlink()
  891. let self = this
  892. // 配置--你到时候把配置全局 --就是这些东西 调接口拿
  893. wx.ready(function() { //需在用户可能点击分享按钮前就先调用
  894. wx.updateAppMessageShareData({
  895. title: self.user.userName + "邀请您成为会员", // 分享标题
  896. desc: self.user.deptName, // 分享描述
  897. link: self.copyLinks,
  898. imgUrl: self.codeLink.url || self.imgs, // 分享图标
  899. success: function(res) {
  900. self.showzhidao = true
  901. self.setImg = false
  902. self.showShare = false
  903. // 设置成功
  904. uni.showToast({
  905. title: '卡片已生成',
  906. icon: 'none',
  907. duration: 1000
  908. });
  909. },
  910. fail: function(err) {
  911. console.log(err);
  912. uni.showToast({
  913. title: '卡片生成失败,请重试',
  914. icon: 'none',
  915. duration: 2000
  916. })
  917. }
  918. })
  919. });
  920. },
  921. downimg() {},
  922. closeimg() {
  923. this.setImg = false
  924. this.invitePop = false
  925. },
  926. buildimg() {
  927. this.setImg = !this.setImg
  928. this.getshareimg()
  929. },
  930. addtag(add) {
  931. this.sharetag = add
  932. this.showTagSelect = !this.showTagSelect
  933. this.invitePop = !this.invitePop
  934. this.showInvite = true
  935. this.getalltagtaglist()
  936. },
  937. changevipuser() {
  938. this.showcol = !this.showcol
  939. this.getgrouplist()
  940. },
  941. getgrouplist() {
  942. //获取群管列表
  943. getgroupList().then(res => {
  944. if (res.code == 200) {
  945. this.columns = [res.data]
  946. // console.log(this.columns)
  947. } else {
  948. uni.showToast({
  949. icon: 'none',
  950. title: res.msg
  951. })
  952. }
  953. })
  954. },
  955. changeall() {
  956. //更换全部会员
  957. console.log(1)
  958. const param = {
  959. companyId: this.user.companyId,
  960. companyUserId: this.userid,
  961. userId: this.groupid
  962. }
  963. changevipUser(param).then(res => {
  964. if (res.code == 200) {
  965. uni.showToast({
  966. icon: 'none',
  967. title: '更换会员归属成功'
  968. })
  969. } else {
  970. uni.showToast({
  971. icon: 'none',
  972. title: res.msg
  973. })
  974. }
  975. })
  976. },
  977. receiveA(e) {
  978. console.log(e)
  979. this.userid = e.value[0].userId
  980. if (this.isShowSelectAll == true) {
  981. this.groupid = this.selectidAll
  982. this.changeall()
  983. this.showcol = !this.showcol
  984. setTimeout(() => {
  985. this.getfsuserListdata()
  986. }, 200)
  987. } else {
  988. this.changeall()
  989. this.showcol = !this.showcol
  990. this.getfsuserListdata()
  991. }
  992. this.isSelectAll = false
  993. },
  994. getvipListnum() {
  995. getvipNum().then(res => {
  996. if (res.code == 200) {
  997. this.list[0].name = "会员" + '(' + res.data.number + ')'
  998. this.list[1].name = "小黑屋" + '(' + res.data.smallBlackNum + ')'
  999. this.list[2].name = "黑名单" + '(' + res.data.blackNum + ')'
  1000. } else {
  1001. uni.showToast({
  1002. icon: 'none',
  1003. title: res.msg
  1004. })
  1005. }
  1006. })
  1007. },
  1008. getactNav(data) {
  1009. if (data.value == 5) {
  1010. this.itemname = data.name
  1011. this.isShowSelectAll = !this.isShowSelectAll
  1012. } else {
  1013. this.isShowSelectAll = false
  1014. }
  1015. },
  1016. closetagselect() {
  1017. this.showTagSelect = !this.showTagSelect
  1018. },
  1019. suretagchangeAll() {
  1020. if (this.sharetag == 0) {
  1021. this.sharetaglist = this.changetag.filter(item => item.checked).map(v => v.tagId).join(',')
  1022. this.showTagSelect = !this.showTagSelect
  1023. this.zhanshitag = this.changetag.filter(item => item.checked).map(v => v.tag).join(',')
  1024. // console.log(this.sharetaglist)
  1025. const pages = '/pages_course/becomeVIP?companyId=' +this.user.companyId
  1026. +"&projectId=" +this.projectId+ '&companyUserId=' + this.user.userId + '&tagids=' + this.sharetaglist
  1027. this.$emit('childEvent', pages);
  1028. console.log(pages)
  1029. } else {
  1030. //多选改标签确认按钮
  1031. this.showTagSelect = !this.showTagSelect
  1032. if (this.selectidAll.length == 0) {
  1033. uni.showToast({
  1034. icon: 'none',
  1035. title: '未选中用户'
  1036. })
  1037. return
  1038. }
  1039. this.selectidtag = this.changetag.filter(item => item.checked).map(v => v.tagId)
  1040. this.changeLabelmore()
  1041. }
  1042. if (this.showInvite) {
  1043. this.invitePop = true
  1044. }
  1045. },
  1046. singleChangeLable(data) {
  1047. this.showTagSelect = !this.showTagSelect
  1048. this.selectidAll[0] = data
  1049. this.tagchangekeywords = ''
  1050. this.selectidtag = []
  1051. this.sharetag = 1
  1052. this.showInvite = false
  1053. this.getalltagtaglist()
  1054. },
  1055. getalltagtaglist(type) {
  1056. //获取公司标签列表
  1057. const data = {
  1058. pageNum: this.tagpageNums,
  1059. pageSize: this.tagpageSizes,
  1060. keyword: this.tagchangekeywords
  1061. }
  1062. getallTags(data).then(res => {
  1063. if (res.code == 200) {
  1064. const dataList = res.data.list.map(item => {
  1065. return {
  1066. ...item,
  1067. checked: false,
  1068. }
  1069. })
  1070. if (type == 'refresh') {
  1071. this.changetag = dataList
  1072. } else {
  1073. this.changetag = dataList
  1074. }
  1075. if (res.data.isLastPage) {
  1076. this.statusAs = 'nomore'
  1077. } else {
  1078. this.statusAs = 'loadmore'
  1079. }
  1080. this.pagetagA = res.data
  1081. } else {
  1082. uni.showToast({
  1083. icon: 'none',
  1084. title: res.msg
  1085. })
  1086. }
  1087. })
  1088. },
  1089. changesinglevip(data) {
  1090. this.showcol = !this.showcol
  1091. // console.log(data)
  1092. this.groupid[0] = data
  1093. this.getgrouplist()
  1094. },
  1095. changeLabelmore() {
  1096. //改标签选择按钮
  1097. const params = {
  1098. tagIds: this.selectidtag,
  1099. userCompanyUserIds: this.selectidAll
  1100. }
  1101. changeLable(params).then(res => {
  1102. if (res.code == 200) {
  1103. this.userList = []
  1104. this.getfsuserListdata('refresh')
  1105. const timer = setTimeout(function() {
  1106. uni.showToast({
  1107. icon: 'none',
  1108. title: '标签更改成功'
  1109. })
  1110. }, 500);
  1111. this.isSelectAll = false
  1112. this.selectedCount = 0
  1113. } else {
  1114. uni.showToast({
  1115. icon: 'none',
  1116. title: res.msg
  1117. })
  1118. }
  1119. })
  1120. },
  1121. changeOwnership() {
  1122. //更换归属(经销商功能)
  1123. },
  1124. getcompanyTag(type) {
  1125. this.companytag = []
  1126. this.tagkeywords = this.tagkeywords.replace(/,/g, ',')
  1127. const data = {
  1128. pageNum: this.tagpageNum,
  1129. pageSize: this.tagpageSize,
  1130. keyword: this.tagkeywords
  1131. }
  1132. getcompanyTaglist(data).then(res => {
  1133. if (res.code == 200) {
  1134. // this.showCompanytag = res.data.list
  1135. const dataList = res.data.list.map(item => {
  1136. return {
  1137. ...item,
  1138. checked: false,
  1139. }
  1140. })
  1141. if (type == 'refresh') {
  1142. this.companytag = dataList
  1143. } else {
  1144. this.companytag = [...this.companytag, ...dataList]
  1145. }
  1146. if (res.data.isLastPage) {
  1147. this.statusA = 'nomore'
  1148. } else {
  1149. this.statusA = 'loadmore'
  1150. }
  1151. this.pagetag = res.data
  1152. } else {
  1153. uni.showToast({
  1154. icon: 'none',
  1155. title: res.msg
  1156. })
  1157. }
  1158. })
  1159. },
  1160. getfsuserListdata(type) {
  1161. // this.userList=[]
  1162. const param = {
  1163. userId: this.user.userId,
  1164. tabValue: this.currentType,
  1165. registerStartTime: this.startTime, //注册开始
  1166. registerEndTime: this.endTime, //注册结束
  1167. watchCourseType: this.watchStatusIndex,
  1168. missCourseStatus: this.courseStatusIndex,
  1169. projectId: this.selprojectId,
  1170. keyword: this.keyword,
  1171. tagIds: this.idx,
  1172. status: this.currentIsBlack,
  1173. companyUserId: this.salesid,
  1174. continueMissCourseSort: this.searchTypeIndex,
  1175. ...this.pageOptions
  1176. }
  1177. getfsuserList(param).then(res => {
  1178. if (res.code == 200) {
  1179. this.viewload = false
  1180. let dataList = res.data.list.map(item => {
  1181. return {
  1182. ...item,
  1183. checked: false,
  1184. }
  1185. })
  1186. if (type == 'refresh') {
  1187. this.userList = dataList
  1188. } else if (type == 'more') {
  1189. this.userList = dataList
  1190. } else {
  1191. this.userList = [...this.userList, ...dataList]
  1192. }
  1193. if (res.data.isLastPage) {
  1194. this.status = 'nomore'
  1195. } else {
  1196. this.status = 'loadmore'
  1197. }
  1198. } else {
  1199. uni.showToast({
  1200. icon: 'none',
  1201. title: res.msg
  1202. })
  1203. }
  1204. })
  1205. },
  1206. onChange(index) {
  1207. if (index == 5) return
  1208. this.searchbarNav = index
  1209. },
  1210. searchKeyword(value) {
  1211. this.keyword = value
  1212. this.userList = []
  1213. this.pageOptions.pageNum = 1
  1214. this.getfsuserListdata()
  1215. },
  1216. singleChange(data) {
  1217. this.userList = []
  1218. this.selectidAll[0] = data
  1219. this.changeProhibit()
  1220. },
  1221. changeProhibit() {
  1222. //批量禁用选择按钮
  1223. if (this.selectidAll.length < 1) {
  1224. uni.showToast({
  1225. icon: 'none',
  1226. title: '所选列表为空'
  1227. })
  1228. return
  1229. }
  1230. Addblacklist(this.selectidAll).then(res => {
  1231. if (res.code == 200) {
  1232. this.pageOptions.pageNum = 1
  1233. this.getfsuserListdata('refresh')
  1234. // 创建一个在**秒后执行的定时器
  1235. const timer = setTimeout(function() {
  1236. uni.showToast({
  1237. icon: 'none',
  1238. title: '禁用成功'
  1239. })
  1240. }, 200);
  1241. this.getvipListnum()
  1242. // this.isShowSelectAll = false
  1243. this.isSelectAll = false
  1244. } else {
  1245. uni.showToast({
  1246. icon: 'none',
  1247. title: res.msg
  1248. })
  1249. }
  1250. })
  1251. },
  1252. // 全选
  1253. selectAll() {
  1254. // 先设置全选
  1255. this.isSelectAll = !this.isSelectAll
  1256. // 然后设置列表 checked没得this不会报错吗 这是返回新数组
  1257. console.log(this.isSelectAll)
  1258. this.userList = this.userList.map(item => {
  1259. // 每一项的 checked为 全选的状态
  1260. return {
  1261. ...item,
  1262. checked: this.isSelectAll
  1263. }
  1264. })
  1265. this.selectidAll = this.userList.filter(item => item.checked).map(item => item.userCompanyUserId)
  1266. console.log(this.isSelectAll)
  1267. },
  1268. // 单选 /反选
  1269. changeItem(i) {
  1270. let arr = {
  1271. ...this.userList[i],
  1272. checked: !this.userList[i].checked
  1273. }
  1274. this.$set(this.userList, i, arr)
  1275. this.selectidAll = this.userList.filter(item => item.checked).map(item => item.userCompanyUserId)
  1276. console.log(this.selectidAll)
  1277. this.isSelectAll = this.userList.every(item => item.checked)
  1278. if (this.isSelectAll) {
  1279. this.userList = this.userList.map(item => {
  1280. return {
  1281. ...item,
  1282. checked: this.isSelectAll
  1283. }
  1284. })
  1285. }
  1286. this.selectidAll = this.userList.filter(item => item.checked).map(item => item.userCompanyUserId)
  1287. },
  1288. reset() {
  1289. //重置时间选择等筛选
  1290. const type = this.filterData[this.searchbarNav].type
  1291. console.log(this.registerTimeIndex)
  1292. if (type == 'registerTime') {
  1293. this.registerTimeIndex = ''
  1294. this.endTime = ''
  1295. this.startTime = ''
  1296. this.getfsuserListdata('refresh')
  1297. // console.log(this.getfsuserListdata())
  1298. } else if (type == 'watchStatus') {
  1299. this.watchStatusIndex = 0
  1300. this.getfsuserListdata('refresh')
  1301. } else if (type == 'userStatus') {
  1302. this.userStatusIndex = 0
  1303. this.salesid = ''
  1304. this.getfsuserListdata('refresh')
  1305. } else if (type == 'courseStatus') {
  1306. this.courseStatusIndex = 0
  1307. this.getfsuserListdata('refresh')
  1308. } else if (type == 'project') {
  1309. this.selprojectId = ''
  1310. this.projectStatusIndex = 0
  1311. this.getfsuserListdata("refresh")
  1312. } else {
  1313. }
  1314. },
  1315. confirm(e) {
  1316. this.pageOptions.pageNum = 1
  1317. this.userList = []
  1318. const type = this.filterData[this.searchbarNav].type
  1319. const value = this.registerTimeIndex
  1320. if (type == 'registerTime') {
  1321. if (value == 0) {
  1322. this.startTime = ''
  1323. this.endTime = ''
  1324. this.getfsuserListdata('refresh')
  1325. } else if (value == 1) {
  1326. this.startTime = this.todayday + ' 00:00:00'
  1327. this.endTime = this.todayday + ' 23:59:59'
  1328. this.getfsuserListdata('refresh')
  1329. } else if (value == 2) {
  1330. let yesterday = new Date();
  1331. yesterday.setDate(yesterday.getDate() - 1);
  1332. this.startTime = uni.$u.timeFormat(yesterday, 'yyyy-mm-dd') + ' 00:00:00'
  1333. this.endTime = uni.$u.timeFormat(yesterday, 'yyyy-mm-dd') + ' 23:59:59'
  1334. this.getfsuserListdata('refresh')
  1335. } else if (value == 3) {
  1336. let yesterday = new Date();
  1337. yesterday.setDate(yesterday.getDate() - 6);
  1338. this.startTime = uni.$u.timeFormat(yesterday, 'yyyy-mm-dd') + ' 00:00:00'
  1339. this.endTime = this.todayday + ' 23:59:59'
  1340. this.getfsuserListdata('refresh')
  1341. } else {
  1342. this.getfsuserListdata('refresh')
  1343. }
  1344. } else if (type == 'watchStatus') {
  1345. // this.watchStatusIndex=value
  1346. this.getfsuserListdata()
  1347. // console.log(this.filterData)
  1348. } else if (type == 'userStatus') {
  1349. if (this.userStatusIndex == 0) {
  1350. this.salesid = ''
  1351. this.getfsuserListdata('refresh')
  1352. } else {
  1353. this.getfsuserListdata('refresh')
  1354. }
  1355. // console.log(this.userStatusIndex)
  1356. } else if (type == 'courseStatus') {
  1357. this.getfsuserListdata('refresh')
  1358. console.log(this.courseStatusIndex)
  1359. } else if (type == 'project') {
  1360. if (this.projectStatusIndex == 0) {
  1361. this.selprojectId = ''
  1362. this.getfsuserListdata('refresh')
  1363. } else {
  1364. this.getfsuserListdata('refresh')
  1365. }
  1366. console.log(this.projectStatusIndex)
  1367. }
  1368. // this.mescroll.resetUpScroll()
  1369. },
  1370. handleParamItem(type, index, id) {
  1371. if (type == 'registerTime') {
  1372. this.registerTimeIndex = index
  1373. } else if (type == 'watchStatus') {
  1374. this.watchStatusIndex = index
  1375. // console.log('watchStatus',index)
  1376. } else if (type == 'userStatus') {
  1377. this.userStatusIndex = index
  1378. this.salesid = id
  1379. console.log(this.salesid)
  1380. } else if (type == 'courseStatus') {
  1381. this.courseStatusIndex = index
  1382. } else if (type == 'project') {
  1383. this.selprojectId = id
  1384. this.projectStatusIndex = index
  1385. } else {
  1386. this.ispopshow = false
  1387. }
  1388. },
  1389. sectionChange(index) {
  1390. this.current = index;
  1391. this.currentType = 0
  1392. this.startTime = '' //注册开始
  1393. this.endTime = '' //注册结束
  1394. this.watchStatusIndex = 0
  1395. this.salesid = ''
  1396. this.courseStatusIndex = 0
  1397. this.selprojectId = ''
  1398. this.keyword = ''
  1399. this.idx = []
  1400. this.pageOptions.pageNum = 1
  1401. this.isShowSelectAll = false
  1402. this.userList = []
  1403. if (index == 0) {
  1404. // 0小黑屋 1正常 2拉黑
  1405. this.currentIsBlack = 1
  1406. this.getfsuserListdata("refresh")
  1407. } else if (index == 1) {
  1408. this.currentIsBlack = 0
  1409. this.getfsuserListdata("refresh")
  1410. } else {
  1411. this.currentIsBlack = 2
  1412. this.getfsuserListdata("refresh")
  1413. }
  1414. this.isSelectAll=false
  1415. this.getvipListnum()
  1416. },
  1417. clickTypeTab(e) {
  1418. this.currentType = e.index
  1419. this.userList = []
  1420. // 在这里更新
  1421. this.pageOptions.pageNum = 1
  1422. this.getfsuserListdata()
  1423. },
  1424. bindPickerChange(e) {
  1425. console.log('picker发送选择改变,携带值为', e.detail.value)
  1426. this.userList = []
  1427. this.searchTypeIndex = e.detail.value
  1428. this.getfsuserListdata()
  1429. },
  1430. openPop(type) {
  1431. this.popTitle = type == 'search' ? '搜索选择' : type == 'tag' ? '标签筛选' : ''
  1432. this.typeIndex = this.queryParam.typeIndex
  1433. this.showPop = true
  1434. if (type == 'tag') {
  1435. this.getcompanyTag()
  1436. }
  1437. },
  1438. closePop() {
  1439. this.showPop = false
  1440. },
  1441. resetPop(i) {
  1442. this.idx = []
  1443. this.tagkeywords = ''
  1444. this.tagpageNum = 1
  1445. this.showCompanytag = []
  1446. this.companytag.forEach(tag => {
  1447. tag.checked = false; // 将所有标签的show属性重置为true
  1448. });
  1449. this.showPop = false
  1450. this.$nextTick(() => {
  1451. this.getcompanyTag()
  1452. this.getfsuserListdata()
  1453. })
  1454. },
  1455. closeCalendar() {
  1456. this.showCalendar = false
  1457. },
  1458. confirmCalendar(e) {
  1459. // this.startTime = e[0]
  1460. // this.endTime = e[e.length-1]
  1461. this.showCalendar = false
  1462. this.queryParam.startTime = e.range.after
  1463. this.queryParam.endTime = e.range.before
  1464. this.endTime = e.range.before + ' 23:59:59'
  1465. this.startTime = e.range.after + ' 00:00:00'
  1466. console.log(e)
  1467. // this.getCount()
  1468. },
  1469. bindTypeChange(i) {
  1470. this.typeIndex = i
  1471. },
  1472. confirmPop() {
  1473. this.queryParam.typeIndex = this.typeIndex
  1474. this.showPop = false
  1475. this.showCompanytag = this.companytag.filter(item => item.checked)
  1476. this.idx = this.showCompanytag.map(v => v.tagId)
  1477. //filtter(过滤) 筛选所有checked==true的 然后map返回每一项的id
  1478. if (this.idx.length == 0) {
  1479. this.showCompanytag = this.companytag
  1480. }
  1481. this.$nextTick(() => {
  1482. this.getfsuserListdata("refresh")
  1483. })
  1484. },
  1485. chooseTag(i) {
  1486. this.companytag[i].checked = !this.companytag[i].checked
  1487. },
  1488. choosechangeTag(i) {
  1489. this.changetag[i].checked = !this.changetag[i].checked
  1490. },
  1491. vipInvite() {
  1492. if (!this.vipInviteshow) {
  1493. // this.invitePop = true
  1494. // this.getlink('preload')
  1495. // this.getjssdklist()
  1496. this.getprojectlists()
  1497. // this.invitePop = true
  1498. this.projectId=''
  1499. this.projectbox=true
  1500. this.sharetaglist = null
  1501. } else {
  1502. this.vipInviteshow = false
  1503. }
  1504. },
  1505. showinimg() {
  1506. this.vipInviteshow = true
  1507. },
  1508. copyLink() {
  1509. this.setTimeShow = true
  1510. },
  1511. confirmTime() {
  1512. this.setTimeShow = false
  1513. this.showShare = false
  1514. console.log(this.showInvite)
  1515. this.getshareLink()
  1516. },
  1517. getshareimg() {
  1518. //生成海报
  1519. this.getlink()
  1520. this.codeLink = ''
  1521. uni.showLoading({
  1522. title: '正在生成中...'
  1523. })
  1524. const url = window.location.href.split('#')[0]
  1525. const param = {
  1526. companyId: this.user.companyId,
  1527. companyUserId: this.user.userId,
  1528. realLink: url + '#/pages/user/users/becomeVIP' + '?companyId=' +
  1529. this.user.companyId + '&companyUserId=' + this.user.userId + '&tagids=' + this.sharetaglist,
  1530. tagIds: this.sharetaglist,
  1531. }
  1532. becomeVipuserImg(param).then(res => {
  1533. if (res.code == 200) {
  1534. this.codeLink = res.posterImage
  1535. console.log(res)
  1536. } else {
  1537. uni.showToast({
  1538. title: res.msg,
  1539. icon: 'none',
  1540. duration: 2000
  1541. });
  1542. }
  1543. })
  1544. },
  1545. getlink(type) {
  1546. //生成链接
  1547. const param = {
  1548. companyId: this.user.companyId,
  1549. companyUserId: this.user.userId,
  1550. tagids: this.sharetaglist,
  1551. limitTime: this.time
  1552. }
  1553. const url = window.location.href.split('#')[0]
  1554. // console.log(url)
  1555. this.copyLinks = url + '#/pages/user/users/becomeVIP' + '?companyId=' +
  1556. this.user.companyId + '&companyUserId=' + this.user.userId + '&tagids=' + this.sharetaglist
  1557. },
  1558. getshareLink() {
  1559. //生成链接
  1560. this.copyLinks = []
  1561. const param = {
  1562. code: '',
  1563. companyId: this.user.companyId,
  1564. companyUserId: this.user.userId,
  1565. tagids: this.sharetaglist,
  1566. limitTime: this.time
  1567. }
  1568. const url = window.location.href.split('#')[0]
  1569. console.log(url)
  1570. this.copyLinks = url + '#/pages/user/users/becomeVIP' + '?companyId=' +
  1571. this.user.companyId + '&companyUserId=' + this.user.userId + '&tagids=' + this.sharetaglist
  1572. console.log(this.copyLinks)
  1573. setTimeout(() => {
  1574. uni.setClipboardData({
  1575. data: String(this.copyLinks),
  1576. success: () => {
  1577. uni.showToast({
  1578. title: '复制成功',
  1579. icon: 'none',
  1580. duration: 2000
  1581. });
  1582. setTimeout(() => {
  1583. this.invitePop = false
  1584. }, 200)
  1585. },
  1586. })
  1587. }, 100)
  1588. },
  1589. mescrollInit(mescroll) {
  1590. this.mescroll = mescroll;
  1591. },
  1592. /*下拉刷新的回调 */
  1593. downCallback(mescroll) {
  1594. mescroll.resetUpScroll()
  1595. },
  1596. upCallback(page) {
  1597. //联网加载数据
  1598. var that = this;
  1599. var data = {
  1600. courseId: this.courseId,
  1601. status: '',
  1602. pageNum: page.num,
  1603. pageSize: page.size
  1604. };
  1605. uni.showLoading({
  1606. title: "加载中..."
  1607. })
  1608. },
  1609. }
  1610. }
  1611. </script>
  1612. <style lang="scss" scoped>
  1613. .probg{
  1614. color: #666;
  1615. }
  1616. .probgsel{
  1617. background-color: #1677ff;
  1618. color: #fff;
  1619. border: none;
  1620. }
  1621. .quedingpro{
  1622. background-color: #1677ff;
  1623. color: #fff;
  1624. border-radius: 80rpx;
  1625. height: 80rpx;
  1626. line-height: 80rpx;
  1627. width: 60%;
  1628. margin: 0 auto;
  1629. margin-top: 40rpx;
  1630. text-align: center;
  1631. }
  1632. .card-share {
  1633. position: relative;
  1634. }
  1635. .share {
  1636. display: inline-block;
  1637. position: absolute;
  1638. bottom: 0;
  1639. left: 0;
  1640. width: 100%;
  1641. height: 50%;
  1642. opacity: 0;
  1643. }
  1644. .imgshe {
  1645. display: flex;
  1646. flex-direction: row-reverse
  1647. }
  1648. .point-box {
  1649. height: 100%;
  1650. width: 100%;
  1651. .xu-box {
  1652. border: #f5f5f5 4rpx dashed;
  1653. padding: 20rpx 20rpx;
  1654. }
  1655. }
  1656. .codeimg {
  1657. position: absolute;
  1658. z-index: 9999;
  1659. left: 40rpx;
  1660. top: 40rpx;
  1661. }
  1662. #codeurl {
  1663. position: relative;
  1664. }
  1665. .checked-bg {
  1666. border: 1px solid #1677ff !important;
  1667. color: #1677ff !important;
  1668. background-color: #e7f1fe !important;
  1669. }
  1670. .changetagbtn {
  1671. width: 45%;
  1672. height: 80rpx;
  1673. border-radius: 50rpx;
  1674. text-align: center;
  1675. line-height: 80rpx;
  1676. }
  1677. ::v-deep {
  1678. .foot-select {
  1679. width: 100%;
  1680. padding: 20rpx 20rpx;
  1681. padding-bottom: 60rpx;
  1682. z-index: 10000 !important;
  1683. position: fixed;
  1684. bottom: 0;
  1685. margin-left: -24rpx !important;
  1686. }
  1687. }
  1688. ::v-deep {
  1689. .model .u-fade-enter-active {
  1690. z-index: 10075 !important;
  1691. }
  1692. }
  1693. ::v-deep {
  1694. .uni-calendar__mask {
  1695. z-index: 11000 !important;
  1696. }
  1697. .uni-calendar__content {
  1698. z-index: 12000 !important;
  1699. }
  1700. }
  1701. .container {
  1702. font-family: PingFang SC, PingFang SC;
  1703. font-weight: 400;
  1704. font-size: 14px;
  1705. color: #222222;
  1706. height: 100%;
  1707. overflow: hidden;
  1708. }
  1709. .boxnav {
  1710. flex-wrap: wrap;
  1711. padding: 0 0 0 10px;
  1712. &-item {
  1713. width: 50%;
  1714. overflow: hidden;
  1715. }
  1716. &-item-info {
  1717. border: 1px solid #f5f5f5;
  1718. text-align: center;
  1719. color: #222;
  1720. background-color: #f5f5f5;
  1721. border-radius: 3px;
  1722. padding: 5px;
  1723. margin: 0 10px 10px 0;
  1724. }
  1725. &-active {
  1726. border: 1px solid #1677ff !important;
  1727. color: #1677ff !important;
  1728. background-color: #e7f1fe !important;
  1729. }
  1730. }
  1731. .calendar-day {
  1732. font-family: PingFang SC, PingFang SC;
  1733. font-weight: 400;
  1734. font-size: 12px;
  1735. color: #999;
  1736. flex: 1;
  1737. min-height: 30px;
  1738. background-color: #f5f5f5;
  1739. border-radius: 4px;
  1740. margin: 0 10px 10px 0;
  1741. }
  1742. .setTimebox {
  1743. font-family: PingFang SC, PingFang SC;
  1744. font-weight: 400;
  1745. font-size: 14px;
  1746. width: fit-content;
  1747. height: fit-content;
  1748. }
  1749. .timetip {
  1750. font-family: PingFang SC, PingFang SC;
  1751. font-weight: 400;
  1752. font-size: 14px;
  1753. color: #2979ff;
  1754. text-align: center;
  1755. margin-bottom: 5px;
  1756. }
  1757. .popbox {
  1758. background-color: #fff;
  1759. border-radius: 12px;
  1760. font-family: PingFang SC, PingFang SC;
  1761. font-weight: 400;
  1762. font-size: 14px;
  1763. color: #333;
  1764. padding-bottom: 120rpx;
  1765. &-head {
  1766. padding: 15px;
  1767. font-weight: bold;
  1768. font-size: 15px;
  1769. text-align: center;
  1770. position: relative;
  1771. }
  1772. .close-circle {
  1773. position: absolute;
  1774. right: 10px;
  1775. top: 50%;
  1776. transform: translateY(-50%);
  1777. }
  1778. &-body {
  1779. padding: 10px 10px;
  1780. }
  1781. .radiobox {
  1782. &-item {
  1783. padding: 10px 0;
  1784. border-bottom: 1px solid #f5f5f5;
  1785. &:last-child {
  1786. border-bottom: none;
  1787. }
  1788. }
  1789. }
  1790. &-footer {
  1791. padding: 15px 0;
  1792. }
  1793. &-footer-btn {
  1794. flex: 1;
  1795. height: 44px;
  1796. line-height: 44px;
  1797. margin: 0 10px;
  1798. border-radius: 50px;
  1799. border: none;
  1800. font-family: PingFang SC, PingFang SC;
  1801. font-weight: 400;
  1802. font-size: 14px;
  1803. color: #333;
  1804. &::after {
  1805. border: none;
  1806. }
  1807. }
  1808. .con-btn {
  1809. background-color: #1677ff;
  1810. color: #fff;
  1811. }
  1812. .choosetitle {
  1813. font-family: PingFang SC, PingFang SC;
  1814. font-weight: 400;
  1815. font-size: 15px;
  1816. color: #333;
  1817. }
  1818. .invitetip {
  1819. margin-top: 10px;
  1820. background-color: #ebf5fb;
  1821. color: #1677ff;
  1822. padding: 5px 10px;
  1823. border-radius: 5px;
  1824. }
  1825. .sharePop-item {
  1826. padding: 0 10px;
  1827. box-sizing: border-box;
  1828. font-family: PingFang SC, PingFang SC;
  1829. font-weight: 400;
  1830. font-size: 14px;
  1831. display: inline-flex !important;
  1832. image {
  1833. height: 48px;
  1834. width: 48px;
  1835. margin-bottom: 10px;
  1836. }
  1837. }
  1838. }
  1839. .headbox {
  1840. background-color: #fff;
  1841. .subsection {
  1842. height: 45px;
  1843. padding: 4px;
  1844. }
  1845. .participate-order {
  1846. font-size: 12px;
  1847. image {
  1848. width: 15px;
  1849. height: 15px;
  1850. }
  1851. }
  1852. }
  1853. .tag-active {
  1854. background-color: #ffeceb !important;
  1855. color: #f93e3e !important;
  1856. border: 1px solid #f93e3e !important;
  1857. }
  1858. .tagbox {
  1859. padding-top: 10rpx;
  1860. font-size: 12px;
  1861. color: #1677ff;
  1862. &-list {
  1863. margin: 0 0 -6px 6px;
  1864. flex-wrap: wrap;
  1865. }
  1866. &-item {
  1867. height: 26px;
  1868. padding: 0 8px;
  1869. margin: 0 6px 6px 0;
  1870. border-radius: 4px;
  1871. background-color: #f5f5f5;
  1872. color: #999;
  1873. border: 1px solid #f5f5f5;
  1874. box-sizing: border-box;
  1875. font-size: 12px;
  1876. }
  1877. }
  1878. .invite-member {
  1879. height: 55px;
  1880. width: 50px;
  1881. position: fixed;
  1882. bottom: 110px;
  1883. right: 10px;
  1884. cursor: pointer;
  1885. .intimg {
  1886. width: 50px;
  1887. height: 55px;
  1888. }
  1889. }
  1890. .invite-members {
  1891. right: -68rpx;
  1892. }
  1893. .falseimg {
  1894. position: absolute;
  1895. width: 30rpx;
  1896. height: 30rpx;
  1897. top: 0rpx;
  1898. right: -8rpx;
  1899. }
  1900. .userlist {
  1901. padding: 24rpx;
  1902. }
  1903. </style>