EmployeeSelector1.vue 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972
  1. <template>
  2. <div>
  3. <div class="employee_selector_box">
  4. <el-row :gutter="10">
  5. <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box one">
  6. <div class="search-box">
  7. <div class="search">
  8. <el-button slot="append" icon="el-icon-search" class="manager_button"></el-button>
  9. <el-input v-model="keyword" placeholder="请输入内容"></el-input>
  10. </div>
  11. </div>
  12. <div class="dept_path">
  13. <a
  14. href="javascript:void(0);"
  15. @click="back_by_index(0)"
  16. style="cursor: pointer;color: inherit;text-decoration: none;"
  17. >全公司</a>
  18. <a
  19. v-for="(item, index) in pid_list_arr"
  20. :key="index"
  21. href="javascript:void(0);"
  22. @click="back_by_index(index + 1)"
  23. >
  24. <i class="el-icon-arrow-right"></i>
  25. {{item.name}}
  26. </a>
  27. </div>
  28. <el-checkbox
  29. v-if="isChecKedAll"
  30. v-model="checked"
  31. @change="checkedChange"
  32. :indeterminate="indeterminate"
  33. >全选</el-checkbox>
  34. <el-scrollbar
  35. wrap-class="column-wrapper scrollable-items-container"
  36. :native="false"
  37. style="height: 354px;"
  38. >
  39. <div class="choose_left">
  40. <a href="javascript:void(0)" v-for="(item,index) in dept_list" :key="index">
  41. <div
  42. class="employee_cell"
  43. @click="select_dept(item)"
  44. v-show="item.pid == pid && item.name.indexOf(keyword) >= 0 && dept_not_select.indexOf(item.id) < 0"
  45. >
  46. <i class="el-icon-caret-right" style=" display: inline-block;"></i>
  47. <div class="employee_checkbox" v-if="can_select_dept">
  48. <el-checkbox v-model="item.checked"></el-checkbox>
  49. </div>
  50. <div class="employee_name">{{item.name}}</div>
  51. <div v-if="can_select_dept" class="dept_child_cell">
  52. <span
  53. href="javascript:void(0);"
  54. class="child_btn"
  55. @click.stop="show_child(item)"
  56. >| 下级</span>
  57. </div>
  58. <div class="employee_cell_clear"></div>
  59. </div>
  60. </a>
  61. <div class="persons_box" style="padding-top:4px;">
  62. <a
  63. class="employee_cell_a"
  64. href="javascript:void(0)"
  65. v-for="(item,index) in list"
  66. :key="index"
  67. v-show="item.show"
  68. >
  69. <!-- class="employee_cell flex-box flex-v-ce" -->
  70. <div
  71. class="employee_cell"
  72. v-if="can_select_employee"
  73. @click.prevent.stop="select_employee(item)"
  74. v-show="employee_not_select.indexOf(item.id) < 0"
  75. >
  76. <div class="employee_checkbox">
  77. <el-checkbox v-model="item.checked"></el-checkbox>
  78. </div>
  79. <div class="employee_img_url">
  80. <img :src="item.img_url" class="employee_cell_head_img" />
  81. <!-- <userImage
  82. :user_name="item.name"
  83. :img_url="item.img_url"
  84. width="30px"
  85. height="30px"
  86. ></userImage> -->
  87. </div>
  88. <div class="employee_name">{{item.name}}</div>
  89. <div class="employee_cell_clear"></div>
  90. </div>
  91. </a>
  92. </div>
  93. </div>
  94. </el-scrollbar>
  95. </el-col>
  96. <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line">
  97. <span style="opacity: 0;">空</span>
  98. </el-col>
  99. <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
  100. <div class="option-box">
  101. <span
  102. style="line-height: 40px; padding-left: 10px;"
  103. class="fl"
  104. v-show="multi"
  105. >已选择{{employee_selected_list.length}}个员工</span>
  106. <el-button type="type" @click="clear_data">清空</el-button>
  107. </div>
  108. <!-- <div class="option-box flex-box flex-v-ce">
  109. <div class="fontColorF flex-1" v-show="multi">已选择{{employee_selected_list.length}}个员工</div>
  110. <el-button type="type" @click="clear_data">清空</el-button>
  111. </div> -->
  112. <el-scrollbar
  113. wrap-class="column-wrapper scrollable-items-container"
  114. :native="false"
  115. style="height: 400px;"
  116. >
  117. <div class="choose_right">
  118. <div class="employee_cell" v-for="(item,index) in dept_selected_list" :key="index">
  119. <div class="employee_name">{{item.dept_name}}</div>
  120. <div class="employee_delete">
  121. <el-button
  122. type="default"
  123. size="mini"
  124. @click="dept_cancel(item)"
  125. icon="el-icon-close"
  126. circle
  127. ></el-button>
  128. </div>
  129. <div class="employee_cell_clear"></div>
  130. </div>
  131. <div
  132. class="employee_cell"
  133. v-for="(item,index) in employee_selected_list"
  134. :key="index"
  135. >
  136. <div class="employee_img_url" v-if="item.img_url">
  137. <img :src="item.img_url" class="employee_cell_head_img" />
  138. </div>
  139. <div class="employee_img_url" v-else>
  140. <img src="static/images/head_default.png" class="employee_cell_head_img" />
  141. </div>
  142. <div class="employee_name">{{item.name}}</div>
  143. <div class="employee_delete">
  144. <el-button
  145. type="default"
  146. size="mini"
  147. @click="employee_cancel(item,true)"
  148. icon="el-icon-close"
  149. circle
  150. ></el-button>
  151. </div>
  152. <div class="employee_cell_clear"></div>
  153. </div>
  154. </div>
  155. <!-- <div class="choose_right">
  156. <div
  157. class="employee_cell flex-box flex-v-ce"
  158. v-for="(item,index) in dept_selected_list"
  159. :key="index"
  160. >
  161. <div class="employee_name">{{item.dept_name}}</div>
  162. <div class="employee_delete">
  163. <el-button
  164. type="default"
  165. size="mini"
  166. @click="dept_cancel(item)"
  167. icon="el-icon-close"
  168. circle
  169. ></el-button>
  170. </div>
  171. <div class="employee_cell_clear"></div>
  172. </div>
  173. <div
  174. class="employee_cell"
  175. v-for="(item,index) in employee_selected_list"
  176. :key="index"
  177. >
  178. <userImage
  179. :user_name="item.name"
  180. :img_url="item.img_url"
  181. width="30px"
  182. height="30px"
  183. ></userImage>
  184. <div class="employee_name">{{item.name}}</div>
  185. <div class="employee_delete">
  186. <el-button
  187. type="default"
  188. size="mini"
  189. @click="employee_cancel(item,true)"
  190. icon="el-icon-close"
  191. circle
  192. ></el-button>
  193. </div>
  194. <div class="employee_cell_clear"></div>
  195. </div>
  196. </div> -->
  197. </el-scrollbar>
  198. </el-col>
  199. </el-row>
  200. </div>
  201. <!-- <span slot="footer" class="dialog-footer">
  202. <el-button @click="close">取 消</el-button>
  203. <el-button type="primary" @click="confirm">确 定</el-button>
  204. </span>-->
  205. </div>
  206. </template>
  207. <script>
  208. export default {
  209. props: {
  210. append_body: {
  211. type: Boolean,
  212. default: false,
  213. },
  214. visible: {
  215. type: Boolean,
  216. default: false,
  217. },
  218. can_select_dept: {
  219. type: Boolean,
  220. default: true,
  221. },
  222. can_select_employee: {
  223. type: Boolean,
  224. default: true,
  225. },
  226. employee_not_select: {
  227. type: Array,
  228. default: () => {
  229. return [];
  230. },
  231. },
  232. dept_not_select: {
  233. type: Array,
  234. default: () => {
  235. return [];
  236. },
  237. },
  238. selected: {
  239. type: Object,
  240. default: () => {
  241. return {
  242. employee: [],
  243. dept: [],
  244. };
  245. },
  246. },
  247. multi: {
  248. type: Boolean,
  249. default: true,
  250. },
  251. dept_multi: {
  252. type: Boolean,
  253. default: true,
  254. },
  255. employee_list: {
  256. type: Array,
  257. default: () => {
  258. return [];
  259. },
  260. },
  261. close_clear_data: {
  262. type: Boolean,
  263. default: true,
  264. },
  265. max: {
  266. type: Number,
  267. default: 0,
  268. },
  269. user_no_select: {
  270. type: Boolean,
  271. default: false,
  272. },
  273. isChecKedAll: {
  274. type: Boolean,
  275. default: true,
  276. },
  277. },
  278. name: "EmployeeSelector1",
  279. data() {
  280. let selected = JSON.parse(JSON.stringify(this.selected));
  281. let user_no_select = JSON.parse(JSON.stringify(this.user_no_select));
  282. return {
  283. dialogVisible: true,
  284. employee_selected_list: selected.employee,
  285. dept_selected_list: selected.dept,
  286. employee_selected: [],
  287. dept_selected: [],
  288. com_height: "100%",
  289. company_info: {},
  290. actions_show: false,
  291. dept_name: "",
  292. dept_id: 0,
  293. list: [],
  294. dept_list: [],//部门分类
  295. keyword: "",
  296. owner_id: 0,
  297. user_info: this.$store.getters.user_info,
  298. pid: 0,
  299. pid_list: [],
  300. selected_box_width: "0",
  301. pid_list_arr: [],
  302. checked: false,
  303. indeterminate: false,
  304. not_user: user_no_select,
  305. };
  306. },
  307. watch: {
  308. max(val) {
  309. this.set_button_width();
  310. },
  311. selected(val) {
  312. console.log(val);
  313. let selected = JSON.parse(JSON.stringify(val));
  314. this.employee_selected = [];
  315. this.dept_selected = [];
  316. this.employee_selected_list = selected.employee;
  317. this.dept_selected_list = selected.dept;z
  318. for (let i in selected.employee) {
  319. this.employee_selected.push(selected.employee[i].id);
  320. }
  321. for (let i in selected.dept) {
  322. this.dept_selected.push(selected.dept[i].dept_id);
  323. }
  324. this.set_button_width();
  325. },
  326. visible(val) {
  327. // this.visible_ = JSON.parse(JSON.stringify(val))
  328. // if(val){
  329. setTimeout(() => {
  330. if (this.$route.query.pid) {
  331. this.pid = this.$route.query.pid;
  332. }
  333. this.get_user_list();
  334. this.get_dept_list();
  335. }, 200);
  336. // }
  337. this.set_button_width();
  338. },
  339. employee_selected_list() {
  340. let l =
  341. this.employee_selected_list.length + this.dept_selected_list.length;
  342. let width = 0.9 * l;
  343. this.selected_box_width = width + "rem";
  344. this.set_button_width();
  345. },
  346. dept_selected_list() {
  347. let l =
  348. this.employee_selected_list.length + this.dept_selected_list.length;
  349. let width = 0.9 * l;
  350. this.selected_box_width = width + "rem";
  351. this.set_button_width();
  352. },
  353. //搜索
  354. keyword() {
  355. this.get_user_list(function () {});
  356. },
  357. },
  358. methods: {
  359. checkedChange(val) {
  360. if (val) {
  361. for (let i in this.list) {
  362. this.$set(this.list[i], "checked", true);
  363. }
  364. this.$nextTick(() => {
  365. let employeeSelectedList = JSON.parse(
  366. JSON.stringify(this.employee_selected_list)
  367. );
  368. let employeeSelectedIds = [],
  369. total = 0;
  370. employeeSelectedList.forEach((element) => {
  371. employeeSelectedIds.push(element.id);
  372. });
  373. for (const i in this.list) {
  374. if (employeeSelectedIds.includes(this.list[i].id)) {
  375. total += 1;
  376. } else {
  377. this.employee_selected_list.push(this.list[i]);
  378. }
  379. }
  380. // 未处理好 20200713
  381. // this.lsit.length == total?this.indeterminate = true:this.indeterminate = false
  382. });
  383. } else {
  384. this.clear_data();
  385. }
  386. },
  387. close_before(done) {
  388. this.close();
  389. },
  390. set_button_width() {},
  391. back() {
  392. this.pid = this.pid_list[this.pid_list.length - 1];
  393. this.pid_list.splice(this.pid_list.length - 1);
  394. this.pid_list_arr.splice(this.pid_list_arr.length - 1);
  395. this.get_user_list();
  396. },
  397. back_by_index(index) {
  398. if (index == this.pid_list.length) {
  399. return false;
  400. }
  401. this.pid = this.pid_list[index];
  402. this.pid_list.splice(index, 100);
  403. this.pid_list_arr.splice(index, 100);
  404. this.get_user_list(function () {});
  405. },
  406. show_child(item) {
  407. this.pid_list.push(this.pid);
  408. this.pid_list_arr.push(item);
  409. this.pid = item.id;
  410. this.get_user_list(function () {});
  411. },
  412. //添加或移除已添加的员工
  413. employee_cancel(item) {
  414. this.employee_selected_list.map((arr, index) => {
  415. if (arr.id == item.id) {
  416. this.employee_selected_list.splice(index, 1);
  417. }
  418. });
  419. this.list.map((arr, index) => {
  420. if (arr.id == item.id) {
  421. this.$set(arr, "checked", false);
  422. }
  423. });
  424. },
  425. dept_cancel(item) {
  426. this.dept_selected.splice(this.dept_selected.indexOf(item.id), 1);
  427. let delete_index = -1;
  428. for (let i in this.dept_selected_list) {
  429. if (this.dept_selected.indexOf(this.dept_selected_list[i].id) < 0) {
  430. delete_index = i;
  431. }
  432. }
  433. if (delete_index >= 0) {
  434. this.dept_selected_list.splice(delete_index, 1);
  435. for (let i in this.dept_list) {
  436. if (this.dept_list[i].dept_id == item.id) {
  437. this.$set(this.dept_list[i], "checked", false);
  438. }
  439. }
  440. }
  441. },
  442. //选择员工
  443. select_employee(item) {
  444. if (this.employee_not_select.indexOf(item.id) >= 0) {
  445. return false;
  446. }
  447. if (item.checked) {
  448. item.checked = false;
  449. this.employee_cancel(item);
  450. } else {
  451. if (!this.multi) {
  452. this.employee_selected = [];
  453. this.employee_selected_list = [];
  454. for (let i in this.list) {
  455. this.$set(this.list[i], "checked", false);
  456. }
  457. }
  458. if (
  459. this.max > 0 &&
  460. this.employee_selected_list.length == this.max &&
  461. this.multi
  462. ) {
  463. this.$message.error("最多只能选择" + this.max + "人");
  464. return false;
  465. }
  466. this.employee_selected.push(item.id);
  467. this.employee_selected_list.push({
  468. id: item.id,
  469. name: item.name,
  470. img_url: item.img_url,
  471. });
  472. item.checked = true;
  473. }
  474. },
  475. select_dept(item) {
  476. if (!this.can_select_dept) {
  477. this.show_child(item);
  478. return false;
  479. }
  480. if (item.checked) {
  481. item.checked = false;
  482. this.dept_cancel(item);
  483. } else {
  484. if (!this.dept_multi) {
  485. this.dept_selected = [];
  486. this.dept_selected_list = [];
  487. for (let i in this.dept_list) {
  488. this.$set(this.dept_list[i], "checked", false);
  489. }
  490. }
  491. this.dept_selected.push(item.id);
  492. this.dept_selected_list.push({
  493. dept_id: item.id,
  494. dept_name: item.name,
  495. avatar: "static/images/e66f.jpg",
  496. // avatar: "@/assets/image/e66f.jpg",
  497. });
  498. item.checked = true;
  499. }
  500. },
  501. clear_data() {
  502. this.employee_selected = [];
  503. this.employee_selected_list = [];
  504. this.dept_selected = [];
  505. this.dept_selected_list = [];
  506. this.checked = false;
  507. for (let i in this.list) {
  508. this.$set(this.list[i], "checked", false);
  509. }
  510. for (let i in this.dept_list) {
  511. this.$set(this.dept_list[i], "checked", false);
  512. }
  513. },
  514. close() {
  515. //this.visible = false
  516. this.$emit("update:visible", false);
  517. this.$emit("cancel");
  518. if (this.close_clear_data) {
  519. this.employee_selected = [];
  520. this.employee_selected_list = [];
  521. this.dept_selected = [];
  522. this.dept_selected_list = [];
  523. for (let i in this.list) {
  524. this.$set(this.list[i], "checked", false);
  525. }
  526. for (let i in this.dept_list) {
  527. this.$set(this.dept_list[i], "checked", false);
  528. }
  529. }
  530. },
  531. confirm() {
  532. this.$emit("confirm", {
  533. employee: this.employee_selected_list,
  534. dept: this.dept_selected_list,
  535. });
  536. this.close();
  537. },
  538. //获取部门列表
  539. get_dept_list() {
  540. if (this.employee_list.length > 0) {
  541. return;
  542. }
  543. this.$axios
  544. .get("/api/department/index", {
  545. params: {
  546. pid: this.pid,
  547. keyword: this.keyword,
  548. },
  549. })
  550. .then((res) => {
  551. console.log(res)
  552. for (let i in res.data.data.list) {
  553. res.data.data.list[i]["checked"] = false;
  554. if (this.dept_selected.indexOf(res.data.data.list[i].id) >= 0) {
  555. res.data.data.list[i]["checked"] = true;
  556. }
  557. }
  558. this.dept_list = res.data.data.list;
  559. this.owner_id = res.data.data.owner_id;
  560. this.company_info = res.data.data.company_info;
  561. if (res.data.data.dept_info == null) {
  562. this.dept_name = JSON.parse(
  563. JSON.stringify(res.data.data.company_info.name)
  564. );
  565. this.dept_id = 0;
  566. } else {
  567. this.dept_name = JSON.parse(
  568. JSON.stringify(res.data.data.dept_info.name)
  569. );
  570. this.dept_id = res.data.data.dept_info.id;
  571. }
  572. })
  573. .catch((e) => {});
  574. },
  575. //获取员工详情
  576. get_user_list() {
  577. var _this = this;
  578. var employee_selected_list = this.employee_selected_list;
  579. if (this.employee_list.length > 0) {
  580. let list = this.employee_list;
  581. for (let i in list) {
  582. list[i]["letter_index"] = "#";
  583. if (this.$store.getters.employee_map[list[i].id]) {
  584. list[i]["letter_index"] = this.$store.getters.employee_map[
  585. list[i].id
  586. ].letter_index;
  587. if (this.$store.getters.employee_map[list[i].id].img_url == "") {
  588. list[i]["img_url"] = "static/images/head_default.png";
  589. } else {
  590. list[i]["img_url"] = this.$store.getters.employee_map[
  591. list[i].id
  592. ].img_url;
  593. }
  594. }
  595. list[i]["checked"] = false;
  596. if (this.employee_selected.indexOf(list[i].id) >= 0) {
  597. list[i]["checked"] = true;
  598. }
  599. }
  600. this.list = list.sort((a, b) => {
  601. return a.letter_index.charCodeAt(0) - b.letter_index.charCodeAt(0);
  602. });
  603. return false;
  604. }
  605. this.list = [];
  606. this.$axios
  607. .get("/api/employee/index", {
  608. params: {
  609. dept_id: this.pid, //员工ID
  610. keywords: this.keyword, //搜索关键字
  611. page: 0,
  612. page_size: 2000,
  613. },
  614. })
  615. .then((res) => {
  616. var employee = res.data.data.list || [];
  617. employee.map((item) => {
  618. if (this.not_user && item.is_creator == 1) {
  619. item["show"] = false;
  620. } else {
  621. item["show"] = true;
  622. }
  623. item["checked"] = false;
  624. if (item.img_url == "") {
  625. item.img_url = "static/images/head_default.png";
  626. }
  627. for (var i in employee_selected_list) {
  628. //判断传进来的员工是否是员工集合里的,是就设为已点击状态
  629. if (employee_selected_list[i].id == item.id) {
  630. item["checked"] = true;
  631. }
  632. }
  633. });
  634. if (employee.length == employee_selected_list.length) {
  635. this.checked = true;
  636. }
  637. _this.list = employee;
  638. })
  639. .catch((e) => {
  640. _this.$message.error(e.data.msg);
  641. });
  642. },
  643. },
  644. created() {
  645. if (document.documentElement.style.height) {
  646. this.com_height = document.documentElement.style.height;
  647. }
  648. setTimeout(() => {
  649. if (this.$route.query.pid) {
  650. this.pid = this.$route.query.pid;
  651. }
  652. this.get_user_list();
  653. this.get_dept_list();
  654. }, 200);
  655. },
  656. };
  657. </script>
  658. <style scoped>
  659. .employee_selector_box {
  660. width: 600px;
  661. padding: 24px;
  662. }
  663. /* 搜索框 */
  664. .employee_selector_box .search {
  665. width: 82%;
  666. position: relative;
  667. display: flex;
  668. left: 10%;
  669. padding: 0;
  670. border: 1px #c0c4cc solid;
  671. border-radius: 18.5px;
  672. }
  673. .employee_selector_box .search-box button {
  674. display: inline-block;
  675. vertical-align: middle;
  676. margin-left: 10px;
  677. width: auto;
  678. padding: 0;
  679. background: none;
  680. border-radius: 0px;
  681. border: none;
  682. }
  683. .employee_selector_box .search-box /deep/ .el-input {
  684. display: inline-block;
  685. width: 84%;
  686. padding: 0 24px 0 6px;
  687. background: none;
  688. border-radius: 0px;
  689. border: none;
  690. }
  691. .employee_selector_box .search-box /deep/ .el-input input {
  692. padding: 0;
  693. line-height: 34px;
  694. border: none;
  695. }
  696. /* /搜索框 */
  697. /* 左边框 */
  698. .employee_selector_box .choose_left {
  699. padding: 8px 10px 8px 10px;
  700. }
  701. .employee_selector_box .choose_left .employee_cell {
  702. border-bottom: 1px #f8f8f8 solid;
  703. }
  704. .employee_selector_box .choose_left .employee_cell_a .employee_cell {
  705. border-bottom: none;
  706. }
  707. .employee_selector_box .choose_left .employee_checkbox {
  708. padding-left: 8px;
  709. }
  710. .employee_selector_box .choose_left .employee_img_url {
  711. padding-left: 8px;
  712. }
  713. .employee_selector_box .choose_left .employee_name {
  714. padding-left: 8px;
  715. }
  716. .employee_selector_box /deep/ .el-scrollbar__thumb {
  717. width: 2px;
  718. margin: 15px 0 0 6px;
  719. background: #409eff;
  720. }
  721. /* 左边框 */
  722. /* 右边距 */
  723. .employee_selector_box .option-box {
  724. display: flex;
  725. justify-content: space-between;
  726. padding: 14px 0;
  727. }
  728. .employee_selector_box .option-box button {
  729. margin-right: 16px;
  730. }
  731. .employee_selector_box .choose_right {
  732. padding: 8px 10px;
  733. }
  734. .employee_selector_box .choose_right .employee_delete .el-button {
  735. transform: scale(0.5);
  736. background: #c0c4cc;
  737. }
  738. .employee_selector_box
  739. .choose_right
  740. .employee_delete
  741. .el-button
  742. /deep/
  743. .el-icon-close {
  744. color: #fff;
  745. }
  746. .employee_selector_box .choose_right .employee_delete .el-button:active {
  747. background: #409eff;
  748. }
  749. .employee_selector_box
  750. .choose_right
  751. .employee_delete
  752. .el-button:active
  753. /deep/
  754. .el-icon-close {
  755. color: #fff;
  756. }
  757. .employee_selector_box .choose_right .employee_cell .employee_name {
  758. padding-left: 8px;
  759. }
  760. .employee_selector_box .choose_right .employee_cell .employee_img_url {
  761. padding-left: 8px;
  762. }
  763. /* 右边距 */
  764. .employee_selector_box /deep/ .employee_cell {
  765. padding: 8px 0;
  766. }
  767. .employee_selector_box /deep/ .employee_cell:hover {
  768. background: #ecf5ff;
  769. }
  770. .employee_cell {
  771. display: -webkit-inline-box;
  772. cursor: pointer;
  773. width: 100%;
  774. color: #606266;
  775. padding: 8px 0;
  776. background-color: transparent;
  777. }
  778. .employee_cell .employee_cell_clear {
  779. clear: both;
  780. }
  781. .employee_cell .employee_img_url {
  782. display: table-cell;
  783. vertical-align: middle;
  784. width: 30px;
  785. padding-left: 0px;
  786. }
  787. .employee_cell .employee_img_url img {
  788. width: 24px;
  789. height: 24px;
  790. border-radius: 50%;
  791. }
  792. .employee_cell .employee_checkbox {
  793. display: table-cell;
  794. vertical-align: middle;
  795. width: 30px;
  796. text-align: center;
  797. }
  798. .employee_cell .employee_name {
  799. display: table-cell;
  800. vertical-align: middle;
  801. color: #606266;
  802. }
  803. .employee_delete {
  804. display: table-cell;
  805. text-align: right;
  806. padding-right: 0px;
  807. }
  808. .employee_cell_a {
  809. display: block;
  810. }
  811. .employee_cell_a:hover {
  812. background-color: #ecf5ff;
  813. border-radius: 4px;
  814. }
  815. .dept_child_cell {
  816. display: table-cell;
  817. vertical-align: middle;
  818. }
  819. .dept_child_cell span {
  820. float: right;
  821. padding-right: 8px;
  822. }
  823. .dept_child_cell span:hover {
  824. color: #1c1c1c;
  825. }
  826. .dept_child_cell span:active {
  827. color: #1c1c1c;
  828. }
  829. .scroller-box {
  830. height: 440px;
  831. padding-right: 0px !important;
  832. background-color: #fdfdfd;
  833. border: 1px solid #eee;
  834. border-radius: 4px;
  835. overflow: hidden;
  836. }
  837. /* .scroller-box.one{
  838. height: 440px;
  839. } */
  840. .col-line {
  841. position: relative;
  842. height: 400px;
  843. }
  844. .col-line:before {
  845. content: " ";
  846. width: 1px;
  847. height: 400px;
  848. position: absolute;
  849. top: 0;
  850. bottom: 0;
  851. left: 50%;
  852. background-color: #eee;
  853. }
  854. .search-box {
  855. background-color: #fff;
  856. padding: 14px 5px;
  857. border-bottom: 1px solid #eee;
  858. margin: 0 -5px;
  859. }
  860. .option-box {
  861. padding: 5px;
  862. background-color: #fff;
  863. border-bottom: 1px solid #eee;
  864. margin: 0 -5px;
  865. text-align: right;
  866. }
  867. .child_btn {
  868. color: #409eff;
  869. }
  870. .dept_path {
  871. margin: 10px 0;
  872. display: block;
  873. white-space: nowrap;
  874. overflow: auto;
  875. }
  876. /*滚动条的宽度*/
  877. .dept_path::-webkit-scrollbar {
  878. width: 5px;
  879. height: 5px;
  880. }
  881. /*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果*/
  882. .dept_path::-webkit-scrollbar-track {
  883. width: 6px;
  884. background-color: #fff0;
  885. -webkit-border-radius: 2em;
  886. -moz-border-radius: 2em;
  887. border-radius: 2em;
  888. }
  889. /*滚动条的设置*/
  890. .dept_path::-webkit-scrollbar-thumb {
  891. background-color: #fff0;
  892. background-clip: padding-box;
  893. min-height: 28px;
  894. -webkit-border-radius: 2em;
  895. -moz-border-radius: 2em;
  896. border-radius: 2em;
  897. }
  898. /*滚动条移上去的背景*/
  899. .dept_path:hover::-webkit-scrollbar-thumb {
  900. background-color: rgba(144, 147, 153, 0.3);
  901. }
  902. </style>