UserManger.vue 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953
  1. <template>
  2. <div>
  3. <el-breadcrumb separator-class="el-icon-arrow-right">
  4. <el-breadcrumb-item>系统管理</el-breadcrumb-item>
  5. <el-breadcrumb-item>用户管理</el-breadcrumb-item>
  6. </el-breadcrumb>
  7. <div class="search-box">
  8. <div class="filter-box">
  9. <el-select
  10. size="small"
  11. v-model="role"
  12. placeholder="请选择角色类型"
  13. clearable
  14. @change="checkList()"
  15. >
  16. <el-option
  17. v-for="item in roleList"
  18. :label="item.role_name"
  19. :value="item.role_id"
  20. :key="item.role_id"
  21. ></el-option>
  22. </el-select>
  23. <el-select
  24. size="small"
  25. v-model="userTypeCheck"
  26. placeholder="请选择用户类型"
  27. clearable
  28. @change="checkList()"
  29. >
  30. <el-option label="超级管理员" :value="1"></el-option>
  31. <el-option label="经销商" :value="2"></el-option>
  32. <el-option label="农林政府单位" :value="3"></el-option>
  33. <el-option label="普通用户" :value="4"></el-option>
  34. </el-select>
  35. <el-input
  36. size="small"
  37. placeholder="请输入用户名"
  38. @change="checkList()"
  39. clearable
  40. v-model="username"
  41. >
  42. <i slot="suffix" class="el-input__icon el-icon-search"></i>
  43. </el-input>
  44. </div>
  45. <el-button type="primary" size="mini" @click="addUser()"
  46. >添加新用户</el-button
  47. >
  48. </div>
  49. <el-row :gutter="10">
  50. <el-col
  51. :xs="24"
  52. :sm="24"
  53. :md="12"
  54. :lg="6"
  55. :xl="6"
  56. v-for="item in userList"
  57. :key="item.uid"
  58. >
  59. <el-card class="box-card pad0">
  60. <div class="img-box">
  61. <img
  62. v-if="item.state == 1"
  63. src="@/assets/images/systemManger/user.png"
  64. />
  65. <img
  66. v-if="item.state == 4"
  67. src="@/assets/images/systemManger/user_dis.png"
  68. />
  69. <p>{{ item.username }}</p>
  70. <div>
  71. <el-button type="text" @click="login(item.uid, item.username)"
  72. >一键登录</el-button
  73. >
  74. </div>
  75. </div>
  76. <div class="detail">
  77. <p>
  78. 创建时间
  79. <span>{{ (item.addtime * 1000) | formatTime }}</span>
  80. </p>
  81. <p>
  82. 用户角色
  83. <span>{{ item.role_name }}</span>
  84. </p>
  85. <p>
  86. 用户所属
  87. <span>{{ item.regiest_source_name || '--' }}</span>
  88. </p>
  89. <p>
  90. 用户类型
  91. <span>{{ item.user_type | formatUserType }}</span>
  92. </p>
  93. <p>
  94. 用户手机号
  95. <span>{{ item.mobile }}</span>
  96. </p>
  97. <p>
  98. 上次登录
  99. <span>{{ (item.login_time * 1000) | formatTime }}</span>
  100. </p>
  101. <p>
  102. 用户到期时间
  103. <span>{{ (item.expire_time * 1000) | formatTime }}</span>
  104. </p>
  105. </div>
  106. <div class="btn">
  107. <a @click="recharge(item.uid)">
  108. <i class="iconfont icon-chongzhi"></i>充值
  109. </a>
  110. <a @click="edit(item)">
  111. <i class="iconfont icon-iconfontedit"></i>编辑
  112. </a>
  113. <template v-if="item.state == 1">
  114. <a @click="forbidUse(item.uid, 4, '确认禁用该用户?')">
  115. <i class="iconfont icon-jinyong"></i>禁用
  116. </a>
  117. </template>
  118. <template v-else>
  119. <a @click="forbidUse(item.uid, 1, '确认恢复该用户?')">
  120. <i class="iconfont icon-jinyong"></i>恢复
  121. </a>
  122. </template>
  123. <a @click="resetPassword(item.uid, item.username)">
  124. <i class="iconfont icon-mima"></i>密码
  125. </a>
  126. </div>
  127. </el-card>
  128. </el-col>
  129. </el-row>
  130. <!-- 暂无数据 -->
  131. <div class="expertDiagnosis_referral_units_not" v-if="userList.length <= 0">
  132. <img
  133. src="@/assets/images/expertDiagnosis/zanwu.png"
  134. alt
  135. class="expertDiagnosis_referral_units_notImg"
  136. />
  137. </div>
  138. <el-pagination
  139. v-if="userList.length > 0"
  140. background
  141. :page-size="8"
  142. layout="prev, pager, next"
  143. :current-page="page"
  144. :total="totalNum"
  145. @current-change="changePage"
  146. ></el-pagination>
  147. <!-- 重置密码 -->
  148. <el-dialog
  149. title="重置密码"
  150. :visible.sync="resetPassDialogVisible"
  151. width="30%"
  152. @close="resetPassDialogClosed"
  153. >
  154. <el-form
  155. ref="resetPassFormRef"
  156. :model="resetPassForm"
  157. label-width="110px"
  158. :rules="resetPassFormRules"
  159. >
  160. <el-form-item label="用户名 : " prop="username">
  161. <el-input
  162. type="text"
  163. disabled
  164. v-model="resetPassForm.username"
  165. ></el-input>
  166. </el-form-item>
  167. <el-form-item v-if="userType != 1" label="原始密码 : " prop="oldPass">
  168. <el-input type="password" v-model="resetPassForm.oldPass"></el-input>
  169. </el-form-item>
  170. <el-form-item label="新密码 : " prop="pass">
  171. <el-input type="password" v-model="resetPassForm.pass"></el-input>
  172. </el-form-item>
  173. <el-form-item label="确认新密码 : " prop="checkPass">
  174. <el-input
  175. type="password"
  176. v-model="resetPassForm.checkPass"
  177. ></el-input>
  178. </el-form-item>
  179. </el-form>
  180. <span slot="footer" class="dialog-footer">
  181. <el-button @click="resetPassDialogVisible = false">取 消</el-button>
  182. <el-button type="primary" @click="resetPassSubm">确认</el-button>
  183. </span>
  184. </el-dialog>
  185. <!-- 添加新用户 -->
  186. <el-dialog
  187. title="添加新用户"
  188. :visible.sync="addUserDialogVisible"
  189. width="30%"
  190. @close="addUserDialogClosed"
  191. >
  192. <el-form
  193. ref="addUserFormRef"
  194. :model="addUserForm"
  195. label-width="80px"
  196. :rules="addUserFormRules"
  197. >
  198. <el-form-item label="用户名 : " prop="username">
  199. <el-input v-model="addUserForm.username"></el-input>
  200. </el-form-item>
  201. <el-form-item label="电话 : " prop="mobile">
  202. <el-input v-model="addUserForm.mobile"></el-input>
  203. </el-form-item>
  204. <el-form-item label="密码 : " prop="pass">
  205. <el-input v-model="addUserForm.pass"></el-input>
  206. </el-form-item>
  207. <el-form-item label="角色类型 : ">
  208. <el-select
  209. style="width: 100%"
  210. size="small"
  211. v-model="addUserForm.role_id"
  212. placeholder="请选择角色类型"
  213. >
  214. <el-option
  215. v-for="item in roleList"
  216. :label="item.role_name"
  217. :value="item.role_id"
  218. :key="item.role_id"
  219. ></el-option>
  220. </el-select>
  221. </el-form-item>
  222. <el-form-item label="主题 : " prop="user_group_id">
  223. <el-select
  224. style="width: 100%"
  225. clearable
  226. v-model="addUserForm.user_group_id"
  227. placeholder="请选择主题"
  228. >
  229. <el-option
  230. v-for="(item, index) in userGroupList"
  231. :label="item.role_describe"
  232. :value="item.id"
  233. :key="index"
  234. ></el-option>
  235. </el-select>
  236. </el-form-item>
  237. <el-form-item label="用户类型 : " prop="user_type" v-if="userType == 1">
  238. <el-select
  239. style="width: 100%"
  240. clearable
  241. v-model="addUserForm.user_type"
  242. @change="userTypeChange"
  243. placeholder="请选择角色类型"
  244. >
  245. <el-option label="超级管理员" :value="1"></el-option>
  246. <el-option label="经销商" :value="2"></el-option>
  247. <el-option label="农林政府单位" :value="3"></el-option>
  248. <el-option label="普通用户" :value="4"></el-option>
  249. </el-select>
  250. </el-form-item>
  251. <el-form-item label="用户类型 : " prop="user_type" v-if="userType != 1">
  252. <el-select
  253. style="width: 100%"
  254. clearable
  255. v-model="addUserForm.user_type"
  256. @change="userTypeChange"
  257. placeholder="请选择角色类型"
  258. >
  259. <el-option label="普通用户" :value="4"></el-option>
  260. </el-select>
  261. </el-form-item>
  262. <el-form-item label="省/市/区 : " v-show="editIsShow" prop="pcd">
  263. <el-select
  264. style="width: 100%"
  265. clearable
  266. v-model="addUserForm.pcd"
  267. placeholder="请选择省、市、县"
  268. @change="pcdChange"
  269. >
  270. <el-option label="省" value="1"></el-option>
  271. <el-option label="市" value="2"></el-option>
  272. <el-option label="县" value="3"></el-option>
  273. </el-select>
  274. </el-form-item>
  275. <el-form-item label="省/市/区 : " v-show="editIsShow" prop="user_area">
  276. <el-select
  277. style="width: 100%"
  278. clearable
  279. v-model="addUserForm.user_area"
  280. placeholder="请选择省、市、县"
  281. @change="pcdChange"
  282. >
  283. <el-option
  284. :label="item"
  285. :value="item"
  286. v-for="item in areaList"
  287. :key="item"
  288. ></el-option>
  289. </el-select>
  290. </el-form-item>
  291. </el-form>
  292. <span slot="footer" class="dialog-footer">
  293. <el-button @click="addUserDialogVisible = false">取 消</el-button>
  294. <el-button type="primary" @click="addUserSubm">确认</el-button>
  295. </span>
  296. </el-dialog>
  297. <!-- 用户编辑 -->
  298. <el-dialog
  299. title="用户信息编辑"
  300. :visible.sync="editUserDialogVisible"
  301. width="500px"
  302. @close="editUserDialogClosed"
  303. >
  304. <el-form
  305. ref="editUserFormRef"
  306. :model="editUserForm"
  307. label-width="80px"
  308. :rules="editUserFormRules"
  309. >
  310. <el-form-item label="用户名 : ">
  311. <el-input v-model="editUserForm.username" disabled></el-input>
  312. </el-form-item>
  313. <el-form-item label="电话 : " prop="mobile">
  314. <el-input v-model="editUserForm.mobile"></el-input>
  315. </el-form-item>
  316. <el-form-item label="角色类型 : " prop="role_id">
  317. <el-select
  318. style="width: 100%"
  319. clearable
  320. v-model="editUserForm.role_id"
  321. placeholder="请选择角色类型"
  322. >
  323. <el-option
  324. v-for="item in roleList"
  325. :label="item.role_name"
  326. :value="item.role_id"
  327. :key="item.role_id"
  328. ></el-option>
  329. </el-select>
  330. </el-form-item>
  331. <el-form-item label="用户组 : " prop="user_group_id">
  332. <el-select
  333. style="width: 100%"
  334. clearable
  335. v-model="editUserForm.user_group_id"
  336. placeholder="请选择用户组"
  337. >
  338. <el-option
  339. v-for="(item, index) in userGroupList"
  340. :label="item.role_describe"
  341. :value="item.id"
  342. :key="index"
  343. ></el-option>
  344. </el-select>
  345. </el-form-item>
  346. <el-form-item label="用户类型 : " prop="user_type" v-if="userType == 1">
  347. <el-select
  348. disabled
  349. style="width: 100%"
  350. clearable
  351. v-model="editUserForm.user_type"
  352. @change="userTypeChange"
  353. placeholder="请选择角色类型"
  354. >
  355. <el-option label="超级管理员" :value="1"></el-option>
  356. <el-option label="经销商" :value="2"></el-option>
  357. <el-option label="农林政府单位" :value="3"></el-option>
  358. <el-option label="普通用户" :value="4"></el-option>
  359. </el-select>
  360. </el-form-item>
  361. <el-form-item label="用户类型 : " prop="user_type" v-if="userType != 1">
  362. <el-select
  363. disabled
  364. style="width: 100%"
  365. clearable
  366. v-model="editUserForm.user_type"
  367. @change="userTypeChange"
  368. placeholder="请选择角色类型"
  369. >
  370. <el-option label="普通用户" :value="4"></el-option>
  371. </el-select>
  372. </el-form-item>
  373. <el-form-item
  374. label="省/市/区 : "
  375. v-show="editIsShow || editUserForm.user_type == 3"
  376. prop="pcd"
  377. >
  378. <el-select
  379. style="width: 100%"
  380. clearable
  381. v-model="editUserForm.pcd"
  382. placeholder="请选择省、市、县"
  383. @change="pcdChange"
  384. >
  385. <el-option label="省" value="1"></el-option>
  386. <el-option label="市" value="2"></el-option>
  387. <el-option label="县" value="3"></el-option>
  388. </el-select>
  389. </el-form-item>
  390. <el-form-item
  391. label="省/市/区 : "
  392. v-show="editIsShow || editUserForm.user_type == 3"
  393. prop="user_area"
  394. >
  395. <el-select
  396. style="width: 100%"
  397. clearable
  398. v-model="editUserForm.user_area"
  399. placeholder="请选择省、市、县"
  400. @change="pcdChange"
  401. >
  402. <el-option
  403. :label="item"
  404. :value="item"
  405. v-for="item in areaList"
  406. :key="item"
  407. ></el-option>
  408. </el-select>
  409. </el-form-item>
  410. </el-form>
  411. <span slot="footer" class="dialog-footer">
  412. <el-button @click="editUserDialogVisible = false">取 消</el-button>
  413. <el-button type="primary" @click="editUserSubm">确认</el-button>
  414. </span>
  415. </el-dialog>
  416. </div>
  417. </template>
  418. <script>
  419. import cityData from './citydata'
  420. export default {
  421. inject: ['reload'],
  422. data() {
  423. var checkMobile = (rule, value, callback) => {
  424. const regMobile = /^1\d{10}$/
  425. if (regMobile.test(value)) {
  426. callback()
  427. } else {
  428. // 返回一个错误提示
  429. callback(new Error('请输入合法的手机号码'))
  430. }
  431. }
  432. var validatePass = (rule, value, callback) => {
  433. if (value === '') {
  434. callback(new Error('请输入新密码'))
  435. } else {
  436. if (this.resetPassForm.checkPass !== '') {
  437. this.$refs.resetPassFormRef.validateField('checkPass')
  438. }
  439. callback()
  440. }
  441. }
  442. var validatePass2 = (rule, value, callback) => {
  443. if (value === '') {
  444. callback(new Error('请再次输入密码'))
  445. } else if (value !== this.resetPassForm.pass) {
  446. callback(new Error('两次输入密码不一致!'))
  447. } else {
  448. callback()
  449. }
  450. }
  451. return {
  452. role: '', //筛选项 角色类型
  453. userTypeCheck: '', //筛选项 用户类型
  454. username: '', //筛选项
  455. roleList: [],
  456. page: 1,
  457. userList: [],
  458. userGroupList: [],
  459. totalNum: 0,
  460. //省市县
  461. areaList: [],
  462. resetPassDialogVisible: false,
  463. addUserDialogVisible: false,
  464. editUserDialogVisible: false,
  465. resetPassForm: {
  466. username: '',
  467. uid: '',
  468. oldPass: '',
  469. pass: '',
  470. checkPass: ''
  471. },
  472. addUserForm: {
  473. username: '',
  474. mobile: '',
  475. pass: '',
  476. role_id: '',
  477. user_type: '',
  478. pcd: '',
  479. user_area: '',
  480. user_group_id: '' //用户组id
  481. },
  482. cityData,
  483. editUserForm: {},
  484. //控制省/市/区显示
  485. editIsShow: false,
  486. //编辑用户规则
  487. editUserFormRules: {
  488. user_phone: [{ validator: checkMobile, trigger: 'blur' }]
  489. },
  490. //添加用户规则
  491. addUserFormRules: {
  492. username: [
  493. { required: true, message: '请填写用户名', trigger: 'blur' }
  494. ],
  495. mobile: [
  496. { required: true, trigger: 'blur',message: '手机号不能为空'},
  497. { validator: checkMobile, trigger: 'blur' }
  498. ],
  499. pass: [{ required: true, message: '请填写用户密码', trigger: 'blur' }]
  500. },
  501. //重置密码格规则
  502. resetPassFormRules: {
  503. oldPass: [{ required: true, message: '请填原始密码', trigger: 'blur' }],
  504. pass: [
  505. { validator: validatePass, trigger: 'blur' },
  506. { required: true, message: '请填写新密码', trigger: 'blur' }
  507. ],
  508. checkPass: [
  509. { validator: validatePass2, trigger: 'blur' },
  510. { required: true, message: '请确认新密码', trigger: 'blur' }
  511. ]
  512. }
  513. }
  514. },
  515. computed: {
  516. //获取用户类型
  517. userType: function () {
  518. return window.sessionStorage.getItem('myuser_type')
  519. }
  520. },
  521. created() {
  522. this.getRoleList()
  523. },
  524. mounted() {
  525. this.getList()
  526. this.getUserGroup() //获取用户组
  527. },
  528. methods: {
  529. getRoleList() {
  530. this.$axios({
  531. method: 'POST',
  532. url: '/api/api_gateway?method=user.perms.role_list'
  533. }).then((res) => {
  534. if (res.data.message == '') {
  535. this.roleList = res.data.data.map((item) => {
  536. return {
  537. role_id: item.role_id,
  538. role_name: item.role_name
  539. }
  540. })
  541. }
  542. })
  543. },
  544. getList() {
  545. this.$axios({
  546. method: 'POST',
  547. url: '/api/api_gateway?method=user.login.users_info',
  548. data: this.qs.stringify({
  549. role_id: this.role,
  550. page_size: 8,
  551. user_type: this.userTypeCheck,
  552. page: this.page,
  553. username: this.username
  554. })
  555. }).then((res) => {
  556. if (res.data.message == '') {
  557. this.userList = res.data.data.data
  558. this.totalNum = res.data.data.count
  559. }
  560. })
  561. },
  562. getUserGroup() {
  563. this.$axios({
  564. method: 'POST',
  565. url: '/api/api_gateway?method=pest.warning_record.rolemanage_view',
  566. data: this.qs.stringify({
  567. add_role: 'all'
  568. })
  569. }).then((res) => {
  570. if (res.data.message == '') {
  571. this.userGroupList = res.data.data.data
  572. }
  573. })
  574. },
  575. recharge(id) {
  576. this.$confirm('是否向该用户充值一年费用?', '信息', {
  577. confirmButtonText: '确定',
  578. cancelButtonText: '取消',
  579. type: 'warning'
  580. })
  581. .then(() => {
  582. this.$axios({
  583. method: 'POST',
  584. url: '/api/api_gateway?method=user.login.user_add_package_time',
  585. data: this.qs.stringify({
  586. uid: id
  587. })
  588. }).then((res) => {
  589. if (res.data.message == '') {
  590. this.$message({
  591. type: 'success',
  592. message: '充值成功!'
  593. })
  594. this.getList()
  595. } else {
  596. this.$message({
  597. type: 'error',
  598. message: '充值失败!'
  599. })
  600. }
  601. })
  602. })
  603. .catch(() => {
  604. this.$message({
  605. type: 'info',
  606. message: '充值取消!'
  607. })
  608. })
  609. },
  610. // 编辑用户信息
  611. edit(role) {
  612. this.editUserForm = role
  613. if (role.role_id == 0) {
  614. //把0转换成""
  615. this.editUserForm.role_id = ''
  616. }
  617. this.editUserDialogVisible = true
  618. },
  619. login(uid, username) {
  620. //一键登录
  621. this.$confirm('一键登录将登录此用户,是否继续?', '提示', {
  622. confirmButtonText: '确定',
  623. cancelButtonText: '取消',
  624. type: 'warning'
  625. })
  626. .then(() => {
  627. this.$axios({
  628. method: 'POST',
  629. url: '/api/api_gateway?method=user.login.auto_login',
  630. data: this.qs.stringify({
  631. uid
  632. })
  633. }).then((res) => {
  634. if (res.data.message == '') {
  635. this.$message({
  636. type: 'success',
  637. message: '操作成功!'
  638. })
  639. localStorage.setItem('username', username) //修改当前登录的用户名
  640. this.reload() //整体刷新
  641. this.$EventBus.$on('firstPage', (data) => { //默认显示菜单第一项
  642. this.$router.push(`${data}`)
  643. })
  644. } else {
  645. this.$message({
  646. type: 'warning',
  647. message: res.data.message
  648. })
  649. }
  650. })
  651. })
  652. .catch(() => {
  653. this.$message({
  654. type: 'info',
  655. message: '取消一键登录!'
  656. })
  657. })
  658. },
  659. //用户禁用
  660. forbidUse(id, state, txt) {
  661. this.$confirm(txt, '提示', {
  662. confirmButtonText: '确定',
  663. cancelButtonText: '取消',
  664. type: 'warning'
  665. })
  666. .then(() => {
  667. this.$axios({
  668. method: 'POST',
  669. url: '/api/api_gateway?method=user.login.users_statu_updata',
  670. data: this.qs.stringify({
  671. uid: id,
  672. state: state
  673. })
  674. }).then((res) => {
  675. if (res.data.message == '') {
  676. this.$message({
  677. type: 'success',
  678. message: '操作成功!'
  679. })
  680. this.getList()
  681. }
  682. })
  683. })
  684. .catch(() => {
  685. this.$message({
  686. type: 'info',
  687. message: '禁用取消!'
  688. })
  689. })
  690. },
  691. //密码重置
  692. resetPassword(id, name) {
  693. // this.resetPassForm.uid = id
  694. // this.resetPassForm.username = name
  695. // this.resetPassDialogVisible = true
  696. this.$confirm('是否重置密码 ? 重置后的密码为 yf_123456', '提示', {
  697. confirmButtonText: '确定',
  698. cancelButtonText: '取消',
  699. type: 'warning'
  700. })
  701. .then(() => {
  702. this.$axios({
  703. method: 'POST',
  704. url: '/api/api_gateway?method=user.login.admin_changepwd',
  705. data: this.qs.stringify({
  706. uid: id
  707. })
  708. }).then((res) => {
  709. if (res.data.message == '') {
  710. this.$message({
  711. type: 'success',
  712. message: '操作成功!'
  713. })
  714. this.getList()
  715. } else {
  716. this.$message({
  717. type: 'warning',
  718. message: res.data.message
  719. })
  720. }
  721. })
  722. })
  723. .catch(() => {
  724. this.$message({
  725. type: 'info',
  726. message: '取消重置密码!'
  727. })
  728. })
  729. },
  730. resetPassSubm() {
  731. //暂时不用
  732. this.$refs.resetPassFormRef.validate((valid) => {
  733. if (!valid) return
  734. this.$axios({
  735. method: 'POST',
  736. url: '/api/api_gateway?method=user.login.changepwd',
  737. data: this.qs.stringify({
  738. uid: this.resetPassForm.uid,
  739. old_password: this.resetPassForm.oldPass,
  740. new_password: this.resetPassForm.pass,
  741. confirm_password: this.resetPassForm.checkPass
  742. })
  743. }).then((res) => {
  744. if (res.data.message=='') {
  745. this.$message.success('修改密码成功')
  746. this.resetPassDialogVisible = false
  747. } else {
  748. this.$message.error(res.data.message)
  749. }
  750. })
  751. })
  752. },
  753. //监听重置密码对话框的关闭事件
  754. resetPassDialogClosed() {
  755. this.$refs.resetPassFormRef.resetFields()
  756. },
  757. changePage(value) {
  758. this.page = value
  759. this.getList()
  760. },
  761. //添加用户
  762. addUser() {
  763. this.addUserDialogVisible = true
  764. },
  765. //监听用户类型改变
  766. userTypeChange(val) {
  767. if (val == 3) {
  768. this.editIsShow = true
  769. } else {
  770. this.editIsShow = false
  771. }
  772. },
  773. //监听省/市/区
  774. pcdChange(val) {
  775. let addr_type = ''
  776. switch (val) {
  777. case '1':
  778. addr_type = 'province'
  779. break
  780. case '2':
  781. addr_type = 'city'
  782. break
  783. case '3':
  784. addr_type = 'district'
  785. break
  786. }
  787. this.$axios({
  788. method: 'POST',
  789. url: '/api/api_gateway?method=device.device_manage.device_addr',
  790. data: this.qs.stringify({
  791. addr_type
  792. })
  793. }).then((res) => {
  794. if (res.data.message == '') {
  795. this.areaList = res.data.data
  796. this.editUserForm.user_area = ''
  797. }
  798. })
  799. },
  800. //添加用户提交
  801. addUserSubm() {
  802. this.$refs.addUserFormRef.validate((valid) => {
  803. if (!valid) return
  804. this.$axios({
  805. method: 'POST',
  806. url: '/api/api_gateway?method=user.login.regiest',
  807. data: this.qs.stringify({
  808. username: this.addUserForm.username,
  809. mobile: this.addUserForm.mobile,
  810. password: this.addUserForm.pass,
  811. role_id: this.addUserForm.role_id,
  812. user_type: this.addUserForm.user_type,
  813. pcd: this.addUserForm.pcd,
  814. user_area: this.addUserForm.user_area,
  815. user_group_id: this.addUserForm.user_group_id
  816. })
  817. }).then((res) => {
  818. if (res.data.message == '') {
  819. this.$message.success('添加用户成功!')
  820. this.addUserDialogVisible = false
  821. this.getList()
  822. } else {
  823. this.$message.error(res.data.message)
  824. }
  825. })
  826. })
  827. },
  828. addUserDialogClosed() {
  829. this.$refs.addUserFormRef.resetFields()
  830. },
  831. //修改用户信息提交
  832. editUserSubm() {
  833. this.$refs.editUserFormRef.validate((valid) => {
  834. if (!valid) return
  835. this.$axios({
  836. method: 'POST',
  837. url: '/api/api_gateway?method=user.login.users_info_updata',
  838. data: this.qs.stringify({
  839. uid: this.editUserForm.uid,
  840. // username: this.editUserForm.username,
  841. mobile: this.editUserForm.mobile,
  842. role_id: this.editUserForm.role_id,
  843. user_type: this.editUserForm.user_type,
  844. pcd: this.editUserForm.pcd,
  845. user_area: this.editUserForm.user_area,
  846. user_group_id: this.editUserForm.user_group_id
  847. })
  848. }).then((res) => {
  849. if (res.data.message == '') {
  850. this.editUserDialogVisible = false
  851. this.getList()
  852. }
  853. })
  854. })
  855. },
  856. editUserDialogClosed() {
  857. this.$refs.editUserFormRef.resetFields()
  858. this.areaList = [] //清空省/市/区
  859. this.editIsShow = false
  860. },
  861. checkList() {
  862. this.page = 1
  863. this.getList()
  864. }
  865. },
  866. filters: {
  867. formatUserType(value) {
  868. switch (value) {
  869. case 1:
  870. return '超级管理员'
  871. break
  872. case 2:
  873. return '经销商'
  874. break
  875. case 3:
  876. return '农林政府单位'
  877. break
  878. case 4:
  879. return '普通用户'
  880. break
  881. }
  882. }
  883. }
  884. }
  885. </script>
  886. <style lang='less' scoped>
  887. .search-box {
  888. display: flex;
  889. justify-content: space-between;
  890. margin-bottom: 10px;
  891. .filter-box > div {
  892. margin-right: 15px;
  893. }
  894. .el-input {
  895. width: 200px;
  896. }
  897. .el-date-editor--daterange {
  898. width: 222px;
  899. }
  900. }
  901. .el-card {
  902. .img-box {
  903. text-align: center;
  904. border-bottom: 1px solid #e1e1e1;
  905. padding: 15px 0;
  906. p {
  907. font-size: 14px;
  908. font-weight: 800;
  909. margin-top: 10px;
  910. }
  911. }
  912. .detail {
  913. border-bottom: 1px solid #e1e1e1;
  914. padding: 10px 0;
  915. padding: 0 20px;
  916. p {
  917. display: flex;
  918. justify-content: space-between;
  919. font-size: 13px;
  920. line-height: 34px;
  921. color: #666;
  922. padding: 0 0px;
  923. }
  924. }
  925. .btn {
  926. text-align: center;
  927. padding: 20px 10px;
  928. display: flex;
  929. justify-content: space-around;
  930. a {
  931. flex: 1;
  932. margin: 0 8px;
  933. border: 1px solid #17bb89;
  934. color: #17bb89;
  935. border-radius: 4px;
  936. font-size: 12px;
  937. padding: 5px 5px;
  938. cursor: pointer;
  939. i {
  940. font-size: 12px;
  941. margin-right: 2px;
  942. }
  943. }
  944. }
  945. }
  946. // 暂无数据
  947. .expertDiagnosis_referral_units_not {
  948. width: 272px;
  949. margin: 0 auto;
  950. }
  951. </style>