user.vue 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720
  1. <template>
  2. <div class="system-user">
  3. <!-- 头部细节部分 -->
  4. <div class="title">
  5. <el-row>
  6. <el-col :span="24">
  7. <div class="top">
  8. <el-input placeholder="用户" class="input-demo" v-model="userName"></el-input>
  9. <el-input placeholder="部门" class="input-demo" v-model="company"></el-input>
  10. <el-button type="success" style="margin-left: 1%;" @click="queryLook">查询</el-button>
  11. <el-button type="success" style="margin-left: 1%;" @click="addUserList = true">添加</el-button>
  12. </div>
  13. </el-col>
  14. </el-row>
  15. <!-- <el-row>
  16. <el-col :span="24">
  17. <div class="top">
  18. <el-button type="success" style="margin-left: 1%;" @click="queryLook">查询</el-button>
  19. <el-button type="success" style="margin-left: 1%;" @click="addUserList = true">添加</el-button>
  20. </div>
  21. </el-col>
  22. </el-row> -->
  23. </div>
  24. <!-- 头部细节部分结束 -->
  25. <!-- 表格部分 -->
  26. <template>
  27. <el-table
  28. v-loading="loading"
  29. ref="multipleTable"
  30. :data="usertable"
  31. height="370px"
  32. border
  33. tooltip-effect="dark">
  34. <el-table-column
  35. label="用户名"
  36. prop="userName"
  37. show-overflow-tooltip>
  38. </el-table-column>
  39. <el-table-column
  40. prop="company"
  41. label="部门"
  42. show-overflow-tooltip>
  43. </el-table-column>
  44. <el-table-column
  45. prop="roleName"
  46. label="权限"
  47. show-overflow-tooltip>
  48. <!-- <template slot-scope="scope">
  49. <el-popover
  50. placement="top"
  51. width="400"
  52. trigger="click"
  53. >
  54. <el-select v-model="tempRole" style="width:400px" @change="function(data){changeRole(data,scope.row)}" multiple placeholder="请选择角色">
  55. <el-option
  56. v-for="item in roleList"
  57. :key="item.id"
  58. :label="item.roleName"
  59. :value="item.id">
  60. </el-option>
  61. </el-select>
  62. <el-link :underline="false" type="primary" slot="reference" @click="showRole(scope.row)"> {{scope.row.roleName}}</el-link>
  63. </el-popover>
  64. </template> -->
  65. </el-table-column>
  66. <!-- <el-table-column
  67. prop="phone"
  68. label="手机号"
  69. show-overflow-tooltip>
  70. </el-table-column> -->
  71. <!-- <el-table-column
  72. prop="name"
  73. label="姓名"
  74. show-overflow-tooltip> -->
  75. <!-- </el-table-column> -->
  76. <!-- <el-table-column
  77. prop="price"
  78. label="单价(元)"
  79. show-overflow-tooltip>
  80. <template slot-scope="scope" show-overflow-tooltip>
  81. <span>{{scope.row.price / 100}}</span>
  82. </template>
  83. </el-table-column> -->
  84. <!-- <el-table-column
  85. label="余额(元)"
  86. show-overflow-tooltip>
  87. <template slot-scope="scope" show-overflow-tooltip>
  88. <span>{{scope.row.money / 100}}</span>
  89. </template>
  90. </el-table-column> -->
  91. <!-- <el-table-column
  92. prop="dutyParagraph"
  93. label="税号"
  94. show-overflow-tooltip>
  95. </el-table-column> -->
  96. <!-- <el-table-column
  97. prop="companyNum"
  98. label="企业编号"
  99. show-overflow-tooltip>
  100. </el-table-column> -->
  101. <el-table-column
  102. label="状态"
  103. show-overflow-tooltip>
  104. <template slot-scope="scope">
  105. <span v-if="scope.row.isLock == 0" style="color:green">正常</span>
  106. <span v-else-if="scope.row.isLock == 1" style="color: red">锁定</span>
  107. <span v-else-if="scope.row.isLock == 2" style="color: darkgrey">停用</span>
  108. </template>
  109. </el-table-column>
  110. <el-table-column
  111. label="操作"
  112. width="280">
  113. <template slot-scope="scope" show-overflow-tooltip>
  114. <el-link style="cursor:pointer;color: blue;" @click="openChange(scope.row)">修改</el-link>
  115. <el-link style="margin-left: 10px; cursor:pointer;color: blue;" @click="openPassword(scope.row)">重置密码</el-link>
  116. <el-link style="margin-left: 10px; cursor:pointer;color: blue;" @click="openisLock(scope.row)">修改状态</el-link>
  117. <el-link style="margin-left: 10px; cursor:pointer; color: red;" @click="Delete(scope.row.id)">删除</el-link>
  118. </template>
  119. </el-table-column>
  120. </el-table>
  121. </template>
  122. <!-- 分页 -->
  123. <div class="block">
  124. <el-pagination
  125. @size-change="handleSizeChange"
  126. @current-change="handleCurrentChange"
  127. :current-page="current"
  128. :page-sizes="[6, 8, 10]"
  129. :page-size="pagesize"
  130. layout="total, sizes, prev, pager, next, jumper"
  131. :total="total">
  132. </el-pagination>
  133. </div>
  134. <!-- 新增用户 -->
  135. <el-dialog
  136. @close="handleEditDialogClose"
  137. :visible.sync="addUserList"
  138. style="font-size: 0px;">
  139. <div class="tou">用户--添加</div>
  140. <div class="line"></div>
  141. <el-form
  142. label-position="right"
  143. label-width="80px"
  144. :rules="rules"
  145. ref="ruleForm"
  146. :model="formUserList">
  147. <el-form-item label="用户名" prop="userName">
  148. <el-input v-model="formUserList.userName" auto-complete="off" placeholder="请输入用户名"></el-input>
  149. </el-form-item>
  150. <el-form-item label="密码" prop="password">
  151. <el-input v-model="formUserList.password" auto-complete="off" placeholder="请输入密码"></el-input>
  152. </el-form-item>
  153. <el-form-item label="姓名" prop="name">
  154. <el-input v-model="formUserList.name" auto-complete="off" placeholder="请输入姓名"></el-input>
  155. </el-form-item>
  156. <el-form-item label="角色" prop="roleId">
  157. <el-select v-model="formUserList.roleId" placeholder="请选择角色" style="width: 100%">
  158. <el-option
  159. v-for="item in roleList"
  160. :key="item.id"
  161. :label="item.roleName"
  162. :value="item.id">
  163. </el-option>
  164. </el-select>
  165. </el-form-item>
  166. <el-form-item label="手机号" prop="phone">
  167. <el-input v-model="formUserList.phone" auto-complete="off" placeholder="请输入手机号"></el-input>
  168. </el-form-item>
  169. <el-form-item label="企业名称" prop="company">
  170. <el-input v-model="formUserList.company" auto-complete="off" placeholder="请输入企业名称"></el-input>
  171. </el-form-item>
  172. <el-form-item label="状态" prop="isLock">
  173. <el-select v-model="formUserList.isLock" placeholder="请选择状态" style="width: 100%">
  174. <el-option
  175. v-for="item in optionone"
  176. :key="item.value"
  177. :label="item.label"
  178. :value="item.value">
  179. </el-option>
  180. </el-select>
  181. </el-form-item>
  182. </el-form>
  183. <div slot="footer" class="dialog-footer">
  184. <el-button @click="addUserList = false" type="info">取 消</el-button>
  185. <el-button type="primary" @click="addData('ruleForm')">新 增</el-button>
  186. </div>
  187. </el-dialog>
  188. <!-- 修改用户 -->
  189. <el-dialog
  190. @close="handleEditDialogClose"
  191. :visible.sync="changeUser"
  192. style="font-size: 0px;">
  193. <div class="tou">用户--修改</div>
  194. <div class="line"></div>
  195. <el-form
  196. label-position="right"
  197. label-width="80px"
  198. :model="formUserList">
  199. <el-form-item label="用户名">
  200. <el-input :disabled="true" v-model="formUserList.userName" auto-complete="off" placeholder="请输入用户名"></el-input>
  201. </el-form-item>
  202. <el-form-item label="姓名">
  203. <el-input v-model="formUserList.name" auto-complete="off" placeholder="请输入姓名"></el-input>
  204. </el-form-item>
  205. <!-- <el-form-item label="角色">
  206. <el-select v-model="formUserList.roleId" placeholder="请选择角色" style="width: 100%">
  207. <el-option
  208. v-for="item in roleList"
  209. :key="item.id"
  210. :label="item.roleName"
  211. :value="item.id">
  212. </el-option>
  213. </el-select>
  214. </el-form-item> -->
  215. <el-form-item label="手机号">
  216. <el-input v-model="formUserList.phone" auto-complete="off" placeholder="请输入手机号"></el-input>
  217. </el-form-item>
  218. <el-form-item label="企业名称">
  219. <el-input v-model="formUserList.company" auto-complete="off" placeholder="请输入企业名称"></el-input>
  220. </el-form-item>
  221. </el-form>
  222. <div slot="footer" class="dialog-footer">
  223. <el-button @click="changeUser = false" type="info">取 消</el-button>
  224. <el-button type="primary" @click="changeData">修 改</el-button>
  225. </div>
  226. </el-dialog>
  227. <!-- 修改锁定和解锁状态 -->
  228. <el-dialog
  229. @close="handleEditDialogClose"
  230. :visible.sync="changelocks"
  231. style="font-size: 0px;">
  232. <div class="tou">用户--修改状态</div>
  233. <div class="line"></div>
  234. <el-form
  235. label-position="right"
  236. label-width="80px"
  237. :model="formUserList">
  238. <el-form-item label="用户名">
  239. <el-input v-model="formUserList.userName" auto-complete="off" placeholder="请输入用户名"></el-input>
  240. </el-form-item>
  241. <el-form-item label="状态">
  242. <el-select v-model="formUserList.isLock" placeholder="请选择状态" style="width: 100%">
  243. <el-option
  244. v-for="item in optionone"
  245. :key="item.value"
  246. :label="item.label"
  247. :value="item.value">
  248. </el-option>
  249. </el-select>
  250. </el-form-item>
  251. </el-form>
  252. <div slot="footer" class="dialog-footer">
  253. <el-button @click="changelocks = false" type="info">取 消</el-button>
  254. <el-button type="primary" @click="changeLock">修 改</el-button>
  255. </div>
  256. </el-dialog>
  257. <!-- 重置密码 -->
  258. <el-dialog
  259. @close="handleEditDialogClose"
  260. :visible.sync="changepassword"
  261. style="font-size: 0px;">
  262. <div class="tou">用户--重置密码</div>
  263. <div class="line"></div>
  264. <el-form
  265. label-position="right"
  266. label-width="80px"
  267. :model="formUserList">
  268. <el-form-item label="用户名">
  269. <el-input v-model="formUserList.userName" auto-complete="off" placeholder="请输入用户名"></el-input>
  270. </el-form-item>
  271. <el-form-item label="新密码">
  272. <el-input v-model="formUserList.password" type="password" auto-complete="off" placeholder="请输入新密码"></el-input>
  273. </el-form-item>
  274. </el-form>
  275. <div slot="footer" class="dialog-footer">
  276. <el-button @click="changepassword = false" type="info">取 消</el-button>
  277. <el-button type="primary" @click="resetPassword">修 改</el-button>
  278. </div>
  279. </el-dialog>
  280. <!-- 充值 -->
  281. <!-- <el-dialog
  282. @close="handleEditDialogClose"
  283. :visible.sync="changeMoney"
  284. style="font-size: 0px;">
  285. <div class="tou">用户--充值</div>
  286. <div class="line"></div>
  287. <el-form
  288. label-position="right"
  289. label-width="80px"
  290. :model="formUserList">
  291. <el-form-item label="用户名">
  292. <el-input v-model="formUserList.userName" auto-complete="off" placeholder="请输入用户"></el-input>
  293. </el-form-item>
  294. <el-form-item label="充值金额(元)">
  295. <el-input v-model="formUserList.money" auto-complete="off" placeholder="请输入充值金额(元)"></el-input>
  296. </el-form-item>
  297. </el-form>
  298. <div slot="footer" class="dialog-footer">
  299. <el-button @click="changeMoney = false" type="info">取 消</el-button>
  300. <el-button type="primary" @click="resetMoney">充 值</el-button>
  301. </div>
  302. </el-dialog> -->
  303. </div>
  304. </template>
  305. <script type="text/javascript">
  306. import axios from 'axios';
  307. export default{
  308. data() {
  309. return {
  310. loading: true,
  311. rules: {
  312. userName: [
  313. { required: true, message: '请输入用户名', trigger: 'blur' },
  314. { min: 3, max: 15, message: '长度在 3 到 15 个字符', trigger: 'blur' }
  315. ],
  316. password: [
  317. { required: true, message: '请输入密码', trigger: 'blur' },
  318. { min: 6, max: 16, message: '长度在 6 到 16 个字符', trigger: 'blur' }
  319. ],
  320. name: [
  321. { required: true, message: '请输入真实姓名', trigger: 'blur' },
  322. { min: 2, max: 15, message: '长度在 2 到 15 个字符', trigger: 'blur' }
  323. ],
  324. roleId: [
  325. { required: true, message: '请选择角色', trigger: 'change' }
  326. ],
  327. phone: [
  328. { required: true, message: '请输入手机号', trigger: 'blur' },
  329. { min: 11, max: 11, message: '长度在 11 个字符', trigger: 'blur' }
  330. ],
  331. company: [
  332. { required: true, message: '请输入企业名称', trigger: 'blur' },
  333. { min: 2, max: 25, message: '长度在 2 到 25 个字符', trigger: 'blur' }
  334. ],
  335. isLock: [
  336. { required: true, message: '请选择状态', trigger: 'change' }
  337. ]
  338. },
  339. userName: '',
  340. company: '',
  341. usertable: [],
  342. roleList: [],
  343. tempRole:[],
  344. formUserList: {
  345. "userName":"",
  346. "password": "",
  347. "id":"",
  348. "name": "",
  349. "phone":"",
  350. "roleId": "",
  351. "isLock":"",
  352. "company": ""
  353. },
  354. optionone: [{
  355. value: '0',
  356. label: '正常'
  357. }, {
  358. value: '1',
  359. label: '锁定'
  360. },{
  361. value: '2',
  362. label: '停用'
  363. }],
  364. current: 1,
  365. pagesize: 8,
  366. // 总共有多少条数据
  367. total: 0,
  368. addUserList: false,
  369. changeUser: false,
  370. changeMoney: false,
  371. changelocks: false,
  372. changepassword: false,
  373. }
  374. },
  375. created() {
  376. this.loadRoleList();
  377. this.loadData();
  378. },
  379. methods: {
  380. // 获取角色状态
  381. async loadRoleList() {
  382. const response = await this.$http.post(`role/list`);
  383. if (response.data.code === 0) {
  384. this.roleList = response.data.data;
  385. }
  386. },
  387. // showRole(row){
  388. // this.tempRole=[];
  389. // if(row.roleId == '' || row.roleId == null){
  390. // return;
  391. // }
  392. // var roleids = (row.roleId+'').split(',');
  393. // for(var i in roleids){
  394. // this.tempRole.push(parseInt(roleids[i]));
  395. // }
  396. // },
  397. async changeRole(data,row){
  398. row.roleId ='';
  399. row.roleName = '无权限';
  400. for(var i in data){
  401. if(i == 0){
  402. row.roleId = data[i];
  403. for(var j in this.roleList){
  404. if(this.roleList[j]['id'] == data[i]){
  405. row.roleName = '';
  406. row.roleName = this.roleList[j]['roleName'];
  407. }
  408. }
  409. }else{
  410. row.roleId +=","+data[i];
  411. for(var j in this.roleList){
  412. if(this.roleList[j]['id'] == data[i]){
  413. row.roleName +=","+ this.roleList[j]['roleName'];
  414. }
  415. }
  416. }
  417. }
  418. const response = await this.$http.post(`user/updateUser`, row);
  419. if(response.data.code === 0) {
  420. }else {
  421. this.$message({
  422. type: 'error',
  423. message: '修改权限失败'
  424. });
  425. }
  426. },
  427. // 列表展示
  428. async loadData() {
  429. const formData = new FormData();
  430. formData.append('current', this.current);
  431. formData.append('size', this.pagesize);
  432. const response = await this.$http.post(`user/page`, formData);
  433. if (response.data.code === 0) {
  434. this.loading = false;
  435. this.usertable = response.data.data.records;
  436. this.total = response.data.data.total;
  437. }
  438. },
  439. //查询
  440. async queryLook() {
  441. const formData = new FormData();
  442. formData.append('current', this.current);
  443. formData.append('size', this.pagesize);
  444. formData.append('userName', this.userName);
  445. formData.append('company', this.company);
  446. const response = await this.$http.post(`user/page`, formData);
  447. if (response.data.code === 0) {
  448. this.loading = false;
  449. this.usertable = response.data.data.records;
  450. this.total = response.data.data.total;
  451. }
  452. },
  453. // 新增用户
  454. addData(formName) {
  455. this.$refs[formName].validate(async (valid) => {
  456. if(valid) {
  457. this.formUserList.price = this.formUserList.price * 100;
  458. const response = await this.$http.post(`user`, this.formUserList);
  459. if(response.data.code === 0) {
  460. this.loadData();
  461. this.addUserList = false;
  462. this.$message({
  463. type: 'success',
  464. message: '添加成功'
  465. });
  466. }else {
  467. this.$message({
  468. type: 'error',
  469. message: '添加失败'
  470. });
  471. }
  472. }else {
  473. this.$message.error('请查看是否有选项未填写或填错项');
  474. return false;
  475. }
  476. })
  477. },
  478. // 打开修改并赋予信息
  479. openChange(user) {
  480. this.changeUser = true;
  481. this.formUserList.userName = user.userName;
  482. this.formUserList.price = user.price / 100;
  483. this.formUserList.id = user.id;
  484. this.formUserList.name = user.name;
  485. this.formUserList.phone = user.phone;
  486. this.formUserList.roleId = user.roleId;
  487. this.formUserList.isLock = user.isLock;
  488. this.formUserList.dutyParagraph = user.dutyParagraph;
  489. this.formUserList.company = user.company;
  490. this.formUserList.money = user.money;
  491. },
  492. // 修改用户
  493. async changeData() {
  494. this.formUserList.price = this.formUserList.price * 100;
  495. const response = await this.$http.put(`user`, this.formUserList);
  496. if(response.data.code === 0) {
  497. this.loadData();
  498. this.changeUser = false;
  499. this.$message({
  500. type: 'success',
  501. message: '修改成功'
  502. });
  503. }else {
  504. this.$message({
  505. type: 'error',
  506. message: '修改失败'
  507. });
  508. }
  509. },
  510. // 点击删除按钮
  511. Delete(id) {
  512. this.$confirm('是否删除该用户', '提示' ,{
  513. confirmButtonText: '确定',
  514. cancelButtonText: '取消',
  515. type: 'warning'
  516. }).then(async () => {
  517. const response = await this.$http.delete(`user/${id}`);
  518. if(response.data.code === 0) {
  519. this.loadData();
  520. this.$message({
  521. type: 'success',
  522. message: '删除成功'
  523. });
  524. }else {
  525. this.$message({
  526. type: 'error',
  527. message: '删除失败'
  528. });
  529. }
  530. }).catch(() => {
  531. this.$message({ type: 'info', message: '已取消删除'});
  532. });
  533. },
  534. // 打开修改密码
  535. openPassword(user) {
  536. this.changepassword = true;
  537. this.formUserList.userName = user.userName;
  538. this.formUserList.id = user.id;
  539. },
  540. //修改密码
  541. async resetPassword() {
  542. const response = await this.$http.put(`user/restPassword`, this.formUserList);
  543. if(response.data.code === 0) {
  544. this.loadData();
  545. this.changepassword = false;
  546. this.$message({
  547. type: 'success',
  548. message: '修改成功'
  549. });
  550. }else {
  551. this.$message({
  552. type: 'error',
  553. message: '修改失败'
  554. });
  555. }
  556. },
  557. // 打开充值弹框
  558. openMoney(user) {
  559. this.changeMoney = true;
  560. this.formUserList.userName = user.userName;
  561. this.formUserList.id = user.id;
  562. },
  563. // 充值
  564. async resetMoney() {
  565. this.formUserList.money = this.formUserList.money * 100;
  566. const response = await this.$http.put(`user/money`, this.formUserList);
  567. if(response.data.code === 0) {
  568. this.loadData();
  569. this.changeMoney = false;
  570. this.$message({
  571. type: 'success',
  572. message: '充值成功'
  573. });
  574. }else {
  575. this.$message({
  576. type: 'error',
  577. message: '充值失败'
  578. });
  579. }
  580. },
  581. // 打开修改状态弹框
  582. openisLock(user) {
  583. this.changelocks = true;
  584. this.formUserList.userName = user.userName;
  585. this.formUserList.id = user.id;
  586. },
  587. // 修改用户状态
  588. async changeLock() {
  589. const response = await this.$http.put(`user/lock`, this.formUserList);
  590. if(response.data.code === 0) {
  591. this.loadData();
  592. this.changelocks = false;
  593. this.$message({
  594. type: 'success',
  595. message: '修改成功'
  596. });
  597. }else {
  598. this.$message({
  599. type: 'error',
  600. message: '修改失败'
  601. });
  602. }
  603. },
  604. // 清空表单数据
  605. handleEditDialogClose() {
  606. for (var key in this.formUserList) {
  607. this.formUserList[key] = '';
  608. };
  609. this.current = 1;
  610. this.pagesize = 8;
  611. },
  612. // 分页方法
  613. handleSizeChange(val) {
  614. this.pagesize = val;
  615. if(this.userName !== '' || this.company !== '') {
  616. this.queryLook();
  617. }else{
  618. this.loadData();
  619. };
  620. console.log(`每页 ${val} 条`);
  621. },
  622. handleCurrentChange(val) {
  623. this.current = val;
  624. if(this.userName !== '' || this.company !== '') {
  625. this.queryLook();
  626. }else{
  627. this.loadData();
  628. };
  629. console.log(`当前页: ${val}`);
  630. },
  631. }
  632. };
  633. </script>
  634. <style>
  635. .system-user {
  636. border: 1px solid #d9d9d9;
  637. border-radius: 10px;
  638. }
  639. .system-user .title {
  640. font-size: 5px;
  641. margin-bottom: 20px;
  642. }
  643. .system-user .top {
  644. padding-top: 20px;
  645. padding-left: 20px;
  646. }
  647. .system-user .text {
  648. display: inline-block;
  649. color: #000;
  650. font-size: 16px ;
  651. margin-left: 1%;
  652. }
  653. .system-user .input-demo {
  654. display: inline-block;
  655. width: 20%;
  656. margin-left: 1%;
  657. }
  658. .system-user .block {
  659. font-size: 5px;
  660. text-align: center;
  661. margin-top: 25px;
  662. margin-bottom: 25px;
  663. }
  664. .system-user .el-dialog {
  665. width: 60%;
  666. }
  667. .system-user .el-dialog__header, .el-dialog__body {
  668. padding: 0 20px;
  669. }
  670. .system-user .tou {
  671. font-size: 20px;
  672. height: 30px;
  673. line-height: 30px;
  674. padding-top: 15px;
  675. }
  676. .system-user .line {
  677. margin-top: 15px;
  678. margin-bottom: 15px;
  679. width: 100%;
  680. height: 2px;
  681. background-color: #d9d9d9;
  682. }
  683. .system-user .xinxi {
  684. text-align: center;
  685. margin: 15px auto;
  686. font-size: 18px;
  687. }
  688. </style>