index.vue 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. <template>
  2. <div class="app-container">
  3. <search-form
  4. :list-loading="listLoading"
  5. @change="searchHandle"
  6. />
  7. <table-list
  8. :list-loading="listLoading"
  9. :data="tableData2"
  10. :columns="listConfig"
  11. :current-page="currentPage"
  12. :page-size="pageSize"
  13. :total-records="totalRecords"
  14. @currentChange="pageHandle"
  15. @sizeChange="sizeChange"
  16. :isAdd="true"
  17. @add="openPopup"
  18. :operationsDefaultLength="6"
  19. />
  20. <popup-edit
  21. :isShow="isDtlShow"
  22. :curObj="curObj"
  23. @close="closePopup"
  24. />
  25. <pwd-edit
  26. :isShow="isPwdShow"
  27. :curObj="curObj"
  28. @close="closePwdPopup"
  29. />
  30. </div>
  31. </template>
  32. <script>
  33. import { arrToObj } from '@/utils'
  34. import SearchForm from './components/searchForm/Index'
  35. import PopupEdit from './components/popup/IndexEdit'
  36. import PwdEdit from './components/popup/PwdEdit'
  37. import baseTable from '_m/baseTable.js'
  38. export default {
  39. name: 'index',
  40. components: {
  41. SearchForm,
  42. PopupEdit,
  43. PwdEdit,
  44. },
  45. provide() {
  46. return {
  47. parentData: this
  48. }
  49. },
  50. mixins: [baseTable],
  51. data() {
  52. return {
  53. apiStr: 'user.admuserlist',
  54. searchForm: null,
  55. isDtlShow: false,
  56. isPwdShow: false,
  57. curObj: {},
  58. }
  59. },
  60. computed: {
  61. tableData2() {
  62. const arr = [...this.tableData]
  63. arr.map(item => {
  64. if (!item.role_name) item.role_name = '---'
  65. let GTObj = arrToObj(this.$dictData.group_type)
  66. item.roleName = `${GTObj[item.group_type]}/${item.role_name}`
  67. })
  68. return arr
  69. }
  70. },
  71. created() {},
  72. mounted() {
  73. this.listConfig = {
  74. rows: [
  75. { label: '推荐人', prop: 'referrer' },
  76. { label: '渠道', prop: 'dept_name', fullShow: true },
  77. { label: '昵称', prop: 'nickname' },
  78. { label: '手机号', prop: 'phone' },
  79. { label: '角色', prop: 'roleName', fullShow: true, minWidth: 150 },
  80. { label: '身份认证', prop: 'auth_state', type: 'tag', tags: arrToObj(this.$dictData.auth_state), tagTypeObj: {'1': 'success', '2': 'warning', '3': 'danger', '4': 'info'} },
  81. { label: '后台登录', prop: 'is_backend', type: 'tag', tags: arrToObj(this.$dictData.sys_yesno), tagTypeObj: {'1': 'success', '2': 'danger'} },
  82. { label: '绑定微信', prop: 'bind_wechat', type: 'tag', tags: arrToObj(this.$dictData.sys_yesno), tagTypeObj: {'1': 'success', '2': 'danger'} },
  83. { label: '类型', prop: 'user_type', type: 'flag', flags: arrToObj(this.$dictData.user_type)},
  84. { label: '楼盘角色', prop: 'manage_type', type: 'flag', flags: arrToObj(this.$dictData.manage_type) },
  85. { label: '关联楼盘', prop: 'estate_name' },
  86. { label: '更新时间', prop: 'update_at' },
  87. // { label: '系统', prop: 'is_admin', type: 'tag', tags: arrToObj(this.$dictData.sys_yesno), tagTypeObj: {'1': 'success', '2': 'danger'} },
  88. { label: '系统', prop: 'is_admin' },
  89. { label: '操作', width: 260, type: 'handle2', operations:
  90. [
  91. { label: '编辑', func: this.openPopup, btnType: 'primary' },
  92. { label: '删除', func: this.delHandle, btnType: 'danger' },
  93. { labelFor: 'is_admin', func: this.adminHandle,
  94. labelConfig: {
  95. texts: {
  96. 1: 'NO',
  97. 2: 'YES'
  98. },
  99. btnTypes: {
  100. 1: 'danger',
  101. 2: 'success'
  102. }
  103. }
  104. },
  105. { label: '重置密码', func: this.openPwdPopup, btnType: 'danger' },
  106. ]
  107. }
  108. ]
  109. }
  110. },
  111. methods: {
  112. closePwdPopup (obj) {
  113. if (obj) {
  114. const params = obj
  115. let apiStr = 'admuserchangepwd'
  116. this.$api.user[apiStr]({
  117. ...params,
  118. user_id: this.curObj.id
  119. }).then(data => {
  120. this.$msgs('修改成功')
  121. this.fetchData()
  122. this.isDtlShow = false
  123. })
  124. } else {
  125. this.isDtlShow = false
  126. }
  127. },
  128. openPwdPopup (row) {
  129. this.curObj = row
  130. this.isPwdShow = true
  131. },
  132. adminHandle (row) {
  133. const is_admin = Number(row.is_admin) === 1 ? 2 : 1
  134. const msgText = Number(row.is_admin) === 1 ? '禁用' : '设置'
  135. this.$msg(`确定把${row.nickname}${msgText}为超级管理员吗?`, 'confirm', ()=> {
  136. this.$api.user.admuseradmin({
  137. id: row.id,
  138. is_admin
  139. }).then(data => {
  140. this.$msgs(`${msgText}成功!`)
  141. this.fetchData()
  142. })
  143. }, null, true)
  144. },
  145. delHandle(row) {
  146. this.$msg(`您确定要删除该用户吗?`, 'confirm', () => {
  147. this.$api.user.admuserdel({
  148. id: row.id
  149. }).then(data => {
  150. this.$msgs(`已删除!`)
  151. this.fetchData()
  152. })
  153. }, null, true)
  154. },
  155. openPopup(row) {
  156. if (row && row.id) {
  157. this.curObj = row
  158. } else {
  159. this.curObj = {}
  160. }
  161. this.isDtlShow = true
  162. },
  163. closePopup(obj) {
  164. if (obj) {
  165. const params = obj
  166. let apiStr = 'admuseradd'
  167. if (obj.id) apiStr = 'admuseredit'
  168. this.$api.user[apiStr]({
  169. ...params,
  170. }).then(data => {
  171. this.$msgs(obj.id ? '编辑成功' : '新增成功')
  172. this.fetchData()
  173. this.isDtlShow = false
  174. })
  175. } else {
  176. this.isDtlShow = false
  177. }
  178. }
  179. }
  180. }
  181. </script>