invitation-list.blade.php 19 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390
  1. @extends('layouts.base')
  2. @section('title', "帖子管理")
  3. @section('content')
  4. <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-goods1.css')}}"/>
  5. <style>
  6. /* 导航 */
  7. .el-radio-button .el-radio-button__inner,.el-radio-button:first-child .el-radio-button__inner {border-radius: 4px 4px 4px 4px;border-left: 0px;}
  8. .el-radio-button__inner{border:0;}
  9. .el-radio-button:last-child .el-radio-button__inner {border-radius: 4px 4px 4px 4px;}
  10. </style>
  11. <div class="all">
  12. <div id="app" v-cloak>
  13. <div class="vue-head">
  14. <el-radio-group v-model="choose_index" @change="changeList">
  15. <el-radio-button label="1">帖子管理</el-radio-button>
  16. <el-radio-button label="2">打赏记录</el-radio-button>
  17. </el-radio-group>
  18. </div>
  19. <div class="vue-head">
  20. <div class="vue-main-title" style="margin-bottom:20px">
  21. <div class="vue-main-title-left"></div>
  22. <div class="vue-main-title-content">帖子管理</div>
  23. <div class="vue-main-title-button">
  24. </div>
  25. </div>
  26. <div class="vue-search">
  27. <el-form :inline="true" :model="search_form" class="demo-form-inline">
  28. <el-form-item label="">
  29. <el-input v-model="search_form.circle_name" placeholder="圈子名称"></el-input>
  30. </el-form-item>
  31. <el-form-item label="" v-if="choose_index==1">
  32. <el-input v-model="search_form.invitation_title" placeholder="标题"></el-input>
  33. </el-form-item>
  34. <el-form-item label="">
  35. <el-input v-model="search_form.member_info" placeholder="发布会员ID/昵称/名称/手机号"></el-input>
  36. </el-form-item>
  37. <el-form-item label="" v-if="choose_index==2">
  38. <el-input v-model="search_form.pay_member_info" placeholder="打赏会员ID/昵称/名称/手机号"></el-input>
  39. </el-form-item>
  40. <el-form-item label="" v-if="choose_index==2">
  41. <el-input v-model="search_form.invitation_id" placeholder="帖子ID"></el-input>
  42. </el-form-item>
  43. <el-form-item label="" v-if="choose_index==1">
  44. <el-select v-model="search_form.review" clearable placeholder="状态">
  45. <el-option label="待审核" :value="0"></el-option>
  46. <el-option label="已审核" :value="1"></el-option>
  47. <el-option label="已驳回" :value="2"></el-option>
  48. </el-select>
  49. </el-form-item>
  50. <el-form-item label="">
  51. <el-date-picker
  52. v-model="times"
  53. type="datetimerange"
  54. value-format="timestamp"
  55. range-separator="至"
  56. start-placeholder="开始日期"
  57. end-placeholder="结束日期"
  58. style="margin-left:5px;"
  59. align="right">
  60. </el-date-picker>
  61. </el-form-item>
  62. <el-form-item label="">
  63. <el-button type="primary" @click="search(1)">搜索</el-button>
  64. </el-form-item>
  65. </el-form>
  66. </div>
  67. </div>
  68. <div class="vue-main" v-if="choose_index==1">
  69. <div>
  70. <div class="vue-main-title" style="margin-bottom:20px">
  71. <div class="vue-main-title-left"></div>
  72. <div class="vue-main-title-content" style="flex:0 0 120px">帖子列表</div>
  73. <div class="vue-main-title-button">
  74. <!-- <el-button type="primary" plain icon="el-icon-plus" size="small" @click="addModal">添加</el-button> -->
  75. </div>
  76. </div>
  77. <el-table :data="list" style="width: 100%">
  78. <el-table-column label="ID" align="center" prop="id" width="60"></el-table-column>
  79. <el-table-column label="时间" align="center" prop="created_at"></el-table-column>
  80. <el-table-column prop="down_time" label="圈子名称" min-width="180" align="left" class="edit-cell">
  81. <template slot-scope="scope">
  82. <div style="display:flex">
  83. <img :src="scope.row.circle_img" style="min-width:50px;height:50px;margin-right:10px">
  84. <span>[[scope.row.circle_name]]</span>
  85. </div>
  86. </template>
  87. </el-table-column>
  88. <el-table-column label="发布会员" align="center" prop="display_order">
  89. <template slot-scope="scope">
  90. <div>
  91. <div v-if="scope.row.avatar">
  92. <img :src="scope.row.avatar" alt="" style="width:40px;height:40px;border-radius:50%">
  93. </div>
  94. <div @click="gotoMember(scope.row.member_id)" style="line-height:32px;color:#29BA9C;cursor: pointer;" class="vue-ellipsis">[[scope.row.nickname]]</div>
  95. </div>
  96. </template>
  97. </el-table-column>
  98. <el-table-column prop="down_time" label="标题" min-width="180" align="left" class="edit-cell">
  99. <template slot-scope="scope">
  100. <div style="display:flex">
  101. <span>[[scope.row.title]]</span>
  102. </div>
  103. </template>
  104. </el-table-column>
  105. <el-table-column label="发布内容" align="center">
  106. <template slot-scope="scope">
  107. <div>
  108. <el-link title="查看详情" :underline="false" @click="gotoDetail(scope.row)" style="text-align: center;width:50px">
  109. <i class="iconfont icon-all_watchroot"></i>
  110. </el-link>
  111. </div>
  112. </template>
  113. </el-table-column>
  114. <el-table-column label="" align="center">
  115. <template slot="header" slot-scope="scope">
  116. <div>浏览次数</div>
  117. <!-- <div>浏览人数</div> -->
  118. </template>
  119. <template slot-scope="scope">
  120. <div>[[scope.row.browse_count]]</div>
  121. <!-- <div>[[scope.row.browse_count]]</div> -->
  122. </template>
  123. </el-table-column>
  124. <el-table-column label="点赞次数" align="center" prop="link_count"></el-table-column>
  125. <el-table-column label="打赏金额" align="center" prop="money"></el-table-column>
  126. <el-table-column label="审核状态" align="center" prop="is_review">
  127. <template slot-scope="scope">
  128. <el-select v-model="scope.row.is_review" size="small" @change="changeReview(scope.row.id,scope.$index)">
  129. <el-option label="待审核" :value="0"></el-option>
  130. <el-option label="审核通过" :value="1"></el-option>
  131. <el-option label="审核驳回" :value="2"></el-option>
  132. </el-select>
  133. </template>
  134. </el-table-column>
  135. <el-table-column prop="refund_time" label="操作" align="center" width="360">
  136. <template slot-scope="scope">
  137. <el-checkbox v-model="scope.row.is_recommend" label="推荐" border size="mini" :true-label="1" :false-label="0" @change.native="changeStatus(scope.row.id,'is_recommend')"></el-checkbox>
  138. <el-checkbox v-model="scope.row.is_top" label="置顶" border size="mini" :true-label="1" :false-label="0" @change.native="changeStatus(scope.row.id,'is_top')"></el-checkbox>
  139. <el-checkbox v-model="scope.row.is_show" label="未加入可见" border size="mini" :true-label="1" :false-label="0" @change.native="changeStatus(scope.row.id,'is_show')"></el-checkbox>
  140. <el-button size="mini" @click="del(scope.row.id)">删除</el-button>
  141. <!-- <el-link title="删除圈子" :underline="false" @click="del(scope.row.id,scope.$index)" style="width:50px;">
  142. <i class="iconfont icon-ht_operation_delete"></i>
  143. </el-link> -->
  144. </template>
  145. </el-table-column>
  146. </el-table>
  147. </div>
  148. </div>
  149. <div class="vue-main" v-if="choose_index==2">
  150. <div>
  151. <div class="vue-main-title" style="margin-bottom:20px">
  152. <div class="vue-main-title-left"></div>
  153. <div class="vue-main-title-content" style="flex:0 0 120px">打赏记录</div>
  154. <div class="vue-main-title-button">
  155. </div>
  156. </div>
  157. <el-table :data="list" style="width: 100%">
  158. <el-table-column label="时间" align="center" prop="created_at"></el-table-column>
  159. <el-table-column prop="down_time" label="圈子名称" min-width="180" align="left" class="edit-cell">
  160. <template slot-scope="scope">
  161. <div style="display:flex;align-items: center;">
  162. <img :src="scope.row.circle_img" style="width:50px;min-width:50px;height:50px;margin-right:10px">
  163. <span>[[scope.row.circle_name]]</span>
  164. </div>
  165. </template>
  166. </el-table-column>
  167. <el-table-column label="帖子ID" align="center" prop="invitation_id"></el-table-column>
  168. <el-table-column label="发布会员" align="center" prop="">
  169. <template slot-scope="scope">
  170. <div v-if="scope.row.invitation_member_id&&scope.row.invitation_member_id!=null">
  171. <div v-if="scope.row.invitation_member_id.avatar">
  172. <img :src="scope.row.invitation_member_id.avatar" alt="" style="width:40px;height:40px;border-radius:50%">
  173. </div>
  174. <div @click="gotoMember(scope.row.invitation_member_id.uid)" style="line-height:32px;color:#29BA9C;cursor: pointer;" class="vue-ellipsis">[[scope.row.invitation_member_id.nickname]]</div>
  175. </div>
  176. </template>
  177. </el-table-column>
  178. <el-table-column label="打赏会员" align="center" prop="display_order">
  179. <template slot-scope="scope">
  180. <div v-if="scope.row.member_id&&scope.row.member_id!=null">
  181. <div>
  182. <img :src="scope.row.member_id.avatar" alt="" style="width:40px;height:40px;border-radius:50%">
  183. </div>
  184. <div @click="gotoMember(scope.row.member_id.uid)" style="line-height:32px;color:#29BA9C;cursor: pointer;" class="vue-ellipsis">[[scope.row.member_id.nickname]]</div>
  185. </div>
  186. </template>
  187. </el-table-column>
  188. <el-table-column label="打赏单号" align="center" prop="order_sn"></el-table-column>
  189. <el-table-column label="打赏金额" align="center" prop="money"></el-table-column>
  190. <el-table-column label="支付方式" align="center" prop="pay_name"></el-table-column>
  191. <el-table-column label="支付状态" align="center" prop="">
  192. <template slot-scope="scope">
  193. <div>
  194. [[scope.row.pay_status==1?'已支付':'未支付']]
  195. </div>
  196. </template>
  197. </el-table-column>
  198. </el-table>
  199. </div>
  200. </div>
  201. <!-- 分页 -->
  202. <div class="vue-page" v-if="total>0">
  203. <el-row>
  204. <el-col align="right">
  205. <el-pagination layout="prev, pager, next,jumper" @current-change="search" :total="total"
  206. :page-size="per_page" :current-page="current_page" background
  207. ></el-pagination>
  208. </el-col>
  209. </el-row>
  210. </div>
  211. </div>
  212. </div>
  213. <script>
  214. var app = new Vue({
  215. el: "#app",
  216. delimiters: ['[[', ']]'],
  217. name: 'test',
  218. data() {
  219. return {
  220. choose_index:'1',
  221. list:[],
  222. search_form:{
  223. },
  224. times:[],
  225. rules: {},
  226. current_page:1,
  227. total:1,
  228. per_page:1,
  229. }
  230. },
  231. created() {
  232. },
  233. mounted() {
  234. this.getData(1);
  235. },
  236. methods: {
  237. getData(page) {
  238. let url = '';
  239. if(this.choose_index == 1) {
  240. url = '{!! yzWebFullUrl('plugin.circle.admin.invitation.get-list') !!}'
  241. }
  242. else {
  243. url = '{!! yzWebFullUrl('plugin.circle.admin.pay-log.reward-log-list') !!}'
  244. }
  245. let json = {
  246. page:page
  247. }
  248. for(let i in this.search_form) {
  249. if(this.search_form[i]||this.search_form[i]===0) {
  250. json[i] = this.search_form[i]
  251. }
  252. }
  253. if(this.times&&this.times!=null&&this.times.length) {
  254. json.created_start = this.times[0] / 1000
  255. json.created_end = this.times[1] / 1000
  256. }
  257. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  258. this.$http.post(url,json).then(function(response) {
  259. if (response.data.result) {
  260. this.list = response.data.data.data;
  261. this.current_page=response.data.data.current_page;
  262. this.total=response.data.data.total;
  263. this.per_page=response.data.data.per_page;
  264. loading.close();
  265. } else {
  266. this.$message({
  267. message: response.data.msg,
  268. type: 'error'
  269. });
  270. }
  271. loading.close();
  272. }, function(response) {
  273. this.$message({
  274. message: response.data.msg,
  275. type: 'error'
  276. });
  277. loading.close();
  278. });
  279. },
  280. gotoDetail(item) {
  281. let link = `{!! yzWebFullUrl('plugin.circle.admin.invitation.edit') !!}`+`&invitation_id=`+item.id;
  282. window.location.href = link;
  283. },
  284. search(val) {
  285. this.getData(val);
  286. },
  287. addModal() {
  288. let link = `{!! yzWebFullUrl('plugin.circle.admin.invitation.edit') !!}`;
  289. console.log(link);
  290. window.location.href = link;
  291. },
  292. del(id) {
  293. this.$confirm('确定删除吗', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {
  294. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  295. this.$http.post('{!! yzWebFullUrl('plugin.circle.admin.invitation.del') !!}',{invitation_id:id}).then(function (response) {
  296. if (response.data.result) {
  297. this.$message({type: 'success',message: '删除成功!'});
  298. }
  299. else{
  300. this.$message({type: 'error',message: response.data.msg});
  301. }
  302. loading.close();
  303. this.search(this.current_page)
  304. },function (response) {
  305. this.$message({type: 'error',message: response.data.msg});
  306. loading.close();
  307. }
  308. );
  309. }).catch(() => {
  310. this.$message({type: 'info',message: '已取消删除'});
  311. });
  312. },
  313. search(val) {
  314. this.getData(val);
  315. },
  316. // 快速修改
  317. changeStatus(id,type) {
  318. let that = this;
  319. let json = {invitation_id:id, invitation_type: type};
  320. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  321. that.$http.post("{!! yzWebFullUrl('plugin.circle.admin.invitation.set-invitation-review') !!}", json).then(response => {
  322. if (response.data.result == 1) {
  323. that.$message.success('操作成功!');
  324. } else {
  325. that.$message.error(response.data.msg);
  326. }
  327. that.search(this.current_page);
  328. loading.close();
  329. }), function (res) {
  330. console.log(res);
  331. loading.close();
  332. };
  333. },
  334. changeReview(id,index) {
  335. let that = this;
  336. let json = {invitation_id:id, review:this.list[index].is_review};
  337. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  338. that.$http.post("{!! yzWebFullUrl('plugin.circle.admin.invitation.review') !!}", json).then(response => {
  339. if (response.data.result == 1) {
  340. that.$message.success('操作成功!');
  341. } else {
  342. that.$message.error(response.data.msg);
  343. }
  344. that.search(this.current_page);
  345. loading.close();
  346. }), function (res) {
  347. console.log(res);
  348. loading.close();
  349. };
  350. },
  351. changeList() {
  352. this.search_form = {};
  353. this.getData(1)
  354. },
  355. gotoMember(id) {
  356. window.location.href = `{!! yzWebFullUrl('member.member.detail') !!}`+`&id=`+id;
  357. },
  358. },
  359. })
  360. </script>
  361. @endsection