index.vue 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669
  1. <!--系统用户管理-->
  2. <template>
  3. <div class="app-container user">
  4. <el-row :gutter="20" style="flex:1;display: flex;overflow: hidden">
  5. <!--部门数据-->
  6. <el-col :span="4" :xs="24" stlye="width:260px;" class=" scrollbar-box">
  7. <div class="head-container">
  8. <el-tree
  9. highlight-current
  10. :data="deptOptions"
  11. :props="defaultProps"
  12. icon-class=""
  13. :expand-on-click-node="false"
  14. :filter-node-method="filterNode"
  15. ref="tree"
  16. default-expand-all
  17. @node-click="handleNodeClick"
  18. />
  19. </div>
  20. </el-col>
  21. <!--用户数据-->
  22. <el-col :span="20" :xs="24" style="flex:1;display: flex;flex-direction: column;">
  23. <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch">
  24. <el-form-item label="" prop="searchValue" label-width="68px">
  25. <el-input
  26. v-model="queryParams.searchValue"
  27. placeholder="用户名称/联系方式"
  28. clearable
  29. style="width: 240px"
  30. />
  31. </el-form-item>
  32. <el-form-item label="" prop="state">
  33. <el-select
  34. v-model="queryParams.state"
  35. placeholder="请选择状态"
  36. clearable
  37. style="width: 240px"
  38. >
  39. <el-option
  40. v-for="dict in stateOptions"
  41. :key="dict.dictValue"
  42. :label="dict.dictLabel"
  43. :value="dict.dictValue"
  44. />
  45. </el-select>
  46. </el-form-item>
  47. <el-form-item label="">
  48. <el-date-picker
  49. :clearable="false"
  50. v-model="dateRange"
  51. size="small"
  52. style="width: 240px"
  53. value-format="yyyy-MM-dd"
  54. type="daterange"
  55. range-separator="-"
  56. start-placeholder="创建时间"
  57. end-placeholder="创建时间"
  58. ></el-date-picker>
  59. </el-form-item>
  60. <p class="page-inquire-common-style-button" @click="handleQuery">查询</p>
  61. <p class="page-reset-common-style-button" @click="resetQuery">重置</p>
  62. <p class="page-submit-common-style-button"
  63. style="float: right;"
  64. @click="handleAdd"
  65. v-hasPermiRouter="['system:user:add']"
  66. >新增</p>
  67. </el-form>
  68. <el-table class="table-box min-list-box" v-loading="loading" border :data="userList">
  69. <el-table-column label="账号" align="left" key="account" prop="account" show-overflow-tooltip/>
  70. <el-table-column label="用户昵称" align="left" key="userName" prop="userName" show-overflow-tooltip/>
  71. <el-table-column label="归属部门" align="left" key="deptName" prop="deptName" show-overflow-tooltip/>
  72. <el-table-column label="联系方式" align="left" key="mobile" prop="mobile" width="200" show-overflow-tooltip />
  73. <el-table-column label="状态" align="left" key="state" width="120" show-overflow-tooltip>
  74. <template slot-scope="scope">
  75. <el-switch
  76. @click.native="handleStatusChange(scope.row)"
  77. class="switch captcha-img"
  78. :active-value="true"
  79. :inactive-value="false"
  80. active-color="#0183FA"
  81. inactive-color="#999"
  82. v-model="scope.row.state"
  83. active-text="启用"
  84. inactive-text="停用"
  85. disabled
  86. ></el-switch>
  87. </template>
  88. </el-table-column>
  89. <el-table-column label="创建时间" align="left" prop="createTime" width="160" show-overflow-tooltip>
  90. <template slot-scope="scope">
  91. <span>{{ parseTime(scope.row.createTime,"{y}-{m}-{d} {h}:{i}") }}</span>
  92. </template>
  93. </el-table-column>
  94. <el-table-column
  95. label="操作"
  96. align="left"
  97. width="220"
  98. class-name="small-padding fixed-width"
  99. v-if="tableButtonType">
  100. <template slot-scope="scope">
  101. <div class="table-button-box">
  102. <p class="table-button-null"></p>
  103. <p class="table-button-p"
  104. @click="handleUpdate(scope.row)"
  105. v-hasPermiRouter="['system:user:edit']"
  106. >修改</p>
  107. <p class="table-button-p"
  108. @click="handleDelete(scope.row)"
  109. v-hasPermiRouter="['system:user:del']"
  110. >删除</p>
  111. <el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)"
  112. v-hasPermiRouter="['system:user:reset']">
  113. <span class="table-button-p">更多>></span>
  114. <el-dropdown-menu slot="dropdown">
  115. <el-dropdown-item command="handleResetPwd">修改密码</el-dropdown-item>
  116. </el-dropdown-menu>
  117. </el-dropdown>
  118. <p class="table-button-null"></p>
  119. </div>
  120. </template>
  121. </el-table-column>
  122. </el-table>
  123. <pagination :page-sizes="[20, 30, 40, 50]"
  124. v-show="total>0"
  125. :total="total"
  126. layout="total, prev, pager, next, sizes, jumper"
  127. :page.sync="queryParams.page"
  128. :limit.sync="queryParams.pageSize"
  129. @pagination="getList"
  130. />
  131. </el-col>
  132. </el-row>
  133. <!-- 添加或修改参数配置对话框 -->
  134. <el-dialog :title="title" :visible.sync="open" width="630px" append-to-body :close-on-click-modal="false">
  135. <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  136. <el-row>
  137. <el-col :span="12">
  138. <el-form-item label="用户名" prop="userName">
  139. <el-input v-model="form.userName" placeholder="请输入用户名" maxlength="30" style="width:200px;" />
  140. </el-form-item>
  141. </el-col>
  142. <el-col :span="12">
  143. <el-form-item label="联系方式" prop="mobile">
  144. <el-input v-model="form.mobile" placeholder="请输入联系方式" maxlength="11" style="width:200px;"/>
  145. </el-form-item>
  146. </el-col>
  147. </el-row>
  148. <el-row>
  149. <el-col :span="12">
  150. <el-form-item label="归属部门" prop="deptId">
  151. <treeselect v-model="form.deptId" :options="deptOptions"
  152. :normalizer="normalizer" :show-count="true"
  153. placeholder="请选择上级部门" style="width:200px;"/>
  154. </el-form-item>
  155. </el-col>
  156. <el-col :span="12">
  157. <el-form-item label="角色" prop="roleIds">
  158. <!--<el-select v-model="form.roleIds" placeholder="请选择" style="width:200px;">-->
  159. <el-select v-model="form.roleIds" collapse-tags
  160. placeholder="请选择" style="width:200px;">
  161. <el-option
  162. v-for="item in roleOptions"
  163. :key="item.roleId"
  164. :label="item.roleName"
  165. :value="item.roleId"
  166. ></el-option>
  167. </el-select>
  168. </el-form-item>
  169. </el-col>
  170. </el-row>
  171. <el-row>
  172. <el-col :span="12">
  173. <el-form-item v-if="!form.userId" label="账号" prop="account">
  174. <el-input v-model="form.account" placeholder="请输入账号" maxlength="30" style="width:200px;"/>
  175. </el-form-item>
  176. </el-col>
  177. <el-col :span="12">
  178. <el-form-item v-if="!form.userId" label="密码" prop="password">
  179. <el-input v-model="form.password" placeholder="请输入密码" type="password" maxlength="20" show-password style="width:200px;"/>
  180. </el-form-item>
  181. </el-col>
  182. </el-row>
  183. <el-row>
  184. <el-col :span="12">
  185. <el-form-item label="状态" prop="state">
  186. <el-radio-group v-model="form.state" style="width:200px;">
  187. <el-radio
  188. v-for="dict in stateOptions"
  189. :key="dict.dictValue"
  190. :label="dict.dictValue"
  191. >{{dict.dictLabel}}</el-radio>
  192. </el-radio-group>
  193. </el-form-item>
  194. </el-col>
  195. </el-row>
  196. </el-form>
  197. <div slot="footer" class="dialog-footer dialog-footer-box">
  198. <p class="dialog-footer-button-null"></p>
  199. <p class="dialog-footer-button-info" @click="cancel">取消</p>
  200. <p class="dialog-footer-button-primary" @click="submitForm">提交</p>
  201. <p class="dialog-footer-button-null"></p>
  202. </div>
  203. </el-dialog>
  204. <!--修改密码-->
  205. <el-dialog title="修改密码" :visible.sync="reviseOpen" width="600px" append-to-body class="teacher-revise-dialog-box">
  206. <el-form :model="passwordForm" ref="passwordForm" :inline="true" :rules="rules" class="addCheckPage-min">
  207. <el-form-item label="新密码" prop="password" label-width="110px" >
  208. <el-input type="password" v-model="passwordForm.password" clearable maxlength="20" style="width:420px;" placeholder="请输入新密码"/>
  209. </el-form-item>
  210. <el-form-item label="确认新密码" prop="newPassword" label-width="110px">
  211. <el-input type="password" v-model="passwordForm.newPassword" clearable maxlength="20" style="width:420px;" placeholder="请确认新密码"/>
  212. </el-form-item>
  213. </el-form>
  214. <!--<p class="teacher-text-p">确定要重置该账号的密码吗?</p>-->
  215. <!--<p class="teacher-text-p">确定操作后,该账号密码将重置为系统初始密码。</p>-->
  216. <div slot="footer" class="dialog-footer dialog-footer-box">
  217. <p class="dialog-footer-button-null"></p>
  218. <p class="dialog-footer-button-info" @click="reviseOpenOff">取消</p>
  219. <p class="dialog-footer-button-primary" @click="putUserResetPwd">提交</p>
  220. <p class="dialog-footer-button-null"></p>
  221. </div>
  222. </el-dialog>
  223. </div>
  224. </template>
  225. <script>
  226. import { listUser, getUser, delUser, addUser, updateUser, resetUserPwd, changeUserStatus } from "@/apiDemo/system/user";
  227. import { getToken } from "@/utils/auth";
  228. // import { treeselect } from "@/api/system/dept";
  229. import Treeselect from "@riophae/vue-treeselect";
  230. import "@riophae/vue-treeselect/dist/vue-treeselect.css";
  231. //V3新
  232. import { systemUserList,systemUserAdd,systemUserDetail,
  233. systemUserUpdate,systemUserEditState,systemUserDelete,systemUserEditPasswd,systemRoleDropList } from "@/api/commonality/permission";
  234. import { systemDeptOrganizeStructure } from "@/api/commonality/noPermission";
  235. import md5 from 'js-md5';
  236. export default {
  237. name: "User",
  238. components: { Treeselect },
  239. data() {
  240. const equalToPassword = (rule, value, callback) => {
  241. if (this.passwordForm.password !== value) {
  242. callback(new Error("两次输入的密码不一致"));
  243. } else {
  244. callback();
  245. }
  246. };
  247. return {
  248. tableButtonType:this.hasPermiDom(['system:user:edit','system:user:detail','system:user:del','system:user:reset']),
  249. // 遮罩层
  250. loading: true,
  251. // 选中数组
  252. ids: [],
  253. // 非单个禁用
  254. single: true,
  255. // 非多个禁用
  256. multiple: true,
  257. // 显示搜索条件
  258. showSearch: true,
  259. // 总条数
  260. total: 0,
  261. // 用户表格数据
  262. userList: null,
  263. // 弹出层标题
  264. title: "",
  265. // 部门树选项
  266. deptOptions: null,
  267. normalizer(node){
  268. //去掉children=[]的children属性
  269. if(node.children && !node.children.length){
  270. delete node.children;
  271. }
  272. return {
  273. id: node.deptId,
  274. parentId:node.parentId,
  275. label:node.deptName,
  276. deptNum:node.deptNum,
  277. deptType:node.deptType,
  278. children:node.child,
  279. }
  280. },
  281. // 是否显示弹出层
  282. open: false,
  283. // 部门名称
  284. deptName: undefined,
  285. // 默认密码
  286. initPassword: undefined,
  287. // 日期范围
  288. dateRange: [],
  289. // 状态数据字典
  290. stateOptions: [{dictValue:true,dictLabel:'启用'},{dictValue:false,dictLabel:'禁用'}],
  291. // 性别状态字典
  292. sexOptions: [],
  293. // 岗位选项
  294. postOptions: [],
  295. // 角色选项
  296. roleOptions: [],
  297. defaultProps: {
  298. children: "child",
  299. label: "deptName"
  300. },
  301. // 查询参数
  302. queryParams: {
  303. page:1,
  304. pageSize:20,
  305. userType:0,
  306. deptId:null,
  307. searchValue: null,
  308. state: null,
  309. },
  310. // 表单参数
  311. form: {
  312. userName:"",
  313. mobile:"",
  314. deptId:null,
  315. roleIds:[],
  316. account:"",
  317. password:"",
  318. state:true,
  319. },
  320. // 表单校验
  321. rules: {
  322. account: [
  323. { required: true, message: "请输入用户昵称", trigger: "blur" },
  324. { required: true, message: "请输入用户昵称", validator: this.spaceJudgment, trigger: "blur" }
  325. ],
  326. deptId: [
  327. { required: true, message: "请选择归属部门", trigger: "blur" },
  328. ],
  329. roleIds: [
  330. { required: true, message: "请选择角色", trigger: "blur" },
  331. ],
  332. state: [
  333. { required: true, message: "请选择状态", trigger: "blur" },
  334. ],
  335. userName: [
  336. { required: true, message: "用户名不能为空", trigger: "blur" },
  337. { required: true, message: "用户名不能为空", validator: this.spaceJudgment, trigger: "blur" }
  338. ],
  339. password: [
  340. { required: true, message: "用户密码不能为空", trigger: "blur" },
  341. { min: 5, max: 20, message: '用户密码长度必须介于 5 和 20 之间', trigger: 'blur' },
  342. { required: true, message: "用户密码不能为空", validator: this.spaceJudgment, trigger: "blur" }
  343. ],
  344. newPassword: [
  345. { required: true, message: "确认新密码不能为空", trigger: "blur" },
  346. { min: 5, max: 20, message: '确认新密码长度必须介于 5 和 20 之间', trigger: 'blur' },
  347. { required: true, validator: equalToPassword, trigger: "blur" }
  348. ],
  349. email: [
  350. {
  351. type: "email",
  352. message: "'请输入正确的邮箱地址",
  353. trigger: ["blur", "change"]
  354. }
  355. ],
  356. mobile: [
  357. { required: true, message: "请输入正确的联系方式", trigger: "blur" },
  358. { required: true, message: "请输入正确的联系方式", validator: this.spaceJudgment, trigger: "blur" },
  359. {
  360. pattern: /^1[3|4|5|6|7|8|9][0-9]\d{8}$/,
  361. message: "请输入正确的联系方式",
  362. trigger: "blur"
  363. }
  364. ]
  365. },
  366. // 重置密码弹层开关
  367. reviseOpen: false,
  368. passwordForm:{
  369. password:"",
  370. newPassword:"",
  371. },
  372. };
  373. },
  374. watch: {
  375. // 根据名称筛选部门树
  376. // deptName(val) {
  377. // this.$refs.tree.filter(val);
  378. // }
  379. },
  380. created() {
  381. this.systemDeptOrganizeStructure();
  382. this.getList();
  383. this.systemRoleDropList();
  384. },
  385. methods: {
  386. /*===========V3开始===========*/
  387. systemDeptOrganizeStructure(){
  388. systemDeptOrganizeStructure({deptName:this.inputDeptName}).then(response => {
  389. this.$set(this,'deptOptions',response.data);
  390. });
  391. },
  392. /** 查询用户列表 */
  393. getList() {
  394. this.loading = true;
  395. let obj = JSON.parse(JSON.stringify(this.queryParams))
  396. if(this.dateRange[0]){
  397. obj.startTime = this.dateRange[0]+'T00:00:00'
  398. obj.endTime = this.dateRange[1]+'T23:59:59'
  399. }else{
  400. obj.startTime = "";
  401. obj.endTime = "";
  402. }
  403. systemUserList(obj).then(response => {
  404. this.userList = response.data.records;
  405. this.total = response.data.total;
  406. this.loading = false;
  407. }
  408. );
  409. },
  410. //角色下拉列表
  411. systemRoleDropList(){
  412. systemRoleDropList({roleName :'',pageSize:10}).then(response => {
  413. this.roleOptions = response.data;
  414. }
  415. );
  416. },
  417. // 筛选节点
  418. filterNode(value, data) {
  419. if (!value) return true;
  420. return data.label.indexOf(value) !== -1;
  421. },
  422. // 节点单击事件
  423. handleNodeClick(data) {
  424. this.queryParams.deptId = data.deptId;
  425. this.getList();
  426. },
  427. // 用户状态修改
  428. handleStatusChange(row) {
  429. let text = row.state ? "停用" : "启用";
  430. this.$confirm('确认要' + text + '"' + row.userName + '"?', "警告", {
  431. confirmButtonText: "确定",
  432. cancelButtonText: "取消",
  433. type: "warning"
  434. }).then(function() {
  435. return systemUserEditState({userId:row.userId, state:!row.state});
  436. }).then(() => {
  437. this.getList();
  438. this.msgSuccess("操作成功");
  439. }).catch(function() {
  440. });
  441. },
  442. /** 新增按钮操作 */
  443. handleAdd() {
  444. this.reset();
  445. this.open = true;
  446. this.title = "添加用户";
  447. },
  448. /** 删除按钮操作 */
  449. handleDelete(row) {
  450. const userIds = row.userId || this.ids;
  451. this.$confirm('确认删除"'+row.userName+'"?', "警告", {
  452. confirmButtonText: "确定",
  453. cancelButtonText: "取消",
  454. type: "warning"
  455. }).then(function() {
  456. return systemUserDelete({userId:userIds});
  457. }).then(() => {
  458. this.getList();
  459. this.msgSuccess("删除成功");
  460. }).catch(() => {});
  461. },
  462. /** 修改按钮操作 */
  463. handleUpdate(row) {
  464. this.reset();
  465. systemUserDetail({userId:row.userId}).then(response => {
  466. let obj = {
  467. userId:response.data.userId,
  468. userName:response.data.userName,
  469. mobile:response.data.mobile,
  470. deptId:response.data.deptId,
  471. state:response.data.state,
  472. // roleIds:obj.roleIds[0]?response.data.roleIds.split(','):[],
  473. roleIds:response.data.roleIds[0]
  474. };
  475. this.$set(this,'form',JSON.parse(JSON.stringify(obj)));
  476. this.open = true;
  477. this.title = "修改用户";
  478. });
  479. },
  480. /** 提交按钮 */
  481. submitForm() {
  482. this.$refs["form"].validate(valid => {
  483. if (valid) {
  484. if (this.form.userId) {
  485. let obj = JSON.parse(JSON.stringify(this.form))
  486. obj.roleIds = obj.roleIds + '';
  487. systemUserUpdate(obj).then(response => {
  488. this.msgSuccess("修改成功");
  489. this.open = false;
  490. this.getList();
  491. });
  492. } else {
  493. let obj = JSON.parse(JSON.stringify(this.form))
  494. obj.password = md5(obj.password)
  495. obj.userType = 0;
  496. obj.roleIds = obj.roleIds + '';
  497. systemUserAdd(obj).then(response => {
  498. this.msgSuccess("新增成功");
  499. this.open = false;
  500. this.getList();
  501. });
  502. }
  503. }
  504. });
  505. },
  506. //关闭重置密码页面
  507. reviseOpenOff(){
  508. this.reviseOpen = false;
  509. this.resetPwdId = "";
  510. },
  511. //修改密码
  512. putUserResetPwd(){
  513. this.$refs["passwordForm"].validate(valid => {
  514. if (valid) {
  515. let obj = {
  516. userId : this.resetPwdId,
  517. password:md5(this.passwordForm.password)
  518. };
  519. systemUserEditPasswd(obj).then(response => {
  520. this.reviseOpen = false;
  521. this.msgSuccess("修改成功");
  522. });
  523. }
  524. });
  525. },
  526. /*===========V3结束===========*/
  527. // 取消按钮
  528. cancel() {
  529. this.open = false;
  530. this.reset();
  531. },
  532. // 表单重置
  533. reset() {
  534. this.$set(this,'form',{
  535. userName:"",
  536. mobile:"",
  537. deptId:null,
  538. roleIds:[],
  539. account:"",
  540. password:"",
  541. state:true,
  542. });
  543. },
  544. /** 搜索按钮操作 */
  545. handleQuery() {
  546. this.queryParams.page = 1;
  547. this.getList();
  548. },
  549. /** 重置按钮操作 */
  550. resetQuery() {
  551. this.dateRange = [];
  552. this.$set(this,'queryParams',{
  553. page:1,
  554. pageSize:20,
  555. userType:0,
  556. deptId:this.queryParams.deptId,
  557. searchValue: null,
  558. state: null,
  559. });
  560. this.handleQuery();
  561. },
  562. // 更多操作触发
  563. handleCommand(command, row) {
  564. switch (command) {
  565. case "handleResetPwd":
  566. this.reset();
  567. this.title = "修改密码";
  568. this.resetPwdId = row.userId;
  569. this.$set(this,'passwordForm',{
  570. password:"",
  571. newPassword:"",
  572. });
  573. this.reviseOpen = true;
  574. break;
  575. default:
  576. break;
  577. }
  578. },
  579. }
  580. };
  581. </script>
  582. <style scoped lang="scss">
  583. .user {
  584. display: flex!important;
  585. flex-direction: column;
  586. box-shadow: 0 0 8px 2px rgba(0, 0, 0, 0.1);
  587. padding:20px;
  588. overflow: hidden;
  589. }
  590. ::v-deep .head-container{
  591. /*==========树结构开始==========*/
  592. .el-tree-node__expand-icon.expanded {
  593. -webkit-transform: rotate(0deg)!important;
  594. transform: rotate(0deg)!important;
  595. }
  596. //未展开
  597. .el-icon-caret-right:before {
  598. content:"\e6d9";
  599. color:#999;
  600. font-size: 12px;
  601. border: 1px solid #999;;
  602. border-radius: 2px;
  603. }
  604. //展开
  605. .el-tree-node__expand-icon.expanded.el-icon-caret-right:before{
  606. content:"\e6d8";
  607. color:#999;
  608. font-size: 12px;
  609. border: 1px solid #999;;
  610. border-radius: 2px;
  611. }
  612. .el-tree-node__expand-icon.is-leaf:before{
  613. color: transparent!important;
  614. border: none;
  615. cursor: default;
  616. }
  617. .el-tree .el-tree-node__label{
  618. font-size:14px;
  619. color:#333333;
  620. font-weight:700;
  621. }
  622. .el-tree .el-tree-node__children .el-tree-node__label{
  623. font-size: 14px!important;
  624. }
  625. .el-tree .el-tree-node__children .el-tree-node__children .el-tree-node__label{
  626. color:#333333;
  627. font-size: 14px!important;
  628. }
  629. .el-tree-node__content{
  630. height:37px;
  631. }
  632. /*==========树结构结束==========*/
  633. }
  634. ::v-deep .min-list-box{
  635. .switch .el-switch__label {
  636. position: absolute;
  637. display: none;
  638. color: #fff !important;
  639. }
  640. .switch .el-switch__label--right {
  641. z-index: 1;
  642. }
  643. .switch .el-switch__label--right span{
  644. margin-left: 10px;
  645. }
  646. .switch .el-switch__label--left {
  647. z-index: 1;
  648. }
  649. .switch .el-switch__label--left span{
  650. margin-left: 24px;
  651. }
  652. .switch .el-switch__label.is-active {
  653. display: block;
  654. }
  655. .switch.el-switch .el-switch__core,
  656. .el-switch .el-switch__label {
  657. width: 64px !important;
  658. margin: 0;
  659. }
  660. }
  661. </style>