index.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257
  1. <div id="app" v-cloak>
  2. <el-card shadow="never" style="border:0;min-width: 1000px;" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  3. <div slot="header">
  4. <span>会员列表</span>
  5. </div>
  6. <div class="table-body">
  7. <el-form ref="form" style="margin-bottom: 10px;" :model="search" label-width="96px" size="mini">
  8. <el-row :gutter="18">
  9. <el-col :span="5" style="padding-left: 0;">
  10. <el-form-item label="会员ID">
  11. <el-input v-model="search.user_id" placeholder="请输入会员ID" clearable></el-input>
  12. </el-form-item>
  13. </el-col>
  14. <el-col :span="5">
  15. <el-form-item label="会员手机号">
  16. <el-input v-model="search.mobile" placeholder="会员手机号" clearable></el-input>
  17. </el-form-item>
  18. </el-col>
  19. <el-col :span="6">
  20. <el-button type="primary" size="mini" @click="toSearch" >搜索</el-button>
  21. <el-button type="danger" size="mini" @click="resetSearch" >清除</el-button>
  22. </el-col>
  23. </el-row>
  24. </el-form>
  25. <el-tabs v-model="activeName">
  26. <el-table :data="list" stripe v-loading="loading" size="small" style="margin-bottom: 15px;">
  27. <el-table-column label="用户信息" width="180">
  28. <template slot-scope="scope">
  29. <com-image style="float: left;margin-right: 5px;" class="avatar_url" mode="aspectFill" :src="scope.row.user.avatar_url ? scope.row.user.avatar_url : '/resources/img/common/default-avatar.png'"></com-image>
  30. <div>ID:{{scope.row.user_id}}<br/>{{scope.row.nickname}}</div>
  31. </template>
  32. </el-table-column>
  33. <el-table-column prop="mobile" label="手机号码" align="center" width="120"></el-table-column>
  34. <el-table-column label="营业执照" prop="license" align="center">
  35. <template slot-scope="scope">
  36. <el-popover placement="top-start" trigger="hover">
  37. <div class="from_img2">
  38. <img :src="scope.row.license" alt="">
  39. </div>
  40. <div class="preview_img" slot="reference">
  41. <img style="height: 80px;" :src="scope.row.license" alt="">
  42. </div>
  43. </el-popover>
  44. </template>
  45. </el-table-column>
  46. <el-table-column label="店铺抬头" prop="store_info" width="300"></el-table-column>
  47. <el-table-column label="身份证(正)" prop="idcart_front" align="center">
  48. <template slot-scope="scope">
  49. <el-popover placement="top-start" trigger="hover">
  50. <div class="from_img2">
  51. <img :src="scope.row.idcart_front" alt="">
  52. </div>
  53. <div class="preview_img" slot="reference">
  54. <img style="height: 80px" :src="scope.row.idcart_front" alt="">
  55. </div>
  56. </el-popover>
  57. </template>
  58. </el-table-column>
  59. <el-table-column label="身份证(反)" prop="idcart_back" align="center">
  60. <template slot-scope="scope">
  61. <el-popover placement="top-start" trigger="hover">
  62. <div class="from_img2">
  63. <img :src="scope.row.idcart_back" alt="">
  64. </div>
  65. <div class="preview_img" slot="reference">
  66. <img style="height: 80px" :src="scope.row.idcart_back" alt="">
  67. </div>
  68. </el-popover>
  69. </template>
  70. </el-table-column>
  71. <el-table-column label="身份证(手持)" prop="idcart_hands" align="center">
  72. <template slot-scope="scope">
  73. <el-popover placement="top-start" trigger="hover">
  74. <div class="from_img2">
  75. <img :src="scope.row.idcart_hands" alt="">
  76. </div>
  77. <div class="preview_img" slot="reference">
  78. <img style="height: 80px;" :src="scope.row.idcart_hands" alt="">
  79. </div>
  80. </el-popover>
  81. </template>
  82. </el-table-column>
  83. <el-table-column label="加入时间" align="center">
  84. <template slot-scope="scope">
  85. {{scope.row.created_at|dateTimeFormat('Y-m-d H:i:s')}}
  86. </template>
  87. </el-table-column>
  88. <el-table-column label="操作" align="center" width="120">
  89. <template slot-scope="scope">
  90. <el-button type="text" v-if="scope.row.is_poss == 0" @click="handle('agree',scope.row)">同意</el-button>
  91. <el-button type="text" v-if="scope.row.is_poss == 0" @click="handle('reject',scope.row)">驳回</el-button>
  92. <el-button type="text" v-if="scope.row.is_poss == 1" @click="handle('destroy',scope.row)">删除</el-button>
  93. </template>
  94. </el-table-column>
  95. </el-table>
  96. </el-tabs>
  97. <div style="text-align: right;margin: 20px 0;">
  98. <el-pagination @current-change="pagination" background layout="prev, pager, next" :page-count="pageCount"></el-pagination>
  99. </div>
  100. </div>
  101. </el-card>
  102. <!-- 驳回 -->
  103. <el-dialog title="驳回原因" :visible.sync="dialog">
  104. <el-form ref="operation" style="margin-bottom: 10px;" :model="operation" label-width="96px" size="mini">
  105. <el-row :gutter="24">
  106. <el-col :span="22" style="padding-left: 0;">
  107. <el-form-item label="拒绝原因">
  108. <el-input type="textarea" :rows="5" v-model="operation.reason" placeholder="请输入拒绝原因" clearable></el-input>
  109. </el-form-item>
  110. </el-col>
  111. </el-row>
  112. <el-row :gutter="24">
  113. <el-col :span="6">
  114. <el-form-item label="">
  115. <el-button type="primary" size="mini" @click="handle('toReject',operation)" >提交</el-button>
  116. </el-form-item>
  117. </el-col>
  118. </el-row>
  119. </el-form>
  120. </el-dialog>
  121. </div>
  122. <script>
  123. const app = new Vue({
  124. el: '#app',
  125. data: {
  126. activeName: '-1',
  127. loading: false,
  128. helpLoading: false,
  129. dialog: false,
  130. page: 1,
  131. pageCount: 0,
  132. list: [],
  133. search: {
  134. user_id: null,
  135. mobile: null,
  136. },
  137. operation:{
  138. id: 0,
  139. status: 1,
  140. reason: '',
  141. },
  142. managerStatus: "<?= $managerStatus ?>",
  143. type: 'able',
  144. },
  145. mounted() {
  146. // 查询当前是审核还是正常页面
  147. this.loadData();
  148. },
  149. methods: {
  150. //获取列表信息
  151. loadData() {
  152. this.loading = true;
  153. let params = {
  154. r: 'purchase/manager/index',
  155. page:this.page,
  156. manager_status:this.managerStatus
  157. };
  158. params = Object.assign(params, this.search);
  159. request({
  160. params: params,
  161. method: 'get'
  162. }).then(e => {
  163. this.loading = false;
  164. if (e.data.code == 0) {
  165. this.list = e.data.data.list;
  166. this.pageCount = e.data.data.list.page_count;
  167. this.page = e.data.data.list.page;
  168. } else {
  169. this.$message.error(e.data.msg);
  170. }
  171. }).catch(e => {
  172. this.loading = false;
  173. });
  174. },
  175. pagination(currentPage) {
  176. let self = this;
  177. self.page = currentPage;
  178. self.loadData();
  179. },
  180. //搜索
  181. toSearch() {
  182. this.page = 1;
  183. this.loadData();
  184. },
  185. //清空搜索
  186. resetSearch() {
  187. this.search = {};
  188. this.loadData();
  189. },
  190. // 操作处理
  191. handle(type, data = null) {
  192. let id = data ? parseInt(data.id) : '';
  193. switch (type) {
  194. case 'destroy':
  195. params = {id: data.id, status: -1};
  196. this.$confirm('删除该条数据后不可以恢复, 是否继续?', '警告', {type: 'warning'}).then(() => {
  197. this.send(params,'purchase/manager/handle',(resp) => {
  198. if (resp.code == 0) this.loadData();
  199. })
  200. })
  201. break;
  202. case 'agree':// 点击同意按钮
  203. params = {id: data.id, is_poss: 1, status: 1};
  204. this.$confirm('是否同意该用户的申请?', '警告', {type: 'warning'}).then(() => {
  205. this.send(params,'purchase/manager/handle',(resp) => {
  206. if (resp.code == 0) this.loadData();
  207. })
  208. })
  209. break;
  210. case 'reject':// 点击驳回按钮
  211. this.dialog = true;
  212. this.operation.id = data.id;
  213. this.operation.is_poss = -1;
  214. break;
  215. case 'toReject':// 驳回提交
  216. this.dialog = false;
  217. this.send(this.operation,'purchase/manager/handle',(resp) => {
  218. if (resp.code == 0) this.loadData();
  219. })
  220. break;
  221. }
  222. },
  223. send(params,url,callback = null) {
  224. let self = this;
  225. request({
  226. params: {
  227. r:url
  228. },
  229. method: 'post',
  230. data:params
  231. }).then(e => {
  232. if (e.data.code == 0) {
  233. self.$message.success(e.data.msg);
  234. } else {
  235. self.$message.error(e.data.msg);
  236. }
  237. if (callback) callback(e.data);
  238. }).catch(e => {
  239. console.log(e);
  240. });
  241. },
  242. }
  243. });
  244. </script>