users.vue 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681
  1. <template>
  2. <view class="column" style="height: calc(100% - 20rpx) ;">
  3. <view class="top " >
  4. <u-search placeholder="输入姓名/昵称搜索" bgColor='#F8F8FC'
  5. v-model="searchContent" @custom="search()" @search="search()"></u-search>
  6. <view class="justify-around fs28">
  7. <view v-for="(item,index) in tabs" :key="index" :class="act==index?'active':'notact'"
  8. @click="tabact(index)" class="flex-1 center ptb20">{{item}}</view>
  9. <view v-show="act==1" @click="selectact=!selectact" :class="selectact?'active':''"
  10. class="flex-1 center ptb20">批量</view>
  11. </view>
  12. </view>
  13. <view v-if='list.length<1' class="center mt60" style="color: #666;">暂无用户</view>
  14. <scroll-view scroll-y class="indexes flex-1 pb60" :scroll-into-view="'indexes-'+ listCurID" :style="[{height:'calc(100vh - 300rpx)'}]"
  15. :scroll-with-animation="true" :enable-back-to-top="true" >
  16. <view v-for="(item,index) in list" :key="index">
  17. <view :class="'indexItem-' + item.firstLetter" :id="'indexes-' + item.firstLetter" :data-index="item.firstLetter" @click.passive.stop>
  18. <view class="zm">{{item.firstLetter}}</view>
  19. <view class="user-list">
  20. <view class="user-item justify-start" v-for="(subitem,indexs) in item.list"
  21. @click="navTo(subitem)" :key="indexs">
  22. <u-checkbox-group @change="changeitem(subitem.userId)" v-if="selectact">
  23. <u-checkbox :checked="subitem.checked" shape="circle" activeColor="#1773ff" :name="subitem.userId"
  24. labelColor="#1773ff" />
  25. </u-checkbox-group>
  26. <view class="bgf p20 radius16 flex-1">
  27. <view class="justify-between align-center">
  28. <view class="justify-start align-center">
  29. <view class="avatar" >
  30. <image class="img" :src="subitem.avatar?(baseUrl+subitem.avatar):avatar" mode="aspectFill"></image>
  31. </view>
  32. <view class="content">
  33. <view class="name">
  34. {{subitem.nickName}}
  35. </view>
  36. <view class="dept justify-start align-center">
  37. <u-icon name="phone"></u-icon><view>{{subitem.phoneNumber}}</view> </view>
  38. <view class="dept">注册时间:{{subitem.registerTime}}</view>
  39. </view>
  40. </view>
  41. <view class="base-color fs24" v-if="subitem.status==0">未禁用</view>
  42. <view class="base-color-red fs24" v-else>禁用</view>
  43. </view>
  44. <view class="justify-between align-center mt10" @click.passive.stop>
  45. <view>
  46. <text class="base-color-9 ml10 fs24">部门:{{subitem.deptName?subitem.deptName:''}}</text>
  47. <view class="fs24 mt10 justify-start align-center" style="color: #115296;">
  48. <text class="base-color-9 ml10">岗位:{{subitem.postname?subitem.postname:''}}</text>
  49. <text class="base-color-9 ml20">角色:{{subitem.rolesname?subitem.rolesname:''}}</text>
  50. </view>
  51. </view>
  52. <!-- <view class="fs24 base-color-red mr10 bor-red
  53. base-bg-false plr20 radius40 ptb4">已禁用</view> -->
  54. <view class="fs24 base-color mr10 bor-blue h52 lh50
  55. base-bg-sure plr20 radius40 " style="width: fit-content;" v-if="subitem.isAudit==1">已审核</view>
  56. <view class="fs24 base-color-red mr10 bor-red h52 lh50
  57. base-bg-false plr20 radius40 " style="width: fit-content;z-index: 999;" @click="getidshen(subitem.userId)"
  58. v-else-if="subitem.isAudit==0&&!selectact">待审核</view>
  59. </view>
  60. </view>
  61. </view>
  62. </view>
  63. </view>
  64. </view>
  65. </scroll-view>
  66. <view class="indexBar" :style="[{height:'calc(100vh - 88rpx)'}]">
  67. <view class="indexBar-box" @touchstart="tStart" @touchend="tEnd" @touchmove.stop="tMove">
  68. <view class="indexBar-item" v-for="(item,index) in list" :key="index" :id="index"
  69. @touchstart="getCur" @touchend="setCur"> {{item.firstLetter}}</view>
  70. </view>
  71. </view>
  72. <view class="justify-between base-bg-f foot-select " v-if="selectact">
  73. <view class="align-center justify-between " v-if="selectact">
  74. <u-checkbox-group @change="selectAll">
  75. <u-checkbox :checked="isSelectAll" shape="circle" activeColor="#1773ff" :name="true"
  76. label="全选" labelColor="#333" />
  77. <text class="fs24 base-color-9 ml12">已选{{ selectedUsers.length }}个</text>
  78. <!-- {{selectedCount}} -->
  79. </u-checkbox-group>
  80. </view>
  81. <view class="justify-center ">
  82. <button class="base-bg-f radius100 base-color-red h62 ml10 fs28 lh60"
  83. style="border: #ef4c50 solid 2rpx;"
  84. @click="batchApprove">通过审核</button>
  85. </view>
  86. </view>
  87. <!--选择显示-->
  88. <view v-show="!hidden" class="indexToast">
  89. {{listCur}}
  90. </view>
  91. <u-popup :show="showcommpany" mode="center" round="16">
  92. <view class="bgf w600 h600 p40 radius16" style="max-height: 600rpx;">
  93. <view class="center bold fs32">设置销售员信息</view>
  94. <view class="justify-center align-center mtb30">
  95. <view class="mr40 fs32 base-color-6">部门:</view>
  96. <u-input
  97. placeholder="选择部门"
  98. border="surround"
  99. v-model="valueb"
  100. @focus="showbumen()"
  101. ></u-input>
  102. </view>
  103. <view class="justify-center align-center mtb30">
  104. <view class="mr40 fs32 base-color-6">岗位:</view>
  105. <view class="flex-1 u-border p16 radius8" @click="showgang=!showgang">
  106. <view class="fs28" style="color: #000;">{{valuea}}</view>
  107. <view class="fs28" style="color: #c0c4cc;" v-if="valueid.length==0">选择岗位</view>
  108. </view>
  109. </view>
  110. <view class="justify-center align-center mtb30">
  111. <view class="mr40 fs32 base-color-6">角色:</view>
  112. <view class="flex-1 u-border p16 radius8" @click="showjuese=!showjuese">
  113. <view class="fs28" style="color: #000;">{{valuej}}</view>
  114. <view class="fs28" style="color: #c0c4cc;" v-if="valuej.length==0">选择角色</view>
  115. </view>
  116. </view>
  117. <view class="justify-around align-center mt50 ">
  118. <view class="quxiao" @click="showcommpany=!showcommpany">取消</view>
  119. <view class="queren" @click="confirmbchange">通过审核</view>
  120. </view>
  121. <tki-tree ref="tkitree" :range="columnb" confirmColor="#4e8af7" :selectParent="true" @confirm="confirmb"/>
  122. <u-popup :show="showgang" @close="showgang=!showgang" :closeOnClickOverlay='true'>
  123. <view class="center bold fs36 pt40">请选择岗位</view>
  124. <view class="justify-start align-center warpbox mt40 p20">
  125. <view v-for="(item,index) in postlist" :key="item.postId" class="mlr10 mt10">
  126. <u-tag :text="item.postName" :plain="!item.checked" :name="index"
  127. @click="choosechangeTag"></u-tag>
  128. </view>
  129. </view>
  130. <view class="justify-around align-center mt50 ">
  131. <view class="quxiao" @click="showgang=!showgang">取消</view>
  132. <view class="queren" @click="postconfirm">确定</view>
  133. </view>
  134. </u-popup>
  135. <u-popup :show="showjuese" @close="showjuese=!showjuese" :closeOnClickOverlay='true'>
  136. <view class="center bold fs36 pt40">请选择角色</view>
  137. <view class="justify-start align-center warpbox mt40 p20">
  138. <view v-for="(item,index) in rolelist" :key="item.roleId" class="mlr10 mt10">
  139. <u-tag :text="item.roleName" :plain="!item.checked" :name="index"
  140. @click="choosechangerole"></u-tag>
  141. </view>
  142. </view>
  143. <view class="justify-around align-center mt50 ">
  144. <view class="quxiao" @click="showjuese=!showjuese">取消</view>
  145. <view class="queren" @click="roleconfirm">确定</view>
  146. </view>
  147. </u-popup>
  148. </view>
  149. </u-popup>
  150. <u-modal :show="showuser" title="提示" content='是否通过销售审核' :showCancelButton='true'
  151. @confirm='subsalesaudits' @cancel="showuser=!showuser"></u-modal>
  152. <u-loading-page :loading="viewload" iconSize="32" loadingColor="#3c9cff" fontSize="20"
  153. :loading-text="loadingtext" ></u-loading-page>
  154. </view>
  155. </template>
  156. <script>
  157. import {getAllUsers,querydepartment,querypost,modifysaleNews,queryrole} from '@/api/user.js';
  158. import {subsalesaudit} from '@/api/courseManage.js';
  159. import tkiTree from "@/components/tki-tree/tki-tree.vue"
  160. export default {
  161. components: {tkiTree},
  162. data() {
  163. return {
  164. viewload:true,
  165. loadingtext:"数据加载中...",
  166. baseUrl:uni.getStorageSync('requestPath'),
  167. avatar:this.$store.state.imgpath+"/app/images/default.png",
  168. CustomBar: 0,
  169. hidden: true,
  170. listCurID: '',
  171. list: [],
  172. listCur: '',
  173. searchContent:"",
  174. tabs:['已审核','未审核'],
  175. act:0,
  176. selectact:false,
  177. isSelectAll:false,
  178. selectedUsers:[],
  179. isAudits:1,
  180. ids:'',
  181. showcommpany:false,
  182. columnb: [
  183. ['11', '22', '33']
  184. ],
  185. postlist:{},
  186. showgang:false,
  187. showjuese:false,
  188. valuea:'',
  189. valueb:'',
  190. actpost:[],
  191. valueid:'',
  192. valueidbu:'',
  193. xuanid:[],
  194. valuej:'',
  195. rolelist:[],
  196. roleid:[],
  197. seluserids:[],
  198. showuser:false
  199. }
  200. },
  201. onLoad() {
  202. this.getUser();
  203. this.getdepartment()
  204. this.getpostlist()
  205. this.getrolelist()
  206. },
  207. onReady() {
  208. let that = this;
  209. uni.createSelectorQuery().select('.indexBar-box').boundingClientRect(function(res) {
  210. that.boxTop = res.top
  211. }).exec();
  212. uni.createSelectorQuery().select('.indexes').boundingClientRect(function(res) {
  213. that.barTop = res.top
  214. }).exec()
  215. },
  216. methods: {
  217. roleconfirm(){
  218. this.roleid = this.rolelist.filter(item => item.checked).map(v => v.roleId).join(",")
  219. this.valuej = this.rolelist.filter(item => item.checked).map(v => v.roleName).join(',')
  220. this.showjuese=!this.showjuese
  221. },
  222. choosechangerole(i){
  223. this.rolelist[i].checked = !this.rolelist[i].checked
  224. },
  225. showbumen(){
  226. this.$refs.tkitree._show();
  227. },
  228. confirmbchange(){
  229. console.log(this.valueb.length,this.xuanid)
  230. if(this.valueb.length==0){
  231. uni.showToast({
  232. icon: 'none',
  233. title: '请选择部门'
  234. })
  235. return
  236. }
  237. if(this.xuanid.length==0){
  238. uni.showToast({
  239. icon: 'none',
  240. title: '请选择部门'
  241. })
  242. return
  243. }
  244. if(this.valuej.length==0){
  245. uni.showToast({
  246. icon: 'none',
  247. title: '请选择角色'
  248. })
  249. return
  250. }
  251. const data={
  252. companyUserIds:this.ids,
  253. deptId:this.valueidbu,
  254. postIds:this.valueid,
  255. roleIds:this.roleid
  256. }
  257. modifysaleNews(data).then(res=>{
  258. console.log('设置信息',res)
  259. if(res.code==200){
  260. // uni.showToast({
  261. // icon: 'none',
  262. // title: '成功'
  263. // })
  264. this.xuanid=[]
  265. setTimeout(()=>{
  266. this.subsalesaudits()
  267. },100)
  268. }else{
  269. uni.showToast({
  270. title: res.msg,
  271. icon: 'none',
  272. });
  273. }
  274. })
  275. },
  276. getallList(){
  277. this.valueidbu=[]
  278. this.valueid=[]
  279. this.valueb=''
  280. this.valuea=''
  281. this.ids=''
  282. },
  283. postconfirm(){
  284. this.xuanid=this.postlist.filter(item => item.checked).map(v => v.postId)
  285. this.valueid = this.postlist.filter(item => item.checked).map(v => v.postId).join(",")
  286. this.valuea = this.postlist.filter(item => item.checked).map(v => v.postName).join(',')
  287. this.showgang=!this.showgang
  288. },
  289. choosechangeTag(i) {
  290. console.log(this.postlist[i].checked )
  291. this.postlist[i].checked = !this.postlist[i].checked
  292. },
  293. getdepartment(){
  294. querydepartment().then(res=>{
  295. if(res.code==200){
  296. this.columnb=res.data
  297. // console.log('部门',res)
  298. }
  299. })
  300. },
  301. getpostlist(){
  302. querypost().then(res=>{
  303. if(res.code==200){
  304. this.postlist = res.data.map(item => {
  305. return {
  306. ...item,
  307. checked: false,
  308. }
  309. })
  310. console.log('岗位',res)
  311. }
  312. })
  313. },
  314. getrolelist(){
  315. queryrole().then(res=>{
  316. if(res.code==200){
  317. this.rolelist = res.data.map(item => {
  318. return {
  319. ...item,
  320. checked: false,
  321. }
  322. })
  323. // console.log('岗位',res)
  324. }
  325. })
  326. },
  327. confirma(e){
  328. this.showgang = !this.showgang
  329. this.valuea=e.value[0]
  330. console.log(e)
  331. },
  332. confirmb(e){
  333. this.valueb=e[0].label
  334. this.valueidbu=e[0].id
  335. console.log(e[0])
  336. },
  337. getidshen(id){
  338. console.log(id)
  339. this.getallList()
  340. this.ids=id
  341. this.seluserids[0]=id
  342. this.showuser=!this.showuser
  343. // this.showcommpany=!this.showcommpany
  344. },
  345. batchApprove(){
  346. if (this.selectedUsers.length === 0) {
  347. uni.showToast({
  348. title: '请先选择用户',
  349. icon: 'none',
  350. });
  351. return;
  352. }
  353. this.ids=this.selectedUsers.join(',')
  354. this.seluserids=this.selectedUsers
  355. // this.showcommpany=!this.showcommpany
  356. this.showuser=!this.showuser
  357. // this.subsalesaudits()
  358. // this.confirmbchange()
  359. },
  360. subsalesaudits(){
  361. const data={
  362. userIds:this.seluserids
  363. }
  364. subsalesaudit(this.seluserids).then(res=>{
  365. console.log("subsalesaudits=====",res)
  366. if(res.code==200){
  367. uni.showToast({
  368. title: "用户通过审核,成为销售!",
  369. icon: 'none',
  370. });
  371. this.valueidbu=[]
  372. this.valueid=[]
  373. this.valueb=[]
  374. this.valuea=''
  375. this.valuej=''
  376. this.roleid=[]
  377. this.ids=''
  378. this.showuser=!this.showuser
  379. this.seluserids=[]
  380. // this.showcommpany=!this.showcommpany
  381. this.getUser()
  382. }else{
  383. uni.showToast({
  384. title: res.msg,
  385. icon: 'none',
  386. });
  387. }
  388. })
  389. },
  390. // 全选
  391. selectAll() {
  392. this.isSelectAll = !this.isSelectAll;
  393. this.selectedUsers = []; // 清空已选列表
  394. // 遍历所有用户项,更新 checked 状态
  395. this.list = this.list.map(group => {
  396. group.list = group.list.map(user => {
  397. if (this.isSelectAll) {
  398. this.selectedUsers.push(user.userId); // 添加用户ID到选中列表
  399. }
  400. return {
  401. ...user,
  402. checked: this.isSelectAll,
  403. };
  404. });
  405. return group;
  406. });
  407. // 如果取消全选,清空 selectedUsers
  408. if (!this.isSelectAll) {
  409. this.selectedUsers = [];
  410. }
  411. },
  412. // 单选 /反选
  413. changeitem(userId) {
  414. const index = this.selectedUsers.indexOf(userId);
  415. if (index === -1) {
  416. this.selectedUsers.push(userId); // 选中
  417. } else {
  418. this.selectedUsers.splice(index, 1); // 取消选中
  419. }
  420. // 更新全选状态
  421. this.isSelectAll = this.selectedUsers.length === this.getTotalUsers();
  422. },
  423. // 计算总用户数
  424. getTotalUsers() {
  425. return this.list.reduce((total, group) => total + group.list.length, 0);
  426. },
  427. tabact(index){
  428. this.list=[]
  429. this.act=index
  430. if(this.act==0){
  431. this.selectact=false
  432. this.isAudits=1
  433. this.getUser();
  434. }else if(this.act==1){
  435. this.isAudits=0
  436. this.getUser();
  437. }
  438. },
  439. getUser(){
  440. var data = {
  441. searchKey:this.searchContent,
  442. isAudit:this.isAudits
  443. };
  444. var that=this;
  445. getAllUsers(data).then(
  446. res => {
  447. if(res.code==200){
  448. this.viewload=false
  449. that.list=res.users;
  450. this.list=this.list.map(group=>{
  451. group.list = group.list.map(user => {
  452. return {
  453. ...user,
  454. checked: this.isSelectAll,
  455. postname:user.post.map(item=>item.postName).join(","),
  456. rolesname:user.roles.map(item=>item.roleName).join(",")
  457. };
  458. })
  459. return group;
  460. })
  461. }
  462. },
  463. rej => {}
  464. );
  465. },
  466. //获取文字信息
  467. getCur(e) {
  468. this.hidden = false;
  469. this.listCur = this.list[e.target.id].firstLetter;
  470. },
  471. setCur(e) {
  472. this.hidden = true;
  473. this.listCur = this.listCur
  474. },
  475. //滑动选择Item
  476. tMove(e) {
  477. let y = e.touches[0].clientY,
  478. offsettop = this.boxTop,
  479. that = this;
  480. //判断选择区域,只有在选择区才会生效
  481. if (y > offsettop) {
  482. let num = parseInt((y - offsettop) / 20);
  483. console.log(num);
  484. if(num<that.list.length){
  485. this.listCur = that.list[num].firstLetter
  486. }
  487. };
  488. },
  489. //触发全部开始选择
  490. tStart() {
  491. this.hidden = false
  492. },
  493. //触发结束选择
  494. tEnd() {
  495. this.hidden = true;
  496. this.listCurID = this.listCur
  497. },
  498. indexSelect(e) {
  499. let that = this;
  500. let barHeight = this.barHeight;
  501. let list = this.list;
  502. let scrollY = Math.ceil(list.length * e.detail.y / barHeight);
  503. for (let i = 0; i < list.length; i++) {
  504. if (scrollY < i + 1) {
  505. that.listCur = list[i].firstLetter;
  506. that.movableY = i * 20
  507. return false
  508. }
  509. }
  510. },
  511. navTo(subitem){
  512. uni.navigateTo({
  513. url: './userInfo?userId='+subitem.userId
  514. })
  515. },
  516. search(){
  517. this.getUser()
  518. }
  519. }
  520. }
  521. </script>
  522. <style lang="scss">
  523. .quxiao{
  524. width: 40%;
  525. height: 70rpx;
  526. line-height: 70rpx;
  527. text-align: center;
  528. background-color: #F8F8FC;
  529. border: 2rpx solid #cacaca;
  530. color: #999;
  531. border-radius: 50rpx;
  532. }
  533. .queren{
  534. width: 40%;
  535. height: 70rpx;
  536. line-height: 70rpx;
  537. text-align: center;
  538. background-color: #1773ff;
  539. color: #fff;
  540. border-radius: 50rpx;
  541. }
  542. ::v-deep {
  543. .foot-select {
  544. position: fixed;
  545. bottom: 0;
  546. width: 100%;
  547. padding: 20rpx;
  548. background: #fff;
  549. box-shadow: 0 -2rpx 10rpx rgba(0,0,0,0.1);
  550. z-index: 1000;
  551. }
  552. }
  553. .active{
  554. color: #1773ff;
  555. font-weight: bold;
  556. }
  557. .notact{
  558. color: #888;
  559. }
  560. page {
  561. background-color: #F8F8FC;
  562. }
  563. .top{
  564. /* height: 88rpx; */
  565. background-color: #fff;
  566. padding: 0rpx 15rpx;
  567. padding-top: 20rpx;
  568. }
  569. .indexes {
  570. position: relative;
  571. }
  572. .indexBar {
  573. position: fixed;
  574. right: 0px;
  575. bottom: 0px;
  576. padding: 20upx 20upx 20upx 60upx;
  577. display: flex;
  578. align-items: center;
  579. }
  580. .indexBar .indexBar-box {
  581. width: 40upx;
  582. height: auto;
  583. background: #fff;
  584. display: flex;
  585. flex-direction: column;
  586. box-shadow: 0 0 20upx rgba(0, 0, 0, 0.1);
  587. border-radius: 10upx;
  588. }
  589. .indexBar-item {
  590. flex: 1;
  591. width: 40upx;
  592. height: 40upx;
  593. display: flex;
  594. align-items: center;
  595. justify-content: center;
  596. font-size: 24upx;
  597. color: #888;
  598. }
  599. movable-view.indexBar-item {
  600. width: 40upx;
  601. height: 40upx;
  602. z-index: 9;
  603. position: relative;
  604. }
  605. movable-view.indexBar-item::before {
  606. content: "";
  607. display: block;
  608. position: absolute;
  609. left: 0;
  610. top: 10upx;
  611. height: 20upx;
  612. width: 4upx;
  613. background-color: #f37b1d;
  614. }
  615. .indexToast {
  616. position: fixed;
  617. top: 0;
  618. right: 80upx;
  619. bottom: 0;
  620. background: rgba(0, 0, 0, 0.5);
  621. width: 100upx;
  622. height: 100upx;
  623. border-radius: 10upx;
  624. margin: auto;
  625. color: #fff;
  626. line-height: 100upx;
  627. text-align: center;
  628. font-size: 48upx;
  629. }
  630. .zm{
  631. height:30rpx;
  632. padding: 0rpx 20rpx;
  633. font-size: 24rpx;
  634. color: #888;
  635. background: #F8F8FC;
  636. }
  637. .user-list{
  638. margin: 20rpx;
  639. border-radius: 20rpx;
  640. }
  641. .user-item{
  642. width: 100%;
  643. margin: 12rpx 0;
  644. }
  645. .user-item .avatar{
  646. width: 100upx;
  647. height: 100upx;
  648. }
  649. .user-item .avatar .img{
  650. border-radius: 50%;
  651. width: 100%;
  652. height: 100%;
  653. }
  654. .user-item .content{
  655. margin-left: 15rpx;
  656. }
  657. .user-item .content .name{
  658. font-size: 26rpx;
  659. color: #111;
  660. }
  661. .user-item .content .dept{
  662. font-size: 24rpx;
  663. color: #888;
  664. margin-top: 15rpx;
  665. }
  666. </style>