user.vue 24 KB

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