SuperAdmin.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. <template>
  2. <div>
  3. <crumbs title="超管信息">
  4. <el-form :inline="true" class="demo-form-inline">
  5. <el-form-item label="注册时间:">
  6. <el-date-picker v-model="filter.time"
  7. value-format="yyyy-MM-dd HH:mm:ss"
  8. :default-time="['00:00:01', '23:59:59']"
  9. size="mini"
  10. start-placeholder="开始日期"
  11. end-placeholder="结束日期"
  12. type="daterange"></el-date-picker>
  13. </el-form-item>
  14. <el-form-item label="机构名称:">
  15. <el-input v-model="filter.orgName" clearable size="mini" placeholder="机构名称"></el-input>
  16. </el-form-item>
  17. <el-form-item label="手机号:">
  18. <el-input v-model="filter.userName" clearable size="mini" placeholder="手机号"></el-input>
  19. </el-form-item>
  20. <el-form-item>
  21. <el-button size="mini" @click="filterDatas">确认</el-button>
  22. <router-link to="/admin/LT-DDXT-TJCG" style="margin:0 10px">
  23. <el-button size="mini" type="warning">添加超管</el-button>
  24. </router-link>
  25. <el-button size="mini" type="primary" @click="exportData">导出</el-button>
  26. </el-form-item>
  27. </el-form>
  28. </crumbs>
  29. <div class="contents">
  30. <el-table :data="list"
  31. border
  32. style="width: 100%">
  33. <el-table-column
  34. type="index"
  35. :index="indexMethod"
  36. label="编号"
  37. width="60">
  38. </el-table-column>
  39. <el-table-column
  40. prop="orgGmtCreate"
  41. label="注册时间"
  42. width="180">
  43. </el-table-column>
  44. <el-table-column
  45. prop="orderNum"
  46. label="认证申请单号"
  47. width="180">
  48. </el-table-column>
  49. <el-table-column
  50. prop="linkman"
  51. label="超管名称">
  52. </el-table-column>
  53. <el-table-column
  54. prop="orgName"
  55. label="所在机构"
  56. width="120"
  57. >
  58. </el-table-column>
  59. <el-table-column
  60. prop="position"
  61. label="岗位名称">
  62. </el-table-column>
  63. <el-table-column
  64. prop="userName"
  65. label="手机号"
  66. width="140">
  67. </el-table-column>
  68. <el-table-column
  69. prop="email"
  70. label="邮箱">
  71. </el-table-column>
  72. <el-table-column
  73. prop="authStatusStr"
  74. label="状态">
  75. </el-table-column>
  76. <el-table-column
  77. label="审核状态"
  78. width="110">
  79. <template slot-scope="scope">
  80. <el-button type="text" size="small" @click="showPassDialog(scope.row,1)">通过</el-button>
  81. <span style="margin:0 3px;">|</span>
  82. <el-popover placement="bottom-start"
  83. width="380"
  84. v-model="scope.row.visible"
  85. >
  86. <el-form>
  87. <span class="closeDate" @click="scope.row.visible= !scope.row.visible">×</span>
  88. <h4>原因说明</h4>
  89. <el-form-item>
  90. <el-radio-group v-model="type" @change="rejectReason=''" v-if="reasons&&reasons.length">
  91. <p v-for="(it,index) in reasons" style="margin: 10px 0;">
  92. <el-radio :label="it.key">{{it.name}}</el-radio>
  93. </p>
  94. </el-radio-group>
  95. </el-form-item>
  96. <el-form-item>
  97. <el-input v-model="rejectReason" @focus="type=''" type="textarea" placeholder="其他原因说明"></el-input>
  98. </el-form-item>
  99. <el-form-item>
  100. <el-button type="primary" @click="handleApply(scope.row,0)">完成</el-button>
  101. </el-form-item>
  102. </el-form>
  103. <el-button slot="reference" size="mini" >不通过</el-button>
  104. </el-popover>
  105. </template>
  106. </el-table-column>
  107. </el-table>
  108. <el-pagination v-if="total>pageSize"
  109. :current-page.sync="currentPage"
  110. @current-change="currentChange"
  111. background
  112. :page-size="pageSize"
  113. layout="total,prev, pager, next, jumper"
  114. :total="total">
  115. </el-pagination>
  116. </div>
  117. </div>
  118. </template>
  119. <script>
  120. import api from '@api/admin.js';
  121. import utils from '@api/utils.js';
  122. export default {
  123. name: 'super-admin',
  124. data: function () {
  125. return {
  126. visible: false,
  127. reasons: [],
  128. rejectReason: '',
  129. type:'',
  130. currentId: '',
  131. status:'',
  132. list: [],
  133. cacheData: {},
  134. currentPage: 1,
  135. pageSize: 10,
  136. total: 0,
  137. filter: {
  138. time: '',
  139. orgName: '',
  140. userName: ''
  141. }
  142. }
  143. },
  144. created() {
  145. this.getDataList();
  146. const enums = JSON.parse(localStorage.getItem('enumsData')); //审核不通过原因枚举
  147. this.reasons = enums&&enums.accdenEnum;
  148. },
  149. methods: {
  150. showPassDialog(row,status){ //打开通过弹窗
  151. this.$alert('操作不可逆!确定要通过审核吗?', '提示', {
  152. confirmButtonText: '确定',
  153. callback: action => {
  154. if(action == 'confirm'){
  155. this.currentId = row.userId;
  156. this.status = status;
  157. const param = {
  158. userId: row.userId,
  159. orderNum: row.orderNum
  160. };
  161. api.auditUserInfoAllPass(param).then((res)=>{
  162. if(res.data.code=='0'){
  163. this.currentPage = 1;
  164. this.$message({
  165. message:'操作成功',
  166. type:'success'
  167. });
  168. this.getDataList(); //操作成功刷新列表
  169. }else{
  170. this.$message({
  171. message:res.data.msg,
  172. type:'warning'
  173. });
  174. }
  175. });
  176. }
  177. }
  178. });
  179. },
  180. handleApply(row){
  181. const param = {
  182. rejectComment: this.rejectReason,
  183. rejectType: this.type,
  184. userId: row.userId,
  185. orderNum:row.orderNum
  186. };
  187. if(this.type===''&&this.rejectReason===''){
  188. this.$message({
  189. showClose: true,
  190. message:'请选择/填写不通过原因',
  191. type:'warning'
  192. });
  193. return;
  194. }
  195. if(this.rejectReason.length>100){
  196. this.$message({
  197. showClose: true,
  198. message:'不通过原因最多可输入100字',
  199. type:'warning'
  200. });
  201. return;
  202. }
  203. api.auditUserInfoAll(param).then((res)=>{
  204. if(res.data.code=='0'){
  205. this.currentPage = 1;
  206. this.$message({
  207. showClose: true,
  208. message:'操作成功',
  209. type:'success'
  210. });
  211. }else{
  212. this.$message({
  213. showClose: true,
  214. message:res.data.msg,
  215. type:'warning'
  216. });
  217. }
  218. this.getDataList(); //操作后刷新列表
  219. });
  220. },
  221. indexMethod(index) {
  222. return ((this.currentPage - 1) * this.pageSize) + index + 1;
  223. },
  224. filterDatas(){
  225. this.currentPage = 1;
  226. this.getDataList();
  227. },
  228. getDataList() {
  229. const param = this.getFilterItems();
  230. api.getAuthentication(param).then((res) => {
  231. if (res.data.code == '0') {
  232. const data = res.data.data;
  233. this.list = data.records.map((item) => {
  234. return {...item, visible:false}
  235. }); //当前页显示的数据
  236. this.cacheData[param.current] = data.records; //缓存数据
  237. this.total = data.total;
  238. }
  239. }).catch((error) => {
  240. console.log(error);
  241. });
  242. },
  243. currentChange(next) { //切换当前页
  244. this.currentPage = next;
  245. if (this.cacheData[next]) { //如果已请求过该页数据,则使用缓存不重复请求
  246. this.list = this.cacheData[next];
  247. } else {
  248. this.getDataList();
  249. }
  250. },
  251. getFilterItems() { //筛选
  252. const time = this.filter.time;
  253. const startTime = time&&time[0]||undefined;
  254. const endTime = time&&time[1]||undefined;
  255. const param = {
  256. startTime,
  257. endTime,
  258. userName: this.filter.userName||undefined,
  259. orgName: this.filter.orgName||undefined,
  260. current: this.currentPage,
  261. size: this.pageSize
  262. };
  263. return param;
  264. },
  265. exportData() { //导出
  266. const canExport = utils.exportCondition(this.filter.time);
  267. if(typeof canExport == 'string'){
  268. this.$message({
  269. message:canExport,
  270. type:'warning'
  271. });
  272. return;
  273. }
  274. const param = this.getFilterItems();
  275. api.exportKema(param).then((res) => {
  276. if (res.data.code = '0') {
  277. utils.downloadExportedData(res.data, '审核超管信息表.xls');
  278. this.$message({message: "导出成功", type: 'success'});
  279. } else {
  280. this.$message({
  281. message: res.data.msg,
  282. type: 'warning'
  283. });
  284. }
  285. }).catch((error) => {
  286. this.$message({
  287. message: "服务器正忙...",
  288. type: 'warning'
  289. });
  290. });
  291. }
  292. }
  293. }
  294. </script>
  295. <style lang="less">
  296. @import "../../less/admin.less";
  297. .closeDate {
  298. position: absolute;
  299. top: 0px;
  300. right: 7px;
  301. cursor: pointer;
  302. font-size: 20px;
  303. }
  304. </style>