index.blade.php 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295
  1. @extends('layouts.base')
  2. @section('title', '认证信息')
  3. @section('content')
  4. <style>
  5. .panel{
  6. margin-bottom:10px!important;
  7. border-radius: 10px;
  8. padding-left: 20px;
  9. }
  10. .panel .active a {
  11. background-color: #29ba9c!important;
  12. border-radius: 18px!important;
  13. color:#fff;
  14. }
  15. .panel a{
  16. border:none!important;
  17. background-color:#fff!important;
  18. }
  19. .content{
  20. background: #eff3f6;
  21. padding: 10px!important;
  22. }
  23. .con{
  24. padding-bottom:20px;
  25. position:relative;
  26. border-radius: 8px;
  27. min-height: 100vh;
  28. background: #fff;
  29. }
  30. .con .setting .block{
  31. padding:10px;
  32. background-color:#fff;
  33. border-radius: 8px;
  34. margin-bottom:10px;
  35. }
  36. .con .setting .block .title{
  37. font-size:18px;
  38. margin-bottom:32px;
  39. display:flex;
  40. align-items:center;
  41. justify-content:space-between;
  42. }
  43. .confirm-btn{
  44. width: 100%;
  45. position:absolute;
  46. bottom:0;
  47. left:0;
  48. line-height:63px;
  49. background-color: #ffffff;
  50. box-shadow: 0px 8px 23px 1px
  51. rgba(51, 51, 51, 0.3);
  52. background-color:#fff;
  53. text-align:center;
  54. }
  55. .add{
  56. width: 154px;
  57. height: 36px;
  58. border-radius: 4px;
  59. border: solid 1px #29ba9c;
  60. color:#29ba9c;
  61. display:flex;
  62. align-items:center;
  63. justify-content:center;
  64. }
  65. .el-table--fit{
  66. margin-top:-10px;
  67. }
  68. b{
  69. font-size:14px;
  70. }
  71. .el-table--border::after, .el-table--group::after, .el-table::before{
  72. background-color:#fff;
  73. }
  74. </style>
  75. <div id='re_content' >
  76. <div class="con">
  77. <div class="setting">
  78. <div class="block">
  79. <div class="title">
  80. <div style="display:flex;align-items:center;">
  81. <span style="width: 4px;height: 18px;background-color: #29ba9c;margin-right:15px;display:inline-block;"></span><b>认证信息</b>
  82. </div>
  83. </div>
  84. <el-input v-model="search_form.member_id" style="width:auto;margin-right:16px;margin-bottom:16px;" placeholder="会员ID"></el-input>
  85. <el-input v-model="search_form.member" style="width:auto;margin-right:16px;" placeholder="昵称/姓名/手机号"></el-input>
  86. <el-input v-model="search_form.name" style="width:auto;margin-right:16px;" placeholder="实名认证姓名"></el-input>
  87. <el-input v-model="search_form.mobile" style="width:auto;margin-right:16px;" placeholder="实名认证手机号"></el-input>
  88. <el-input v-model="search_form.id_card" style="width:auto;margin-right:16px;" placeholder="实名认证身份证号"></el-input>
  89. <template>
  90. <el-select v-model="search_form.level_id" placeholder="会员等级" style="width:auto;margin-right:16px;">
  91. <el-option v-for="item in level" :key="item.value" :label="item.level_name" :value="item.id"></el-option>
  92. </el-select>
  93. </template>
  94. <template>
  95. <el-select v-model="search_form.group_id" placeholder="会员分组" style="width:auto;margin-right:16px;">
  96. <el-option v-for="item in group" :key="item.value" :label="item.group_name" :value="item.id"></el-option>
  97. </el-select>
  98. </template>
  99. <template>
  100. <el-select v-model="search_form.auth_type" placeholder="实名认证方式" style="width:auto;margin-right:16px;">
  101. <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.status"></el-option>
  102. </el-select>
  103. </template>
  104. <template>
  105. <span class="demonstration"></span>
  106. <el-date-picker
  107. v-model="search_form.create_time"
  108. type="datetimerange"
  109. range-separator="至"
  110. start-placeholder="开始日期"
  111. end-placeholder="结束日期"
  112. align="right">
  113. </el-date-picker>
  114. </template>
  115. <el-button type="primary" style="margin-left:16px;" @click="search">搜索</el-button>
  116. </div>
  117. <div style="background: #eff3f6;width:100%;height:15px;"></div>
  118. <div class="block">
  119. <div class="title">
  120. <div style="display:flex;align-items:center;">
  121. <span style="width: 4px;height: 18px;background-color: #29ba9c;margin-right:15px;display:inline-block;">
  122. </span><b>认证列表</b>
  123. </div>
  124. </div>
  125. </div>
  126. <el-table :data="tableData" style="padding:0 10px" style="width: 100%">
  127. <el-table-column prop="member_id" align="center" label="会员id"></el-table-column>
  128. <el-table-column align="center" label="粉丝">
  129. <template slot-scope="scope">
  130. <img style='width:40px;height:40px' v-if="scope.row.has_one_member" :src=scope.row.has_one_member.avatar_image style="max-width:100px">
  131. <div>[[scope.row.has_one_member?scope.row.has_one_member.nickname:'未更新']]</div>
  132. </template>
  133. </el-table-column>
  134. <el-table-column align="center" label="姓名/手机号码">
  135. <template slot-scope="scope">
  136. <div>[[scope.row.has_one_member?scope.row.has_one_member.realname:'未更新']]</div>
  137. <div>[[scope.row.has_one_member?scope.row.has_one_member.mobile:'']]</div>
  138. </template>
  139. </el-table-column>
  140. <el-table-column align="center" label="等级/分组">
  141. <template slot-scope="scope">
  142. <div v-if="scope.row.yz_member">[[scope.row.yz_member.level?scope.row.yz_member.level.level_name:'普通会员']]</div>
  143. <div v-if="scope.row.yz_member">[[scope.row.yz_member.group?scope.row.yz_member.group.group_name:'无分组']]</div>
  144. </template>
  145. </el-table-column>
  146. <el-table-column align="center" label="注册时间/认证时间">
  147. <template slot-scope="scope">
  148. <div>[[scope.row.has_one_member?scope.row.has_one_member.createtime:'']]</div>
  149. <div>[[scope.row.created_at]]</div>
  150. </template>
  151. </el-table-column>
  152. <el-table-column prop="name" align="center" label="认证姓名"></el-table-column>
  153. <el-table-column align="center" label="认证方式">
  154. <template slot-scope="scope">
  155. <div v-if="scope.row.auth_type==1">刷脸认证</div>
  156. <div v-if="scope.row.auth_type==2">手机认证</div>
  157. <div v-if="scope.row.auth_type==3">银行卡认证</div>
  158. </template>
  159. </el-table-column>
  160. <el-table-column align="center" label="认证状态">
  161. <template slot-scope="scope">
  162. <div v-if="scope.row.auth_status==0">认证中</div>
  163. <div v-if="scope.row.auth_status==1">已认证</div>
  164. </template>
  165. </el-table-column>
  166. <el-table-column align="center" label="操作">
  167. <template slot-scope="scope">
  168. <a style="color: #00a2ff" v-bind:href="'{{ yzWebUrl('plugin.real-name-auth.admin.controllers.list.detail', ['id'=>'']) }}'+[[scope.row.id]]">
  169. <i style="font-size:15px;">详情</i>
  170. </a>
  171. </template>
  172. </el-table-column>
  173. </el-table>
  174. <el-row style="background-color:#fff;">
  175. <el-col :span="24" align="center" migra style="padding:15px 5% 15px 0" v-loading="loading">
  176. <el-pagination background @current-change="currentChange"
  177. layout="prev, pager, next"
  178. :page-size="page_size" :current-page="current_page" :total="page_total">
  179. </el-pagination>
  180. </el-col>
  181. </el-row>
  182. </div>
  183. </div>
  184. </div>
  185. <script>
  186. var vm = new Vue({
  187. el: "#re_content",
  188. delimiters: ['[[', ']]'],
  189. data() {
  190. let level = {!! json_encode($level) ?: '{}' !!};
  191. let group = {!! json_encode($group) ?: '{}' !!};
  192. return {
  193. dataList:[],
  194. loading:false,
  195. search_loading:false,
  196. all_loading:false,
  197. page_total:0,
  198. page_size:0,
  199. current_page:0,
  200. search_form:{},
  201. real_search_form:{},
  202. options: [
  203. {
  204. status: 1,
  205. label: '刷脸认证'
  206. },
  207. {
  208. status: 2,
  209. label: '手机号认证'
  210. },
  211. {
  212. status: 3,
  213. label: '银行卡认证'
  214. }
  215. ],
  216. level:level,
  217. group:group,
  218. tableData: []
  219. }
  220. },
  221. mounted () {
  222. this.getData();
  223. },
  224. methods: {
  225. search() {
  226. this.search_loading = true;
  227. if(this.search_form.create_time){
  228. this.search_form.create_time[0] = Math.round(this.search_form.create_time[0]/1000).valueOf();
  229. this.search_form.create_time[1] = Math.round(this.search_form.create_time[1]/1000).valueOf();
  230. }
  231. let json={
  232. search:this.search_form,
  233. };
  234. this.$http.post('{!! yzWebFullUrl('plugin.real-name-auth.admin.controllers.list.search') !!}',json
  235. ).then(function (response) {
  236. if (response.data.result){
  237. let datas = response.data.data.list;
  238. this.dataList=datas.data
  239. this.tableData=datas.data
  240. this.page_total = datas.total;
  241. this.page_size = datas.per_page;
  242. this.current_page = datas.current_page;
  243. this.loading = false;
  244. this.real_search_form=Object.assign({},this.search_form);
  245. }
  246. else {
  247. this.$message({message: response.data.msg,type: 'error'});
  248. }
  249. this.search_loading = false;
  250. },function (response) {
  251. this.search_loading = false;
  252. this.$message({message: response.data.msg,type: 'error'});
  253. }
  254. );
  255. },
  256. currentChange(val) {
  257. this.loading = true;
  258. this.$http.post('{!! yzWebFullUrl('plugin.real-name-auth.admin.controllers.list.search') !!}',{page:val,search:this.real_search_form}).then(function (response){
  259. if (response.data.result){
  260. let datas = response.data.data.list;
  261. this.tableData = datas.data
  262. this.page_total = datas.total;
  263. this.page_size = datas.per_page;
  264. this.current_page = datas.current_page;
  265. this.loading = false;
  266. } else {
  267. this.$message({message: response.data.msg,type: 'error'});
  268. }
  269. },function (response) {
  270. console.log(response);
  271. this.loading = false;
  272. }
  273. );
  274. },
  275. getData(){
  276. this.$http.post('{!! yzWebFullUrl('plugin.real-name-auth.admin.controllers.list.search') !!}').then(function (response){
  277. if (response.data.result) {
  278. let datas = response.data.data.list;
  279. this.tableData = datas.data;
  280. this.page_total = datas.total;
  281. this.page_size = datas.per_page;
  282. this.current_page = datas.current_page;
  283. this.loading = false;
  284. }else{
  285. this.$message({message: response.data.msg,type: 'error'});
  286. }
  287. },function (response) {
  288. this.$message({message: response.data.msg,type: 'error'});
  289. })
  290. },
  291. },
  292. });
  293. </script>
  294. @endsection