department.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858
  1. <template>
  2. <div style="height: 100%;" class="department_box">
  3. <van-nav-bar class="headerbar no-down-icon" title="组织架构">
  4. <!-- v-if="user_info.id==owner_id" -->
  5. <template slot="left" v-if="pid > 0">
  6. <div @click="back">
  7. <van-icon name="arrow-left" /><span class="van-nav-bar__text">返回</span>
  8. </div>
  9. </template>
  10. <template slot="left" v-if="pid == 0">
  11. <div @click="$route_back">
  12. <van-icon name="arrow-left" /><span class="van-nav-bar__text">返回</span>
  13. </div>
  14. </template>
  15. </van-nav-bar>
  16. <div class="work_body_com">
  17. <scroller ref="scroller_com" :on-refresh="refresh">
  18. <van-search class="scroller-blur" v-model="keyOword" placeholder="请输入搜索姓名" @input="searchUser()" />
  19. <div class="dept_path" v-show="pid_list_arr.length > 0 ">
  20. <a href="javascript:void(0);" @click="back_by_index(0)">全公司</a>
  21. <a
  22. v-for="(item, index) in pid_list_arr"
  23. :key="index"
  24. href="javascript:void(0);"
  25. @click="back_by_index(index + 1,item)"
  26. >
  27. <van-icon name="arrow" />
  28. <Wxopendata type="departmentName" :openid="item.name"></Wxopendata>
  29. </a>
  30. </div>
  31. <div>
  32. <van-cell-group :border="false" v-show="pid==0" >
  33. <van-cell label-class="employee_count"
  34. :title="company_info.name"
  35. :border="false" clickable class="company_info"
  36. :is-link="this.getRole_noe"
  37. :label="employee_count.all +'人'">
  38. <template slot="icon">
  39. <img :src="company_info.logo_url?company_info.logo_url:'static/images/default_company_logo.png'" class="company_dept_img"/>
  40. </template>
  41. </van-cell>
  42. </van-cell-group>
  43. <van-cell-group>
  44. <van-cell v-if="isApp && false" is-link title="邀请成员" @click="show_share" class="new_employee_cell employee_cell">
  45. <template slot="icon">
  46. <icon name="message_newinvit" class="message_newinvit"></icon>
  47. </template>
  48. </van-cell>
  49. </van-cell-group>
  50. <!-- 部门列表 -->
  51. <van-cell-group>
  52. <van-cell is-link v-for="(item,index) in dept_list" v-show="item.pid == pid" :key="index" :title="item.name + ' ('+ item.count +')'" class="employee_cell" @click="show_child(item)">
  53. <template slot="icon">
  54. <icon name="message_department" class="message_department"></icon>
  55. </template>
  56. <template slot="title">
  57. <Wxopendata type="departmentName" :openid="item.name"></Wxopendata>({{item.count}})
  58. </template>
  59. </van-cell>
  60. <van-cell v-if="user_info.id==owner_id && pid_list == false" is-link title="加入申请" class="employee_cell" to="/join_review">
  61. <template slot="icon">
  62. <img src="static/images/join_review.jpg" class="employee_cell_head_img"/>
  63. </template>
  64. </van-cell>
  65. </van-cell-group>
  66. <div class="employee_item" :class="{'letter-first': index == 0 || (index > 0 && employee_list[index-1].letter_index != item.letter_index)}" v-for="(item,index) in employee_list " :key="index">
  67. <van-cell class="employee_cell" :title="item.name">
  68. <template slot="icon">
  69. <userImage :user_name="item.name" :img_url="item.img_url" width="0.9rem" height="0.9rem" style="margin-right: 0.24rem;" ></userImage>
  70. </template>
  71. <template slot="title">
  72. <Wxopendata type="userName" :openid="item.name"></Wxopendata>
  73. </template>
  74. <template slot="right-icon">
  75. <van-tag plain v-if="item.manage_dept_ids.length>0" type="warning">主管</van-tag>
  76. <van-tag plain v-if="item.status == 0">
  77. <span>未加入</span>
  78. </van-tag>
  79. <van-tag plain v-if="item.status == 2">
  80. <span>离职</span>
  81. </van-tag>
  82. <van-tag plain v-if="item.status == 3">
  83. <span>再次邀请</span>
  84. </van-tag>
  85. </template>
  86. </van-cell>
  87. </div>
  88. <div v-if="employee_list.length == 0 && dept_list.length == 0 && showDom">
  89. <van-row type="flex" justify="space-around" class="c">
  90. <van-col span="24">
  91. <div style="margin: 0.5rem 0 0.3rem 0;text-align: center;">
  92. <img src='static/images/noPeople.png' style="width: 2.5rem;height: 2.5rem;"/>
  93. </div>
  94. <p class="text_center">暂无部门和人员</p>
  95. <p class="text_center">点击右上方的+</p>
  96. <p class="text_center">现加部门后加人</p>
  97. </van-col>
  98. </van-row>
  99. </div>
  100. </div>
  101. </scroller>
  102. </div>
  103. <van-popup :duration="0" class="search_popup" :class="{show_search_popup: show_search_popup}" v-model="show_search_popup_" position="right" get-container="body" style="width: 100vw; height: 100vh;" :overlay="false">
  104. <div :style="'padding-top:' + bar_height + 'px;background-color: #26A2FF;'"></div>
  105. <van-nav-bar class="headerbar no-down-icon" title="通讯录" left-text="返回" @click-left="close_search_popup" left-arrow></van-nav-bar>
  106. <van-search ref="search1" class="scroller-blur" placeholder="请输入搜索姓名" v-model="keyword" />
  107. <div class="search_list">
  108. </div>
  109. <noData v-show="search_show" v-model="search_result_list" ></noData>
  110. </van-popup>
  111. <van-action-sheet v-model="show" get-container="boby" title="邀请成员">
  112. <share :share_data="share_data"></share>
  113. </van-action-sheet>
  114. <qrcode v-if="show_qrcode" :show="qrcode_popup_show" :logo="company_info.logo_url" @changeShow="qrcode_popup_show=false"></qrcode>
  115. </div>
  116. </template>
  117. <script>
  118. import request from '@/utils/request'
  119. import {getRole_noe} from '@/utils/auth'
  120. import share from '@/components/common/share'
  121. import qrcode from '@/components/common/coreDialog'
  122. import userImage from '@/components/common/user_image'
  123. import Echo from 'laravel-echo'
  124. import { _throttle } from '@/utils/auth';
  125. import Vue from 'vue'
  126. import {Search, Tag, IndexBar, IndexAnchor, Skeleton, DropdownMenu, DropdownItem, ActionSheet, Toast, SwipeCell} from 'vant'
  127. Vue.use(Search).use(Tag).use(IndexBar).use(IndexAnchor).use(Skeleton).use(DropdownMenu).use(DropdownItem).use(ActionSheet).use(SwipeCell)
  128. export default {
  129. name: 'department',
  130. data () {
  131. return {
  132. bar_height: '',
  133. show_search_popup_: true,
  134. showDom: false,
  135. pid_list_arr: [],
  136. list: [],
  137. dept_list: [],
  138. dept_info: {},
  139. showDepart: false,
  140. company_info: {},
  141. employee_list: [],
  142. employee_count: {},
  143. keyword: '',
  144. owner_id: 0,
  145. user_info: this.$store.getters.user_info,
  146. employee_map: this.$store.getters.employee_map,
  147. pid: 0,
  148. pid_list: [],
  149. options: [],
  150. share_data: {
  151. type: '',
  152. title: '',
  153. content: '',
  154. thumbs: '',
  155. href: ''
  156. },
  157. shares: [],
  158. show: false,
  159. qrcode_popup_show: false,
  160. search_result: false,
  161. search_result_list: [],
  162. isApp: !!window.plus,
  163. show_qrcode: false,
  164. show_search_popup: false,
  165. search_show: false,
  166. // 访问indexDB
  167. db: null,
  168. new_employee_num: 0,
  169. showHelp: false,
  170. getRole_noe: '',// 权限判断
  171. keyOword: '',//搜索
  172. deptId: 0,
  173. }
  174. },
  175. // 组件
  176. components: {
  177. share, qrcode, Echo, userImage
  178. },
  179. watch: {
  180. keyword (val) {
  181. let self = this
  182. if (val === '') {
  183. self.search_result_list = []
  184. self.search_show = false
  185. } else {
  186. let new_employee_list = []
  187. for (const i in this.employee_list) {
  188. if (self.employee_list[i].name.indexOf(val) != '-1') {
  189. new_employee_list.push(self.employee_list[i])
  190. }
  191. }
  192. if (new_employee_list.length > 0) {
  193. self.search_result_list = new_employee_list
  194. } else {
  195. self.search_result_list = []
  196. self.search_show = true
  197. }
  198. }
  199. }
  200. },
  201. methods: {
  202. //搜索
  203. searchUser: _throttle(function() {
  204. //keyOword
  205. console.log(this.keyOword)
  206. this.get_employee_list()
  207. }),
  208. // // 添加人员
  209. // goAddEmployee () {
  210. // this.showHelp = false
  211. // window.plus ? plus.storage.setItem('departmentHelp', '1') : localStorage.setItem('departmentHelp', '1')
  212. // },
  213. // 外层点击搜索
  214. parent_click () {
  215. this.show_search_popup = true
  216. document.querySelectorAll('.search_popup input').item(0).focus()
  217. },
  218. // 关闭搜索弹窗
  219. close_search_popup () {
  220. this.show_search_popup = false
  221. this.keyword = ''
  222. this.search_show = false
  223. },
  224. edit_site_info () {
  225. if (!this.getRole_noe) {
  226. return false
  227. }
  228. return this.$router.push({name: 'company_info'})
  229. },
  230. back_by_index (index, item) {
  231. if (index == 0) {
  232. this.pid = this.pid_list[index]
  233. this.pid_list.splice(index, 100)
  234. this.pid_list_arr.splice(index, 100)
  235. this.deptId = this.pid
  236. this.get_employee_list(this.pid)
  237. this.get_department_list()
  238. return
  239. }
  240. if (index == this.pid_list.length) {
  241. return false
  242. }
  243. this.pid = this.pid_list[index]
  244. this.pid_list.splice(index, 100)
  245. this.pid_list_arr.splice(index, 100)
  246. this.deptId = item.id
  247. this.get_employee_list(item.id)
  248. this.get_department_list(item.id)
  249. // this.get_dept_info(this.pid)
  250. },
  251. getContainer () {
  252. return document.body
  253. },
  254. // 加载
  255. showLoading () {
  256. this.$toast.loading({
  257. mask: true,
  258. type: 'spinner',
  259. message: '加载中...'
  260. })
  261. },
  262. // 下拉刷新
  263. refresh (done) {
  264. let self = this
  265. this.deptId = this.pid
  266. self.get_employee_list(this.pid)
  267. self.get_department_list()
  268. setTimeout(() => {
  269. done()
  270. }, 200)
  271. },
  272. back () {
  273. let array = this.pid_list_arr
  274. let newarray = array.slice(0, array.length - 1)
  275. this.pid_list_arr = newarray
  276. if (newarray.length == 0) {
  277. this.pid = 0
  278. } else {
  279. this.pid = newarray[newarray.length - 1].id
  280. // this.get_dept_info(this.pid)
  281. }
  282. this.deptId = this.pid
  283. this.get_employee_list(this.pid)
  284. },
  285. show_child (item) {
  286. this.pid = item.id
  287. this.pid_list_arr.push(item)
  288. this.pid_list.push(item.pid)
  289. // this.get_dept_info(item.id)
  290. this.deptId = item.id
  291. this.get_employee_list(item.id)
  292. },
  293. department_parse (dept_list, first) {
  294. let self = this
  295. let list = []
  296. if (first) {
  297. self.dept_list = []
  298. }
  299. for (let i in dept_list) {
  300. self.dept_list.push(dept_list[i], false)
  301. if (dept_list[i].children.length > 0) {
  302. self.department_parse(dept_list[i].children, false)
  303. }
  304. }
  305. },
  306. // 获取分享信息
  307. get_share_data () {
  308. let pictures = '_www/static/images/defalut_custmer_headicon.png'
  309. if (window.plus && window.plus.os.name == 'Android') {
  310. pictures = window.plus.io.convertLocalFileSystemURL(pictures)
  311. }
  312. this.share_data.type = 'web'
  313. this.share_data.title = this.user_info.name + '邀请你加入'
  314. this.share_data.content = '我们的同事都在用功道云,点击立即申请加入'
  315. this.share_data.thumbs = [pictures]
  316. this.share_data.href = process.env.WEB_LINK + '/#/invite_reg?site_id=' + this.user_info.site_id + '&employee_id=' + this.user_info.id + '&company_name=' + this.company_info.name + '&employee_name=' + this.user_info.name
  317. },
  318. // 获取部门树
  319. get_department_list (d) {
  320. let self = this
  321. this.$toast.loading({
  322. message: '加载中...',
  323. forbidClick: true
  324. })
  325. request('get', '/api/department/index').then((res) => {
  326. if (res.data.code == 1) {
  327. self.showDom = true
  328. self.dept_list = res.data.data.list
  329. self.company_info = res.data.data.company
  330. self.employee_count = res.data.data.count
  331. if (window.plus) {
  332. plus.share.getServices(function (s) {
  333. self.shares = s
  334. self.get_share_data()
  335. }, function (e) {
  336. alert('获取分享服务列表失败:' + e.message)
  337. })
  338. }
  339. self.$toast.clear()
  340. } else {
  341. self.$toast(res.data.msg)
  342. }
  343. }).finally(() => {
  344. this.show_qrcode = true
  345. })
  346. },
  347. plus_menu (val) {
  348. switch (val) {
  349. case 'add_dept_btn':
  350. let last = {}
  351. if (this.pid_list_arr.length > 0) {
  352. last = this.pid_list_arr.slice(-1)
  353. this.$router.push({name: 'dept', query: {type: 'add', parent_id: last[0].id}})
  354. } else {
  355. this.$router.push({name: 'dept', query: {type: 'add'}})
  356. }
  357. break
  358. case 'add_employee':
  359. this.$router.push({name: 'employee_add'})
  360. break
  361. case 'wechat':
  362. this.show_share()
  363. break
  364. default:
  365. this.qrcode_popup_show = true
  366. }
  367. },
  368. query_share (s) {
  369. if (s.id == 'weixin') {
  370. let pictures = '_www/static/images/logo.png'
  371. if (window.plus && plus.os.name == 'Android') {
  372. pictures = plus.io.convertLocalFileSystemURL(pictures)
  373. }
  374. s.send({
  375. extra: {scene: 'WXSceneSession'},
  376. type: 'web',
  377. title: this.user_info.name + '邀请你加入' + this.company_info.name,
  378. content: '我们的同事都在用功道云,点击立即申请加入',
  379. thumbs: [pictures],
  380. href: 'https://g107.com/#/site_id=' + this.user_info.site_id + '&employee_id=' + this.user_info.id + '&company_name=' + this.company_info.name
  381. }, function () {
  382. alert('分享成功!')
  383. }, function (e) {
  384. alert('分享失败:' + e.message)
  385. })
  386. }
  387. },
  388. // 编辑部门
  389. edit_dept (d) {
  390. if (!this.getRole_noe) {
  391. return false
  392. }
  393. this.$router.push({name: 'dept', query: {type: 'edit', id: d.id}})
  394. },
  395. // 查询部门信息
  396. get_dept_info (d) {
  397. let self = this
  398. self.showLoading()
  399. request('get', '/api/department/info', {id: d}).then((res) => {
  400. if (res.data.code == 1) {
  401. if (res.data.data.manager.length == 0) {
  402. self.showDepart = false
  403. } else {
  404. self.showDepart = true
  405. }
  406. self.dept_info = res.data.data
  407. self.$toast.clear()
  408. } else {
  409. self.$toast.clear()
  410. }
  411. }).catch((e) => {
  412. self.$toast(res.data.msg)
  413. })
  414. },
  415. // 查询员工列表
  416. get_employee_list (d) {
  417. this.showLoading()
  418. request('get', '/api/employee/list', {dept_id: this.deptId, page_size: 20000, keywords: this.keyOword}).then((res) => {
  419. if (res.data.code == 1) {
  420. this.showDom = true
  421. this.employee_list = res.data.data.list
  422. this.$nextTick(() => {
  423. this.$refs['scroller_com'].createPageIndex()
  424. })
  425. } else {
  426. this.$toast(res.data.msg)
  427. }
  428. }).finally(() => {
  429. this.$toast.clear()
  430. })
  431. },
  432. // 编辑人员
  433. edit_employee (d) {
  434. this.$router.push({name: 'employee_edit', query: {id: d.id}})
  435. },
  436. // 个人信息
  437. employee_info (d) {
  438. this.$router.push({name: 'employee_info', query: {id: d.id}})
  439. },
  440. // 邀请弹窗
  441. show_share () {
  442. this.show = true
  443. },
  444. // 判断是否是APP
  445. ifApp () {
  446. if (window.plus) {
  447. this.isApp = true
  448. }
  449. },
  450. // 获取新成员
  451. new_employee () {
  452. let self = this
  453. const data = {status: 0, page: 1}
  454. // request('get', '/api/join/index', data).then((res) => {
  455. // if (res.data.code == 1) {
  456. // if (res.data.data.total > 0) {
  457. // self.new_employee_num = res.data.data.total
  458. // }
  459. // } else {
  460. // self.$toast(res.data.msg)
  461. // }
  462. // })
  463. }
  464. },
  465. keep_alive_update: {
  466. update_dept_list: function (vm, data) {
  467. if (data.type == 'edit') {
  468. vm.dept_list[data.id].name = data.name
  469. vm.dept_info.name = data.name
  470. } else {
  471. vm.refresh(function () {})
  472. }
  473. },
  474. company_info: function (vm, data) {
  475. vm.company_info.name = data.name
  476. vm.company_info.logo_url = data.logo_url
  477. },
  478. employee_list: function (vm, data) {
  479. for (let i in vm.employee_list) {
  480. if (vm.employee_list[i].id == data.id) {
  481. vm.employee_list[i].name = data.name
  482. }
  483. }
  484. },
  485. del_dept_info: function (vm, data) {
  486. vm.back()
  487. vm.refresh(function () {
  488. self.get_department_list()
  489. self.get_employee_list()
  490. self.ifApp()
  491. })
  492. },
  493. add_employee: function (vm, data) {
  494. vm.refresh(function () {
  495. })
  496. },
  497. del_employee: function (vm, data) {
  498. for (let i in vm.employee_list) {
  499. if (vm.employee_list[i].id == data.id) {
  500. vm.employee_list.splice(i, 1)
  501. vm.employee_count.all = vm.employee_count.all - 1
  502. }
  503. }
  504. },
  505. update_new_employee: function (vm, data) {
  506. vm.new_employee()
  507. }
  508. },
  509. created () {
  510. this.getRole_noe = getRole_noe()
  511. // this.get_employee_list()
  512. this.new_employee()
  513. },
  514. mounted () {
  515. let self = this
  516. if (window.plus) {
  517. self.bar_height = window.plus.navigator.getStatusbarHeight()
  518. }
  519. let options = []
  520. if (this.getRole_noe) {
  521. options.push({ text: '添加部门', value: 'add_dept_btn', icon: 'static/images/dept_add.png'})
  522. }
  523. if (this.getRole_noe) {
  524. options.push({ text: '添加人员', value: 'add_employee', icon: 'static/images/employee_add.png'})
  525. }
  526. if (window.plus) {
  527. if (this.getRole_noe) {
  528. options.push({ text: '微信邀请', value: 'wechat', icon: 'static/images/wechat_invite.png'})
  529. options.push({ text: '二维码邀请', value: 'qrcode', icon: 'static/images/qrcode_invite.png'})
  530. }
  531. self.options = options
  532. } else {
  533. self.options = options
  534. }
  535. // 引导页相关
  536. // this.$nextTick(() => {
  537. // let employeeMap = window.plus ? JSON.parse(plus.storage.getItem('SET_EMPLOYEE_MAP')) : JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP'))
  538. // if (employeeMap) {
  539. // let arr = Object.keys(employeeMap)
  540. // if (window.plus) {
  541. // plus.storage.getItem('departmentHelp') || arr.length > 1 ? this.showHelp = false : this.showHelp = true
  542. // } else {
  543. // localStorage.getItem('departmentHelp') || arr.length > 1 ? this.showHelp = false : this.showHelp = true
  544. // }
  545. // }
  546. // })
  547. }
  548. }
  549. </script>
  550. <style scoped>
  551. .pageIndexBtn{
  552. width:100%;
  553. text-align: left;
  554. padding: 0.1rem 0.4rem 0.05rem;
  555. color: #909399;
  556. background:rgb(245, 245, 245);
  557. }
  558. .cur_company_name {
  559. line-height: 0.8rem;
  560. text-indent: 0.5em;
  561. cursor: pointer;
  562. }
  563. .menu_title {
  564. text-indent: 0.5em;
  565. margin-bottom: 0.16rem;
  566. }
  567. .work_body_com {
  568. height: calc(100vh - 0.92rem);
  569. position: relative;
  570. z-index:0;
  571. }
  572. .work_body_com .search_list{
  573. /* background:#FFF;
  574. height: 100vh; */
  575. }
  576. .van-radio-group {
  577. padding: 0.24rem 0.32rem;
  578. }
  579. .van-radio {
  580. height: 0.8rem;
  581. }
  582. .employee_cell_head_img {
  583. width: 0.9rem;
  584. height: 0.9rem;
  585. -webkit-border-radius: 0.1rem;
  586. -moz-border-radius: 0.1rem;
  587. border-radius: 0.9rem;
  588. margin-right: 0.24rem;
  589. }
  590. .invite_employee_head_img{
  591. width: 0.8rem;
  592. height: 0.8rem;
  593. -webkit-border-radius: 0.1rem;
  594. -moz-border-radius: 0.1rem;
  595. border-radius: 0.1rem;
  596. margin-right: 0.24rem;
  597. }
  598. .employee_cell {
  599. z-index:0;
  600. }
  601. .employee_cell .message_department{
  602. width:0.9rem;
  603. height:0.9rem;
  604. margin-right: 0.24rem;
  605. color:#238dfa;
  606. }
  607. .employee_cell .message_newinvit{
  608. width:0.9rem;
  609. height:0.9rem;
  610. margin-right: 0.24rem;
  611. color:#FFCC00;
  612. }
  613. .employee_cell .message_newmember{
  614. width:0.9rem;
  615. height:0.9rem;
  616. margin-right: 0.24rem;
  617. color:#FF9600;
  618. }
  619. .employee_cell .van-cell__title{
  620. line-height: 0.9rem;
  621. color: #323233;
  622. }
  623. .employee_cell .van-cell__title span{
  624. font-size: 0.34rem;
  625. }
  626. .employee_cell .van-cell__right-icon{
  627. line-height: 0.9rem;
  628. color: #E4E7ED;
  629. }
  630. .company_image{
  631. background: #fff;
  632. padding-bottom: 0.1rem ;
  633. margin-bottom: 0.1rem
  634. }
  635. .company_info{
  636. padding: 0.32rem;
  637. margin-top:-0.2rem;
  638. }
  639. .company_info .van-cell__right-icon{
  640. line-height: 0.8rem;
  641. }
  642. .company_info .van-cell__title{
  643. padding: 0.05rem 0;
  644. overflow: hidden;
  645. white-space: nowrap;
  646. text-overflow: ellipsis;
  647. }
  648. .company_info .van-cell__title span{
  649. font-family: mirsoft Yahei;
  650. font-size: 0.38rem;
  651. font-weight: 600;
  652. letter-spacing: 0.003rem;
  653. border-radius: 0.08rem;
  654. }
  655. .company_info .van-cell__title .van-cell__label span{
  656. font-size: x-small;
  657. color: #fff;
  658. margin-right: 0.1rem;
  659. }
  660. .company_info i.van-icon{
  661. line-height: 1.28rem
  662. }
  663. .van-hairline--top-bottom:after, .van-hairline-unset--top-bottom:after{
  664. border:none;
  665. }
  666. .company_dept_img{
  667. width: 1.08rem;
  668. height: 1.08rem;
  669. -webkit-border-radius: 0.1rem;
  670. -moz-border-radius: 0.1rem;
  671. border-radius: 0.125rem;
  672. margin-right: 0.26rem;
  673. }
  674. .qrcode_popup{
  675. width: 80vw
  676. }
  677. .employee_item{
  678. position: relative;
  679. z-index: 0;
  680. }
  681. .employee_item:before{
  682. position: absolute;
  683. left: 0rem;
  684. right: 0rem;
  685. top:0rem;
  686. box-sizing: border-box;
  687. content: ' ';
  688. pointer-events: none;
  689. border-bottom: 0.02rem solid #ebedf0;
  690. -webkit-transform: scaleY(.5);
  691. transform: scaleY(.5);
  692. z-index: 1;
  693. }
  694. .letter-first:before{
  695. border:none !important;
  696. }
  697. .department_box /deep/ .van-cell__left-icon{
  698. color:#323233 !important;
  699. }
  700. .pageIndexBtnText{font-size:0.24rem;}
  701. .dept_path a {
  702. color: #238dfa;
  703. font-size: 0.28rem;
  704. }
  705. .dept_path a:nth-last-child(1) {
  706. color: #999;
  707. }
  708. .dept_path::after {
  709. /* content: '';
  710. color: #fff!important; */
  711. }
  712. .dept_path a * {
  713. vertical-align: middle;
  714. }
  715. .dept_path {
  716. position: relative;
  717. font-size: 0.32rem;
  718. line-height: 0.4rem;
  719. padding: 0.2rem 0.32rem 0.1rem 0.32rem;
  720. }
  721. .dept_path:after {
  722. /* content: ' ';
  723. bottom: 0;
  724. left: 0;
  725. right: 0;
  726. background-color: #efefef; */
  727. /* height: 1px; */
  728. /* position: absolute;
  729. transform: scaleY(0.5); */
  730. }
  731. .text_center {
  732. font-size: 14px;
  733. margin:0;
  734. color: #969799;
  735. }
  736. .employee_count{
  737. font-size: 0.26rem;
  738. }
  739. .tag.num9 {
  740. padding: 0;
  741. width: 0.4rem;
  742. height: 0.4rem;
  743. border-radius: 50%;
  744. display: inline-block;
  745. text-align: center;
  746. }
  747. .tag.num10 {
  748. width: auto;
  749. line-height: 1;
  750. }
  751. .employee_cell .van-tag{
  752. display: inline-table;
  753. margin-top: 0.26rem;
  754. }
  755. .employee_cell .van-tag+.van-tag{
  756. margin-left: 0.2rem;
  757. }
  758. .guild_notice{
  759. top:1.6rem;
  760. left: 4.3rem;
  761. width: 6rem;
  762. background: transparent;
  763. border-radius: 0.12rem;
  764. overflow-y: inherit;
  765. }
  766. .guild_notice .list{
  767. position: relative;
  768. padding: 0.2rem;
  769. background: #238dfa;
  770. border-radius: 0.12rem;
  771. }
  772. .title{
  773. font-size:0.32rem;
  774. line-height: 0.48rem;
  775. color:#ffffff;
  776. }
  777. .title:after{
  778. position: absolute;
  779. top: 0.825rem;
  780. content: ' ';
  781. width: 90%;
  782. border-bottom: 0.02rem #3798fb solid;
  783. }
  784. .num{
  785. display: block;
  786. font-size:0.32rem;
  787. line-height: 0.48rem;
  788. color:#ffffff;
  789. }
  790. .list .des{
  791. display:block;
  792. margin-top:0.4rem;
  793. font-size:0.36rem;
  794. font-weight:bold;
  795. color:#fff;
  796. }
  797. .list .next{
  798. margin-top: 0.3rem;
  799. color:#238dfa;
  800. background:#fff;
  801. border-radius:0.12rem;
  802. }
  803. .guild_notice .list:after{
  804. border:none;
  805. }
  806. .guild_down_icon{
  807. position: relative;
  808. top: 0.1vh;
  809. left: 72vw;
  810. content: ' ';
  811. width: 0;
  812. height: 0;
  813. border-left: 0.2rem solid transparent;
  814. border-right: 0.2rem solid transparent;
  815. border-top: 0.2rem solid #238dfa;
  816. transform: rotate(180deg);
  817. }
  818. .guild_dept_border{
  819. position: relative;
  820. text-align: center;
  821. top: 0vh;
  822. left: 69vw;
  823. width: 0.7rem;
  824. height: 0.7rem;
  825. margin-bottom: 2vh;
  826. font-size: 0.4rem;
  827. font-weight: bold;
  828. line-height: 0.7rem;
  829. color: #fff;
  830. border: 0.04rem #fff dashed;
  831. border-radius: 0.12rem;
  832. }
  833. </style>