EmployeeTable.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805
  1. <template>
  2. <div>
  3. <el-alert class="diy-tip" title="温馨提示:" :closable="false" type="success" description show-icon>
  4. 当前组织架构成员通过微信通讯录同步,员工开启积分管理后才能正式启用并进入“功道云积分制”,如果您的微信通讯录有变动,点击
  5. <span class="blue" style="margin-left: 10px;cursor: pointer;" @click="tb()">
  6. <i class="el-icon-refresh"></i>
  7. 立即同步
  8. </span>
  9. </el-alert>
  10. <el-row class="architecture">
  11. <el-col :span="6" class="RuleLeft">
  12. <div>
  13. <div v-loading="ruleDeprt">
  14. <div class="company_name">
  15. <img src="static/images/two.png" />
  16. <span>组织架构</span>
  17. </div>
  18. <div ref="ruletree" class="department_box">
  19. <el-tree
  20. node-key="id"
  21. :expand-on-click-node="false"
  22. :data="bmList"
  23. class="cate-tree"
  24. :highlight-current="true"
  25. :props="{ children: 'children', label: 'name', value: 'id' }"
  26. @node-click="handleNodeClick"
  27. :accordion="true"
  28. empty-text="您暂无部门数据,请同步微信通讯录"
  29. >
  30. <div
  31. content="tree"
  32. class="custom-tree-node"
  33. slot-scope="{ node, data }"
  34. style="font-size: 14px;color: #606266; width:100%; text-align: left;"
  35. >
  36. <img src="static/images/one.png" style="width: 20px;margin-right: 5px;" />
  37. <span class="name"><WWOpenData type="departmentName" :openid="data.name"></WWOpenData></span>
  38. </div>
  39. </el-tree>
  40. </div>
  41. </div>
  42. </div>
  43. </el-col>
  44. <el-col :span="18" class="RuleRight">
  45. <el-button @click="participation()" :loading="enable_loading" size="medium" type="primary" style="margin-right: 10px;">批量启用积分管理</el-button>
  46. <el-input placeholder="输入同事姓名" maxlength="20" size="medium" style="width: 230px;" v-model="keywords" clearable @input="searchUser()"></el-input>
  47. <div style="color: #303133;font-size: 14px;padding:10px 0 0 0; line-height: 32px; overflow: hidden;"></div>
  48. <div class="list_box">
  49. <div style="margin-bottom:10px;margin-top:30px;" class="inline-block-btn-list"><div class="gap-right-8 fr" style="display:inline-block; width:180px;"></div></div>
  50. <el-table :data="userList" @selection-change="handleSelectionChange" v-loading="tableToading">
  51. <el-table-column type="selection" width="50" :selectable="isSelectable"></el-table-column>
  52. <el-table-column label="姓名">
  53. <template slot-scope="scope">
  54. <div class="flex-box flex-v-ce">
  55. <userImage :user_name="scope.row.name" :img_url="scope.row.img_url" width="44px" height="44px"></userImage>
  56. <div style="margin-left: 10px;"><WWOpenData type="userName" :openid="scope.row.name"></WWOpenData></div>
  57. </div>
  58. </template>
  59. </el-table-column>
  60. <el-table-column label="部门">
  61. <template slot-scope="scope">
  62. <div class="" style="">
  63. <span v-for="(item, index) in scope.row.employee_detail.dept_list" :key="index">
  64. <div v-if="item.depart_id !== 1">
  65. <WWOpenData type="departmentName" :openid="item.depart_name"></WWOpenData>
  66. <span v-if="scope.row.employee_detail.dept_list.length - index > 1">,</span>
  67. </div>
  68. </span>
  69. </div>
  70. </template>
  71. </el-table-column>
  72. <el-table-column prop="accedence_time" label="入职时间">
  73. <template slot-scope="scope">
  74. <div class="tabaccTIme" v-loading="scope.row.entryIf">
  75. <el-date-picker
  76. @change="entryclick(scope.row)"
  77. clear-icon="el-icon-circle-close"
  78. v-model="scope.row.accedence_time"
  79. type="date"
  80. format="yyyy-MM-dd"
  81. value-format="timestamp"
  82. placeholder="选择日期时间"
  83. :clearable="false"
  84. ></el-date-picker>
  85. </div>
  86. </template>
  87. </el-table-column>
  88. <el-table-column label="启用积分管理">
  89. <template slot="header" slot-scope="scope">
  90. <el-popover placement="top-start" width="300" trigger="manual" v-model="visible">
  91. <div class="el-popover2">
  92. <div class="title">
  93. 提示
  94. <i class="el-icon-info" style="margin-left: 5px;"></i>
  95. </div>
  96. <div style="margin-bottom: 10px;">在这里启用积分管理,即可进入系统</div>
  97. <div class="flex-box">
  98. <div class="flex-1"></div>
  99. <el-button size="small" @click="visible_close()">我知道了</el-button>
  100. </div>
  101. </div>
  102. <div slot="reference" class="popover" @click="visible = !visible">启用积分管理</div>
  103. </el-popover>
  104. </template>
  105. <template slot-scope="scope">
  106. <div :class="[scope.row.is_official == 1 ? 'switch-box' : '']" @click="changeIs(scope.row.is_official, scope.row.id)"><div class="switch"></div></div>
  107. </template>
  108. </el-table-column>
  109. <el-table-column prop="id" label="操作" >
  110. <template slot-scope="scope">
  111. <el-link type="primary" :disabled="scope.row.is_creator == 1 || scope.row.is_official == 0" @click="moreMessage(scope.row.id)" :underline="false">更多信息</el-link>
  112. </template>
  113. </el-table-column>
  114. <template slot="empty">
  115. <noData></noData>
  116. </template>
  117. </el-table>
  118. <el-pagination
  119. @size-change="handleSizeChange"
  120. @current-change="handleCurrentChange"
  121. :current-page="page"
  122. :page-sizes="[10, 20, 50, 100]"
  123. :page-size="perPage"
  124. layout="total,sizes, prev, pager, next"
  125. :total="total"
  126. ></el-pagination>
  127. </div>
  128. </el-col>
  129. </el-row>
  130. <el-dialog :close-on-click-modal="false" ref="EditInformation_list" title="员工详情" width="500px" :visible.sync="diaTableVisible">
  131. <div style="padding-right:20px;">
  132. <el-form ref="detailForm" v-loading="show_loading">
  133. <el-form-item label="管理上级" prop="name" :label-width="'100px'">
  134. <div class="input-box" @click="setSuperior()">
  135. <div v-if="superior_list.length==0" class="fontColorT">暂无管理上级</div>
  136. <div v-else>
  137. <span v-for="(item,index) in superior_list">
  138. <WWOpenData type="userName" :openid="item.name"></WWOpenData>,
  139. </span>
  140. </div>
  141. </div>
  142. </el-form-item>
  143. <el-form-item label="直属上级" prop="name" :label-width="'100px'">
  144. <div class="input-box" @click="dirSuperior()">
  145. <div v-if="dirSupervisor.id"><WWOpenData type="userName" :openid="dirSupervisor.name"></WWOpenData></div>
  146. <div v-else class="fontColorT">暂无直属上级</div>
  147. </div>
  148. </el-form-item>
  149. </el-form>
  150. </div>
  151. </el-dialog>
  152. <!-- 设置管理上级 -->
  153. <!-- :employee_list="manageListData"
  154. :user_employee_list="true" -->
  155. <EmployeeSelector
  156. title="管理上级"
  157. :visible.sync="manageScope_show"
  158. :is_filtration_creator="false"
  159. :multi="true"
  160. :selected="selected_manage"
  161. @confirm="manage_confirm"
  162. />
  163. <!-- 直属上级 -->
  164. <EmployeeSelector
  165. title="直属上级"
  166. :visible.sync="scope_loading"
  167. :is_filtration_creator="false"
  168. :isChecKedAll="false"
  169. :multi="false"
  170. :employee_list="superior_list"
  171. :user_employee_list="true"
  172. :selected="selected_manage"
  173. @confirm="dirSup_confirm"
  174. />
  175. </div>
  176. </template>
  177. <script>
  178. import noData from '@/components/noData';
  179. import EmployeeSelector from '@/views/common/EmployeeSelector'
  180. import { _debounce } from '@/api/auth';
  181. export default {
  182. components: {noData,EmployeeSelector},
  183. data() {
  184. return {
  185. is: 1,
  186. no: 0,
  187. page: 1,
  188. perPage: 10,
  189. total: 0,
  190. info: {}, //公司信息
  191. bmList: [],
  192. userList: [],
  193. keywords: '',
  194. dept_id: 0,
  195. tableToading: false,
  196. selectIds: [],
  197. enable_loading: false,
  198. visible: false,
  199. ruleDeprt: false,
  200. // 设置上级
  201. newId: 0,
  202. diaTableVisible: false,
  203. show_loading:false,
  204. manageScope_show: false, //管理上级
  205. scope_loading: false, //直接上级
  206. userInfo: {},
  207. superior_list: [], //用户上级
  208. dirSupervisor:{}, //用户直属上级
  209. employeeAll:[],//启用的人员列表
  210. manageListData: [],//公司管理员列表
  211. employeeList: [],
  212. selected_manage: { employee: [], dept: [] },
  213. };
  214. },
  215. watch: {
  216. dept_id(val) {
  217. this.getEmployee();
  218. }
  219. },
  220. created() {
  221. this.getInfo();
  222. this.getEmployee();
  223. },
  224. mounted() {
  225. this.filtration();
  226. // this.manageList();
  227. },
  228. methods: {
  229. manage_confirm(date) {
  230. let manageId = [];
  231. date.employee.forEach(item => manageId.push(item.id))
  232. let data = {
  233. employee_id: this.newId,
  234. manage_id: manageId
  235. }
  236. this.$http('post', '/api/employee/superior', data).then(res =>{
  237. this.$message.success('设置成功');
  238. this.moreMessage();
  239. })
  240. },
  241. dirSup_confirm(date){
  242. let data = {
  243. employee_ids: [this.newId],
  244. superior_id: date.employee.length > 0 ? date.employee[0].id : null
  245. }
  246. this.$http('post','/api/employee/directly_superior',data).then(res =>{
  247. this.$message.success('设置成功');
  248. this.moreMessage();
  249. })
  250. },
  251. setSuperior(){
  252. this.selected_manage.employee =JSON.parse(JSON.stringify(this.superior_list));
  253. this.manageScope_show = true
  254. },
  255. dirSuperior(row){
  256. if(this.dirSupervisor.id){
  257. this.selected_manage.employee = [this.dirSupervisor]
  258. }else{
  259. this.selected_manage.employee = []
  260. }
  261. this.scope_loading = true
  262. },
  263. moreMessage(id) {
  264. if(id){
  265. this.newId = id
  266. }
  267. this.diaTableVisible = true
  268. this.show_loading = true
  269. this.$http('get', '/api/employee/info', { id: this.newId }).then(res=>{
  270. let data = res.data.data
  271. this.userInfo = data
  272. if(data.employee_detail.superior_list){
  273. let employeeD = data.employee_detail
  274. if(employeeD.superior_id != 0){
  275. this.dirSupervisor = employeeD.superior_list.filter(x => x.id == employeeD.superior_id)[0]||{}
  276. }else{
  277. this.dirSupervisor = {}
  278. }
  279. // 过滤已经离职人员
  280. this.superior_list=[...this.employeeAll].filter(x => [...employeeD.superior_list].some(y => y.id === x.id));
  281. }
  282. }).finally(() =>{
  283. this.show_loading = false
  284. })
  285. },
  286. // 所有已启用的人员
  287. filtration() {
  288. this.$http('get', '/api/employee/index', {page: 0, page_size: 3000,is_official:1 }).then(res => {
  289. this.employeeAll = res.data.data.list;
  290. });
  291. },
  292. //管理列表
  293. manageList(){
  294. let params = {
  295. roles: ['creator', 'admin', 'point_manager', 'dept_manager']
  296. }
  297. this.$http('get', '/api/employee/role_employee', params).then(res =>{
  298. if(res.data.code == 1){
  299. this.manageListData = res.data.data.list
  300. }
  301. })
  302. },
  303. entryclick(row) {
  304. let data = {
  305. employee_id: row.id,
  306. accedence_time: row.accedence_time / 1000
  307. };
  308. row.entryIf = true;
  309. this.$http('post', '/api/employee/accedence_time', data)
  310. .then(res => {
  311. if (res.data.code == 1) {
  312. }
  313. })
  314. .finally(() => {
  315. row.entryIf = false;
  316. });
  317. },
  318. //同步信息
  319. tb() {
  320. this.$http('get', '/api/sync').then(res => {
  321. if (res.data.code == 1) {
  322. this.$message.success({ message: '正在同步,请稍候刷新页面查看同步结果' });
  323. }
  324. });
  325. },
  326. //搜索
  327. searchUser: _debounce(function() {
  328. this.page = 1;
  329. this.getEmployee();
  330. }),
  331. //是否开通
  332. changeIs(e, id) {
  333. if(e==1){
  334. this.$confirm("禁用后,相关人员将不再允许进入积分系统,并且移除其上下级管理关系,确认禁用吗?", "提示", {
  335. confirmButtonText: "确定",
  336. cancelButtonText: "取消",
  337. type: "warning",
  338. }).then(() => {
  339. var url = e == 1 ? '/api/employee/disable' : '/api/employee/enable';
  340. this.$http('post', url, { employee_id: [id] }).then(res => {
  341. if (res) {
  342. if (e == 0) {
  343. this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
  344. } else {
  345. this.$message.success({ message: res.data.msg });
  346. }
  347. this.getEmployee();
  348. }
  349. });
  350. });
  351. }else{
  352. var url = e == 1 ? '/api/employee/disable' : '/api/employee/enable';
  353. this.$http('post', url, { employee_id: [id] }).then(res => {
  354. if (res) {
  355. if (e == 0) {
  356. this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
  357. } else {
  358. this.$message.success({ message: res.data.msg });
  359. }
  360. this.getEmployee();
  361. }
  362. });
  363. }
  364. },
  365. //批量开通权限
  366. participation() {
  367. if (this.selectIds.length == 0) {
  368. this.$message.error({ message: '请选择参与的人员!' });
  369. return;
  370. }
  371. this.enable_loading = true;
  372. this.$http('post', '/api/employee/enable', { employee_id: this.selectIds })
  373. .then(res => {
  374. if (res) {
  375. this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
  376. this.getEmployee();
  377. }
  378. })
  379. .finally(err => {
  380. this.enable_loading = false;
  381. });
  382. },
  383. //获取公司信息
  384. getInfo(is) {
  385. this.ruleDeprt = true;
  386. this.$http('get', '/api/site/info').then(res => {
  387. this.info = res.data.data;
  388. this.getDepartment(is);
  389. });
  390. },
  391. //选择员工
  392. handleSelectionChange(e) {
  393. var arr = [];
  394. for (var item in e) {
  395. arr.push(e[item].id);
  396. }
  397. this.selectIds = arr;
  398. },
  399. isSelectable: function(row, index) {
  400. return row.is_official != 1;
  401. },
  402. //点击部门
  403. handleNodeClick(e) {
  404. this.page = 1;
  405. this.dept_id = e.id;
  406. },
  407. //获取部门
  408. getDepartment() {
  409. this.ruleDeprt = true;
  410. this.$http('get', '/api/department/tree')
  411. .then(res => {
  412. var list = [
  413. {
  414. id: 0,
  415. name: this.info.name,
  416. children: res.data.data.list
  417. }
  418. ];
  419. this.bmList = list;
  420. })
  421. .finally(() => {
  422. this.ruleDeprt = false;
  423. });
  424. },
  425. //获取员工
  426. getEmployee() {
  427. this.tableToading = true;
  428. let params = {
  429. page: this.page,
  430. page_size: this.perPage,
  431. dept_id: this.dept_id,
  432. keywords: this.keywords
  433. };
  434. if (this.page == 0) {
  435. params.page = this.page;
  436. } else {
  437. params.page = this.page - 1;
  438. }
  439. this.$http('get', '/api/employee/index', params)
  440. .then(res => {
  441. this.total = res.data.data.pageInfo.count;
  442. let list = res.data.data.list;
  443. list.forEach(item => {
  444. item.entryIf = false;
  445. item.accedence_time *= 1000;
  446. });
  447. this.userList = list;
  448. var visible = localStorage.getItem('visible');
  449. if (!visible) {
  450. this.visible = true;
  451. }
  452. })
  453. .finally(err => {
  454. this.tableToading = false;
  455. });
  456. },
  457. visible_close() {
  458. localStorage.setItem('visible', 'true');
  459. this.visible = false;
  460. },
  461. handleSizeChange: function(val) {
  462. this.perPage = val;
  463. this.page = 1;
  464. this.getEmployee();
  465. },
  466. //页码变更
  467. handleCurrentChange: function(val) {
  468. this.page = val;
  469. this.getEmployee();
  470. }
  471. }
  472. };
  473. </script>
  474. <style lang="scss" scoped>
  475. .input-box{
  476. -webkit-appearance: none;
  477. background-color: #FFF;
  478. background-image: none;
  479. border-radius: 4px;
  480. border: 1px solid #DCDFE6;
  481. box-sizing: border-box;
  482. color: #606266;
  483. display: inline-block;
  484. font-size: inherit;
  485. height: 40px;
  486. line-height: 40px;
  487. outline: 0;
  488. padding: 0 15px;
  489. transition: border-color .2s cubic-bezier(.645,.045,.355,1);
  490. width: 100%;
  491. overflow: hidden;
  492. text-overflow: ellipsis;
  493. white-space: nowrap;
  494. }
  495. .name {
  496. text-overflow: ellipsis;
  497. display: inline-block;
  498. white-space: nowrap;
  499. overflow: hidden;
  500. width: 120px;
  501. }
  502. .administration {
  503. color: #e6a23c;
  504. border: 1px solid #e6a23c;
  505. border-radius: 2px;
  506. font-size: 12px;
  507. margin-left: 4px;
  508. padding: 2px;
  509. }
  510. .el-table th > .cell {
  511. font-weight: normal;
  512. }
  513. .el-table .has-gutter th > .cell {
  514. background-color: #fff;
  515. font-size: 14px;
  516. color: #909399;
  517. font-weight: normal;
  518. }
  519. .title {
  520. color: #303133;
  521. font-size: 20px;
  522. }
  523. .el-button--text {
  524. color: #606266;
  525. }
  526. .add {
  527. color: #26a2ff;
  528. font-size: 14px;
  529. //padding-top: 20px;
  530. cursor: pointer;
  531. }
  532. .el-pagination {
  533. text-align: center;
  534. margin-top: 15px;
  535. }
  536. .arrRotation {
  537. transform: rotate(180deg);
  538. }
  539. .treeActice {
  540. color: #606266;
  541. }
  542. .treeIcon {
  543. display: none;
  544. }
  545. .custom-tree-node {
  546. // display: flex;
  547. //flex-direction:row;
  548. // justify-content: space-between;
  549. // width: 100%;
  550. margin-left: -4px;
  551. }
  552. .custom-tree-node * {
  553. vertical-align: middle;
  554. }
  555. .custom-tree-node:hover {
  556. .treeIcon {
  557. display: inline-block;
  558. width: 55%;
  559. }
  560. }
  561. .item:hover {
  562. .blueTree {
  563. display: block;
  564. }
  565. .iconTree {
  566. display: none;
  567. }
  568. }
  569. .blueTree {
  570. display: none;
  571. }
  572. el-tooltip {
  573. display: none;
  574. }
  575. .add {
  576. color: #26a2ff;
  577. font-size: 14px;
  578. //padding-top: 20px;
  579. cursor: pointer;
  580. }
  581. .architecture {
  582. display: flex;
  583. text-align: center;
  584. // margin-top:20px;
  585. padding-left: 0px;
  586. background-color: #fff;
  587. width: 100%;
  588. overflow: hidden;
  589. cursor: default;
  590. min-height: calc(100vh - 160px);
  591. }
  592. .architecture .RuleLine {
  593. display: table-cell;
  594. width: 1px;
  595. min-height: 600px;
  596. background: #efefef;
  597. }
  598. .architecture .RuleLeft {
  599. display: block;
  600. text-align: center;
  601. padding: 20px 10px;
  602. border-right: none;
  603. overflow: auto;
  604. }
  605. /*滚动条的宽度*/
  606. .architecture .RuleLeft::-webkit-scrollbar {
  607. width: 9px;
  608. height: 9px;
  609. }
  610. /*外层轨道。可以用display:none让其不显示,也可以添加背景图片,颜色改变显示效果*/
  611. .architecture .RuleLeft::-webkit-scrollbar-track {
  612. width: 6px;
  613. background-color: #fff0;
  614. -webkit-border-radius: 2em;
  615. -moz-border-radius: 2em;
  616. border-radius: 2em;
  617. }
  618. /*滚动条的设置*/
  619. .architecture .RuleLeft::-webkit-scrollbar-thumb {
  620. background-color: #fff0;
  621. background-clip: padding-box;
  622. min-height: 28px;
  623. -webkit-border-radius: 2em;
  624. -moz-border-radius: 2em;
  625. border-radius: 2em;
  626. }
  627. /*滚动条移上去的背景*/
  628. .architecture .RuleLeft:hover::-webkit-scrollbar-thumb {
  629. background-color: rgba(144, 147, 153, 0.3);
  630. }
  631. .architecture .RuleLeft .company_name {
  632. position: relative;
  633. display: block;
  634. font-family: 'Microsoft YaHei';
  635. text-align: left;
  636. padding: 15px 28px 17px;
  637. cursor: pointer;
  638. overflow: hidden;
  639. white-space: nowrap;
  640. text-overflow: ellipsis;
  641. border-bottom: 1px #f8f8f8 solid;
  642. }
  643. .architecture .RuleLeft .company_name img {
  644. position: relative;
  645. display: inline-block;
  646. top: 2px;
  647. width: 18px;
  648. height: 18px;
  649. margin-right: 4px;
  650. }
  651. .architecture .RuleLeft /deep/ .el-button {
  652. margin-bottom: 16px !important;
  653. }
  654. .architecture .RuleRight {
  655. position: relative;
  656. display: table-cell;
  657. text-align: left;
  658. padding: 20px;
  659. }
  660. .architecture .RuleRight .title span .sapn {
  661. display: inline-block;
  662. vertical-align: middle;
  663. max-width: 600px;
  664. overflow: hidden;
  665. white-space: nowrap;
  666. text-overflow: ellipsis;
  667. }
  668. .architecture .RuleRight:after {
  669. content: ' ';
  670. position: absolute;
  671. top: 0;
  672. left: 0;
  673. bottom: 0;
  674. width: 1px;
  675. background: #ebeef5;
  676. }
  677. .architecture .RuleRight .list_box {
  678. width: 100%;
  679. background: #fff;
  680. }
  681. .architecture .RuleRight .list_box /deep/ table {
  682. font-family: 'Microsoft YaHei';
  683. width: 100% !important;
  684. /*max-width:1920px; */
  685. }
  686. .architecture .department_box {
  687. }
  688. .architecture .department_box /deep/ .el-tree-node {
  689. display: block;
  690. text-align: center;
  691. }
  692. .architecture .department_box /deep/ .el-tree-node__content {
  693. // padding-left:24px !important;
  694. height: auto !important;
  695. }
  696. .architecture .department_box /deep/ .el-tree-node .el-icon-caret-right {
  697. display: inline-block;
  698. color: #909399;
  699. font-size: 16px;
  700. padding: 6px 8px;
  701. }
  702. .architecture .department_box /deep/ .el-tree-node .el-icon-caret-right.is-leaf {
  703. color: transparent;
  704. cursor: default;
  705. }
  706. .architecture .department_box /deep/ .el-tree-node .custom-tree-node img {
  707. margin-top: 0px;
  708. width: 20px;
  709. }
  710. .architecture .department_box /deep/ .el-tree-node .custom-tree-node span {
  711. }
  712. .architecture .department_box /deep/ .el-tree-node__content {
  713. padding: 12px 0;
  714. border-bottom: 1px #f8f8f8 solid;
  715. }
  716. .architecture .department_box /deep/ .el-tree-node__content:hover {
  717. background: #ecf5ff;
  718. border-radius: 4px;
  719. }
  720. .architecture .department_box /deep/ .is-focusable .is-current {
  721. border-radius: 4px;
  722. }
  723. .architecture .department_box /deep/ .is-focusable .is-current .name {
  724. color: #409eff;
  725. font-weight: normal;
  726. transition: 0.35s ease-in-out;
  727. }
  728. .diy-tip {
  729. margin-bottom: 15px;
  730. border: 1px solid #67c23a;
  731. padding: 20px 16px;
  732. p {
  733. color: #67c23a !important;
  734. font-size: 14px;
  735. margin: 0 !important;
  736. padding: 4px 0;
  737. }
  738. }
  739. .switch {
  740. margin: 0;
  741. display: inline-block;
  742. position: relative;
  743. width: 40px; height: 20px;
  744. border: 1px solid #dcdfe6;
  745. outline: none; border-radius: 10px;
  746. box-sizing: border-box;
  747. background: #dcdfe6; cursor: pointer;
  748. transition: border-color 0.3s, background-color 0.3s;
  749. vertical-align: middle;
  750. }
  751. .switch:after {
  752. content: '';
  753. position: absolute;
  754. top: 1px;
  755. left: 1px; border-radius: 100%;
  756. transition: all 0.3s;
  757. width: 16px;
  758. height: 16px; background-color: #fff;
  759. }
  760. .switch-box .switch {
  761. border-color: #409eff;
  762. background-color: #409eff;
  763. }
  764. .switch-box .switch:after { left: 100%;
  765. margin-left: -17px;
  766. }
  767. /deep/ .tabaccTIme {
  768. width: 100px;
  769. .el-input__inner {
  770. border: 0;
  771. background-color: transparent;
  772. cursor: pointer;
  773. padding: 0;
  774. width: 100px;
  775. }
  776. .el-input__prefix {
  777. display: none;
  778. }
  779. }
  780. </style>