studentList.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <div class="squrt"></div>学员列表
  5. </h2>
  6. <div class="m-core">
  7. <div class="newBand" v-permission="'studentManage/register'" @click="addStudent">新增学员</div>
  8. <div class="newBand" @click="onCreateQRCode">学员激活列表</div>
  9. <!-- 搜索标题 -->
  10. <el-form :inline="true" class="searchForm" v-model.trim="searchForm">
  11. <el-form-item>
  12. <el-input
  13. placeholder="学生姓名或电话"
  14. @keyup.enter.native="onSearch"
  15. v-model.trim="searchForm.search"
  16. ></el-input>
  17. </el-form-item>
  18. <el-form-item prop="organId">
  19. <el-select
  20. class="multiple"
  21. filterable
  22. v-model.trim="searchForm.organId"
  23. clearable
  24. placeholder="请选择分部"
  25. >
  26. <el-option
  27. v-for="(item,index) in organList"
  28. :key="index"
  29. :label="item.name"
  30. :value="item.id"
  31. ></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item prop="isActive">
  35. <el-select
  36. class="multiple"
  37. v-model.trim="searchForm.isActive"
  38. clearable
  39. placeholder="是否激活"
  40. >
  41. <el-option label="是" value="true"></el-option>
  42. <el-option label="否" value="false"></el-option>
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item prop="hasCourse">
  46. <el-select
  47. class="multiple"
  48. v-model.trim="searchForm.hasCourse"
  49. clearable
  50. placeholder="是否有课"
  51. >
  52. <el-option label="是" value="1"></el-option>
  53. <el-option label="否" value="0"></el-option>
  54. </el-select>
  55. </el-form-item>
  56. <el-form-item prop="isMake">
  57. <el-select
  58. class="multiple"
  59. v-model.trim="searchForm.isMake"
  60. clearable
  61. placeholder="预约网管课"
  62. >
  63. <el-option label="是" value="true"></el-option>
  64. <el-option label="否" value="false"></el-option>
  65. </el-select>
  66. </el-form-item>
  67. <el-form-item prop="hasPracticeCourse">
  68. <el-select
  69. class="multiple"
  70. v-model.trim="searchForm.hasPracticeCourse"
  71. clearable
  72. placeholder="是否有网管课"
  73. >
  74. <el-option label="是" value="true"></el-option>
  75. <el-option label="否" value="false"></el-option>
  76. </el-select>
  77. </el-form-item>
  78. <el-form-item prop="hasCourse">
  79. <el-select
  80. class="multiple"
  81. v-model.trim="searchForm.operatingTag"
  82. clearable
  83. placeholder="是否运营"
  84. >
  85. <el-option label="是" value="1"></el-option>
  86. <el-option label="否" value="0"></el-option>
  87. </el-select>
  88. </el-form-item>
  89. <el-form-item prop="hasCourse">
  90. <el-select
  91. class="multiple"
  92. v-model.trim="searchForm.serviceTag"
  93. clearable
  94. placeholder="是否服务"
  95. >
  96. <el-option label="是" value="1"></el-option>
  97. <el-option label="否" value="0"></el-option>
  98. </el-select>
  99. </el-form-item>
  100. <el-form-item>
  101. <el-button @click="onSearch" type="danger">搜索</el-button>
  102. <el-button @click="onReSet" type="primary">重置</el-button>
  103. <el-button
  104. type="primary"
  105. v-permission="'export/studentHasCourse'"
  106. @click="downLoadStudent"
  107. >导出名单</el-button>
  108. </el-form-item>
  109. </el-form>
  110. <!-- 列表 -->
  111. <div class="tableWrap">
  112. <el-table :data="tableList" :header-cell-style="{background:'#EDEEF0',color:'#444'}">
  113. <el-table-column align="center" prop="userId" label="学员编号"></el-table-column>
  114. <el-table-column align="center" prop="username" label="学员姓名"></el-table-column>
  115. <el-table-column align="center" prop="organName" label="所属分部"></el-table-column>
  116. <el-table-column align="center" label="性别">
  117. <template slot-scope="scope">{{ scope.row.gender ? '男': '女' }}</template>
  118. </el-table-column>
  119. <el-table-column align="center" prop="realName" label="家长姓名"></el-table-column>
  120. <el-table-column align="center" width="120px" prop="parentsPhone" label="家长联系电话"></el-table-column>
  121. <el-table-column align="center" label="是否激活">
  122. <template slot-scope="scope">{{ scope.row.isActive ? '是' : '否' }}</template>
  123. </el-table-column>
  124. <el-table-column align="center" label="是否有课">
  125. <template slot-scope="scope">{{ scope.row.hasCourse ? '是' : '否' }}</template>
  126. </el-table-column>
  127. <el-table-column align="center" label="预约网管课">
  128. <template slot-scope="scope">{{ scope.row.isMake ? '是' : '否' }}</template>
  129. </el-table-column>
  130. <el-table-column align="center" label="是否有网管课">
  131. <template slot-scope="scope">{{ scope.row.hasPracticeCourse ? '是' : '否' }}</template>
  132. </el-table-column>
  133. <el-table-column align="center" label="是否运营">
  134. <template slot-scope="scope">{{ scope.row.operatingTag ? '是' : '否' }}</template>
  135. </el-table-column>
  136. <el-table-column align="center" label="是否服务">
  137. <template slot-scope="scope">{{ scope.row.serviceTag ? '是' : '否' }}</template>
  138. </el-table-column>
  139. <el-table-column align="center" prop="courseBalance" label="课程余额(元)"></el-table-column>
  140. <el-table-column align="center" fixed="right" width="180px" label="操作">
  141. <template slot-scope="scope">
  142. <router-link
  143. style="color:#409EFF"
  144. v-permission="'/studentDetail'"
  145. :to="{path:`/business/studentDetail?userId=${scope.row.userId}`,query:{search:JSON.stringify(searchForm),rules:JSON.stringify(pageInfo),studentName:scope.row.username}}"
  146. >查看</router-link>
  147. <el-button
  148. type="text"
  149. v-permission="'studentManage/studentUpdate'"
  150. @click="resetStudent(scope.row)"
  151. >修改</el-button>
  152. <!-- api-auth/user/updatePassword2 -->
  153. <el-button
  154. v-permission="'api-auth/user/updatePassword2'"
  155. @click="resetPassWrod(scope.row)"
  156. type="text"
  157. >修改密码</el-button>
  158. </template>
  159. </el-table-column>
  160. </el-table>
  161. <pagination
  162. :total="pageInfo.total"
  163. :page.sync="pageInfo.page"
  164. :limit.sync="pageInfo.limit"
  165. :page-sizes="pageInfo.page_size"
  166. @pagination="getList"
  167. />
  168. </div>
  169. </div>
  170. <el-dialog
  171. :title="maskName"
  172. width="700px"
  173. label-width="100px"
  174. label-position="right"
  175. class="studentInfo"
  176. :visible.sync="studentVisible"
  177. >
  178. <el-divider>基本信息</el-divider>
  179. <el-form
  180. :model="studentForm"
  181. :inline="true"
  182. label-width="80px"
  183. label-position="right"
  184. ref="studentForm"
  185. :rules="studentRules"
  186. >
  187. <el-form-item
  188. label="联系电话"
  189. prop="phone"
  190. :rules="[{ required: true, message: '请输入手机号' }, { pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号', trigger: 'blur' }]"
  191. >
  192. <!-- @blur="checkPhone(studentForm.phone)" -->
  193. <el-input v-model.trim="studentForm.phone"></el-input>
  194. </el-form-item>
  195. <el-form-item label="所属分部" prop="organId">
  196. <el-select
  197. class="multiple"
  198. v-model.trim="studentForm.organId"
  199. filterable
  200. clearable
  201. placeholder="请选择分部"
  202. >
  203. <el-option
  204. v-for="(item,index) in organList"
  205. :key="index"
  206. :label="item.name"
  207. :value="item.id"
  208. ></el-option>
  209. </el-select>
  210. </el-form-item>
  211. <el-form-item label="学生姓名" prop="name">
  212. <el-input v-model.trim="studentForm.name"></el-input>
  213. </el-form-item>
  214. <el-form-item label="学生性别" prop="sex">
  215. <el-select
  216. class="multiple"
  217. filterable
  218. v-model.trim="studentForm.sex"
  219. clearable
  220. placeholder="请选择性别"
  221. >
  222. <el-option :value="0" label="女"></el-option>
  223. <el-option :value="1" label="男"></el-option>
  224. </el-select>
  225. </el-form-item>
  226. <el-form-item label="是否运营" prop="operatingTag">
  227. <el-select class="multiple" v-model.trim="studentForm.operatingTag" clearable>
  228. <el-option value="1" label="是"></el-option>
  229. <el-option value="0" label="否"></el-option>
  230. </el-select>
  231. </el-form-item>
  232. <el-form-item label="是否服务" prop="serviceTag">
  233. <el-select class="multiple" v-model.trim="studentForm.serviceTag" clearable>
  234. <el-option value="1" label="是"></el-option>
  235. <el-option value="0" label="否"></el-option>
  236. </el-select>
  237. </el-form-item>
  238. <el-form-item label="家长姓名">
  239. <el-input v-model.trim="studentForm.parseName"></el-input>
  240. </el-form-item>
  241. <el-form-item label="出生日期">
  242. <el-date-picker
  243. v-model.trim="studentForm.date"
  244. value-format="yyyy-MM-dd"
  245. type="date"
  246. placeholder="选择日期"
  247. ></el-date-picker>
  248. </el-form-item>
  249. </el-form>
  250. <div slot="footer" class="dialog-footer">
  251. <el-button @click="studentVisible = false">取 消</el-button>
  252. <el-button type="primary" v-if="isNew" @click="submitAddStudent">确 定</el-button>
  253. <el-button type="primary" v-if="!isNew" @click="resetStudentSubmie">确 定</el-button>
  254. </div>
  255. </el-dialog>
  256. <el-dialog :visible.sync="qrcodeStatus" center width="300px">
  257. <div class="right-code">
  258. <h2 class="title">学员激活列表</h2>
  259. <div id="qrcode" class="qrcode code" ref="qrCodeUrl"></div>
  260. <!-- <p class="code-url"
  261. v-if="codeUrl2">{{ codeUrl2 }}</p>-->
  262. </div>
  263. </el-dialog>
  264. <el-dialog
  265. title="修改密码"
  266. :visible.sync="passwrodVisiable"
  267. :before-close="closePassWord"
  268. width="400px"
  269. >
  270. <el-form :model="passwrodForm" ref="passwrodForm" :inline="true">
  271. <el-form-item
  272. label="手机号"
  273. prop="phone"
  274. label-width="80px"
  275. :rules="[{ required: true, message: '手机号不能为空',trigger: 'blur'},{pattern: /^1[3456789]\d{9}$/, message: '请输入正确的手机号',trigger: 'blur' }]"
  276. >
  277. <el-input v-model.trim="passwrodForm.phone"></el-input>
  278. </el-form-item>
  279. <el-form-item
  280. label="输入密码"
  281. prop="password"
  282. label-width="80px"
  283. :rules="[{ required: true, message: '密码不能为空',trigger: 'blur'},{pattern:/^[\w]{6,20}$/,message:'密码为6-20位',trigger: 'blur'}]"
  284. >
  285. <el-input v-model.trim="passwrodForm.password"></el-input>
  286. </el-form-item>
  287. <el-form-item
  288. label="再次输入"
  289. prop="password2"
  290. label-width="80px"
  291. :rules="[{ required: true, message: '密码不能为空',trigger: 'blur'},{pattern:/^[\w]{6,20}$/,message:'密码为6-20位',trigger: 'blur'}]"
  292. >
  293. <el-input v-model.trim="passwrodForm.password2"></el-input>
  294. </el-form-item>
  295. </el-form>
  296. <span slot="footer" class="dialog-footer">
  297. <el-button @click="passwrodVisiable = false">取 消</el-button>
  298. <el-button type="primary" @click="submitResetPassWord">确 定</el-button>
  299. </span>
  300. </el-dialog>
  301. </div>
  302. </template>
  303. <script>
  304. import pagination from "@/components/Pagination/index";
  305. import {
  306. queryStudentList,
  307. getStudentInfoByPhone,
  308. registerStudent,
  309. updateStudent,
  310. studentHasCourse
  311. } from "@/api/studentManager";
  312. import { vaildStudentUrl } from "@/utils/validate";
  313. import { getEmployeeOrgan, resetPassword2 } from "@/api/buildTeam";
  314. import QRCode from "qrcodejs2";
  315. import store from "@/store";
  316. import axios from "axios";
  317. import qs from "qs";
  318. import { getToken } from "@/utils/auth";
  319. import load from "@/utils/loading";
  320. import { permission } from "@/utils/directivePage";
  321. export default {
  322. name: "studentList",
  323. components: { pagination },
  324. data() {
  325. return {
  326. studentVisible: false,
  327. searchForm: {
  328. organId: null,
  329. search: null,
  330. studentName: null,
  331. isActive: null,
  332. hasCourse: null,
  333. isMake: null,
  334. hasPracticeCourse: null,
  335. operatingTag: null,
  336. serviceTag: null
  337. },
  338. searchList: [],
  339. tableList: [],
  340. organList: [],
  341. pageInfo: {
  342. // 分页规则
  343. limit: 10, // 限制显示条数
  344. page: 1, // 当前页
  345. total: 0, // 总条数
  346. page_size: [10, 20, 40, 50] // 选择限制显示条数
  347. },
  348. studentForm: {
  349. phone: "",
  350. organId: "",
  351. name: "",
  352. sex: "",
  353. parseName: "",
  354. date: "",
  355. nation: "",
  356. serviceTag: null,
  357. operatingTag: null
  358. },
  359. studentRules: {
  360. name: [{ required: true, message: "请输入学生姓名" }],
  361. sex: [{ required: true, message: "请选择学生姓名" }],
  362. date: [{ required: true, message: "请选择出生日期" }],
  363. organId: [{ required: true, message: "请选择分部" }],
  364. nation: [{ required: true, message: "请输入名族" }],
  365. serviceTag: [{ required: true, message: "请选择是否参与服务" }],
  366. operatingTag: [{ required: true, message: "请选择是否参与运营" }]
  367. },
  368. isNew: false,
  369. active: null,
  370. maskName: "新增学员",
  371. qrcodeStatus: false,
  372. qrcodes: true,
  373. activeRow: null,
  374. passwrodVisiable: false,
  375. passwrodForm: {
  376. phone: "",
  377. password: "",
  378. password2: ""
  379. },
  380. activatedRow: null
  381. };
  382. },
  383. mounted() {
  384. if (this.$route.query.search) {
  385. this.$route.query.search instanceof Object
  386. ? (this.searchForm = this.$route.query.search)
  387. : (this.searchForm = JSON.parse(this.$route.query.search));
  388. }
  389. if (this.$route.query.rules) {
  390. this.$route.query.rules instanceof Object
  391. ? (this.pageInfo = this.$route.query.rules)
  392. : (this.pageInfo = JSON.parse(this.$route.query.rules));
  393. }
  394. getEmployeeOrgan().then(res => {
  395. if (res.code == 200) {
  396. this.organList = res.data;
  397. }
  398. });
  399. this.getList();
  400. },
  401. methods: {
  402. onSearch() {
  403. this.pageInfo.page = 1;
  404. this.getList();
  405. },
  406. onCreateQRCode() {
  407. // 生成报名二维码
  408. this.qrcodeStatus = true;
  409. // let id = this.$route.query.id
  410. // let teamName = this.$route.query.name
  411. setTimeout(() => {
  412. if (this.qrcodes) {
  413. this.qrcodes = false;
  414. this.qrcode = new QRCode("qrcode", {
  415. width: 250,
  416. height: 250,
  417. colorDark: "#000000",
  418. colorLight: "#ffffff",
  419. correctLevel: QRCode.CorrectLevel.H
  420. });
  421. }
  422. // vaildStudentUrl() + `/#/sporadicLogin?id=${刷刷刷}`
  423. this.qrcode.clear();
  424. this.qrcode.makeCode(vaildStudentUrl() + `/#/queryStudentPer`);
  425. // this.codeUrl = vaildStudentUrl() + '/#/login?musicGroupId=' + id
  426. }, 500);
  427. },
  428. getList() {
  429. let params = this.searchForm;
  430. params.rows = this.pageInfo.limit;
  431. params.page = this.pageInfo.page;
  432. params.organId ? params.organId : (params.organId = null);
  433. queryStudentList(params).then(res => {
  434. if (res.code == 200) {
  435. this.tableList = res.data.rows;
  436. this.pageInfo.total = res.data.total;
  437. }
  438. });
  439. },
  440. onReSet() {
  441. this.searchForm = {
  442. organId: null,
  443. search: null,
  444. studentName: null,
  445. isActive: null,
  446. hasCourse: null,
  447. isMake: null,
  448. hasPracticeCourse: null,
  449. operatingTag: null,
  450. serviceTag: null
  451. };
  452. },
  453. downLoadStudent() {
  454. let url = "/api-web/export/studentHasCourse";
  455. let searchForm = this.searchForm;
  456. let data = {
  457. organId: searchForm.organId ? searchForm.organId : null,
  458. search: searchForm.search ? searchForm.search : null,
  459. isActive: searchForm.isActive ? searchForm.isActive : null,
  460. hasCourse: searchForm.hasCourse == "" ? null : searchForm.hasCourse,
  461. isMake: searchForm.isMake ? searchForm.isMake : null,
  462. hasPracticeCourse: searchForm.hasPracticeCourse
  463. ? searchForm.hasPracticeCourse
  464. : null,
  465. operatingTag: searchForm.operatingTag ? searchForm.operatingTag : null,
  466. serviceTag: searchForm.serviceTag ? searchForm.serviceTag : null
  467. };
  468. const options = {
  469. method: "POST",
  470. headers: {
  471. Authorization: getToken()
  472. },
  473. url,
  474. data: qs.stringify(data),
  475. responseType: "blob"
  476. };
  477. this.$confirm("确定导出学员名单?", "提示", {
  478. confirmButtonText: "确定",
  479. cancelButtonText: "取消",
  480. type: "warning"
  481. })
  482. .then(() => {
  483. load.startLoading();
  484. axios(options)
  485. .then(res => {
  486. let blob = new Blob([res.data], {
  487. // type: 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8',
  488. type: "application/vnd.ms-excel;charset=utf-8"
  489. // word文档为application/msword,pdf文档为application/pdf,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8
  490. });
  491. let text = new Response(blob).text();
  492. text.then(res => {
  493. // 判断是否报错
  494. if (res.indexOf("code") != -1) {
  495. let json = JSON.parse(res);
  496. this.$message.error(json.msg);
  497. } else {
  498. let objectUrl = URL.createObjectURL(blob);
  499. let link = document.createElement("a");
  500. let nowTime = new Date();
  501. let ymd =
  502. nowTime.getFullYear() +
  503. (nowTime.getMonth() + 1) +
  504. nowTime.getDate();
  505. let fname = `导出学员名单` + ymd; //下载文件的名字
  506. link.href = objectUrl;
  507. link.setAttribute("download", fname);
  508. document.body.appendChild(link);
  509. link.click();
  510. }
  511. });
  512. load.endLoading();
  513. })
  514. .catch(error => {
  515. this.$message.error("导出数据失败,请连接管理员");
  516. load.endLoading();
  517. });
  518. })
  519. .catch(() => {});
  520. },
  521. checkPhone(val) {
  522. var regu = /^1[3456789]\d{9}$/;
  523. var re = new RegExp(regu);
  524. if (re.test(val)) {
  525. getStudentInfoByPhone({ mobile: this.studentForm.phone }).then(res => {
  526. if (res.code == 200) {
  527. if (res.data) {
  528. this.studentForm = {
  529. name: res.data.name,
  530. sex: res.data.gender,
  531. parseName: res.data.parentsName,
  532. // sound: parseInt(res.data.subjectId),
  533. phone: val,
  534. date: res.data.birthdate
  535. };
  536. }
  537. }
  538. });
  539. }
  540. },
  541. submitAddStudent() {
  542. // 效验 然后组数据提交
  543. this.$refs["studentForm"].validate(item => {
  544. if (item) {
  545. let obj = {
  546. phone: this.studentForm.phone,
  547. username: this.studentForm.name,
  548. gender: this.studentForm.sex,
  549. realName: this.studentForm.parseName,
  550. birthdate: this.studentForm.date,
  551. organId: this.studentForm.organId,
  552. nation: this.studentForm.nation,
  553. serviceTag: this.studentForm.serviceTag,
  554. operatingTag: this.studentForm.operatingTag
  555. };
  556. registerStudent(obj).then(res => {
  557. if (res.code == 200) {
  558. this.$message.success("添加成功");
  559. this.studentVisible = false;
  560. this.getList();
  561. }
  562. });
  563. }
  564. });
  565. },
  566. // 修改学生信息
  567. resetStudentSubmie() {
  568. this.$refs["studentForm"].validate(item => {
  569. if (item) {
  570. let obj = {
  571. phone: this.studentForm.phone,
  572. username: this.studentForm.name,
  573. gender: this.studentForm.sex,
  574. realName: this.studentForm.parseName,
  575. birthdate: this.studentForm.date,
  576. organId: this.studentForm.organId,
  577. id: this.active.userId,
  578. nation: this.studentForm.nation,
  579. serviceTag: this.studentForm.serviceTag,
  580. operatingTag: this.studentForm.operatingTag
  581. };
  582. updateStudent(obj).then(res => {
  583. if (res.code == 200) {
  584. this.$message.success("修改成功");
  585. this.studentVisible = false;
  586. this.getList();
  587. }
  588. });
  589. }
  590. });
  591. },
  592. addStudent() {
  593. this.isNew = true;
  594. this.studentVisible = true;
  595. this.maskName = "新增学员";
  596. },
  597. resetStudent(row) {
  598. this.isNew = false;
  599. this.active = row;
  600. this.studentVisible = true;
  601. this.maskName = "修改学员";
  602. this.studentForm = {
  603. phone: row.parentsPhone,
  604. name: row.username,
  605. sex: row.gender,
  606. parseName: row.realName,
  607. date: row.birthdate,
  608. organId: row.organId,
  609. nation: row.nation,
  610. serviceTag: row.serviceTag+'',
  611. operatingTag: row.operatingTag+''
  612. };
  613. },
  614. resetPassWrod(row) {
  615. this.activatedRow = row;
  616. this.passwrodForm.phone = row.parentsPhone;
  617. this.passwrodVisiable = true;
  618. },
  619. closePassWord() {
  620. this.activatedRow = null;
  621. this.passwrodForm = {
  622. phone: "",
  623. password: "",
  624. password2: ""
  625. };
  626. this.$refs["passwrodForm"].resetFields();
  627. this.passwrodVisiable = false;
  628. },
  629. submitResetPassWord() {
  630. if (this.passwrodForm.password !== this.passwrodForm.password2) {
  631. this.$message.error("两次密码必须相同");
  632. return;
  633. }
  634. this.$refs["passwrodForm"].validate(res => {
  635. if (res) {
  636. // 发请求
  637. resetPassword2({
  638. mobile: this.passwrodForm.phone,
  639. newPassword: this.passwrodForm.password,
  640. userId: this.activatedRow.userId
  641. }).then(res => {
  642. if (res.code == 200) {
  643. // 修改成功
  644. this.$message.success("修改成功");
  645. this.closePassWord();
  646. }
  647. });
  648. }
  649. });
  650. }
  651. },
  652. watch: {
  653. studentVisible(val) {
  654. if (!val) {
  655. this.studentForm = {
  656. phone: "",
  657. organId: "",
  658. name: "",
  659. sex: "",
  660. parseName: "",
  661. date: "",
  662. nation: "",
  663. serviceTag: null,
  664. operatingTag: null
  665. };
  666. this.$refs["studentForm"].resetFields();
  667. }
  668. }
  669. }
  670. };
  671. </script>
  672. <style lang="scss" scoped>
  673. .newBand {
  674. display: inline-block;
  675. margin-right: 10px;
  676. }
  677. .right-code {
  678. // width: 50%;
  679. // float: left;
  680. .title {
  681. font-size: 18px;
  682. text-align: center;
  683. padding-bottom: 8px;
  684. }
  685. }
  686. /deep/.studentInfo {
  687. .el-dialog__body {
  688. padding-top: 0;
  689. padding-bottom: 0;
  690. }
  691. .multiple.el-select {
  692. width: 185px !important;
  693. }
  694. }
  695. </style>