record.blade.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280
  1. @extends('layouts.base')
  2. @section('title', "海报生成记录")
  3. @section('content')
  4. <link rel="stylesheet" href="{{resource_get('plugins/new-poster/views/admin/index.css')}}">
  5. <div class="all">
  6. <div id="app" v-cloak>
  7. <div class="vue-crumbs">
  8. 海报 > 生成记录
  9. </div>
  10. <div class="vue-head">
  11. <div class="vue-main-title" style="margin-bottom:20px">
  12. <div class="vue-main-title-left"></div>
  13. <div class="vue-main-title-content">生成记录</div>
  14. <div class="vue-main-title-button">
  15. </div>
  16. </div>
  17. <div class="vue-search">
  18. <el-form :inline="true" :model="search_form" class="demo-form-inline">
  19. <el-form-item label="">
  20. <el-input v-model="search_form.member_id" placeholder="会员ID"></el-input>
  21. </el-form-item>
  22. <el-form-item label="">
  23. <el-input v-model="search_form.member" placeholder="会员昵称/姓名/手机号"></el-input>
  24. </el-form-item>
  25. <el-form-item label="时间范围">
  26. <el-date-picker
  27. v-model="times"
  28. type="datetimerange"
  29. value-format="timestamp"
  30. range-separator="至"
  31. start-placeholder="开始日期"
  32. end-placeholder="结束日期"
  33. style="margin-left:5px;"
  34. align="right">
  35. </el-date-picker>
  36. </el-form-item>
  37. <el-form-item label="">
  38. <el-button type="primary" @click="search(1)">搜索</el-button>
  39. </el-form-item>
  40. </el-form>
  41. </div>
  42. </div>
  43. <div class="vue-main">
  44. <div>
  45. <div class="vue-main-title" style="margin-bottom:20px">
  46. <div class="vue-main-title-left"></div>
  47. <div class="vue-main-title-content" style="flex:0 0 100px">生成列表</div>
  48. <div class="" style="text-align:left;font-size:12px;color:#999">
  49. <span>总数:[[total]]</span>&nbsp;&nbsp;&nbsp;
  50. </div>
  51. <div class="vue-main-title-button">
  52. <el-button type="danger" size="small" @click="allDel">一键删除</el-button>
  53. </div>
  54. </div>
  55. <el-table :data="list" style="width: 100%">
  56. <!-- <el-table-column label="ID" align="center" prop="id" width="70"></el-table-column> -->
  57. <el-table-column label="生成时间" align="center" prop="created_at"></el-table-column>
  58. <el-table-column label="海报路径" align="center" prop="url"></el-table-column>
  59. <el-table-column label="会员ID" align="center" prop="member_id"></el-table-column>
  60. <el-table-column align="center" prop="created_at">
  61. <template slot="header" slot-scope="scope">
  62. <div>会员信息</div>
  63. </template>
  64. <template slot-scope="scope">
  65. <div v-if="scope.row.mc_member">
  66. <div>
  67. <img :src="scope.row.mc_member.avatar_image" alt="" style="width:40px;height:40px;border-radius:50%">
  68. </div>
  69. <div class="vue-ellipsis">[[scope.row.mc_member.nickname]]</div>
  70. </div>
  71. </template>
  72. </el-table-column>
  73. <el-table-column align="center" prop="created_at" label="操作">
  74. <template slot-scope="scope">
  75. <a :href="scope.row.url" download>
  76. <el-button size="mini" plain type="primary">下载</el-button>
  77. </a>
  78. <el-button size="mini"plain type="success" @click="reNew(scope.row)">重新生成</el-button>
  79. <el-button size="mini" plain type="danger" @click="del(scope.row.id,scope.$index)">删除</el-button>
  80. </template>
  81. </el-table-column>
  82. </el-table>
  83. </div>
  84. </div>
  85. <!-- 分页 -->
  86. <div class="vue-page" v-if="total>0">
  87. <el-row>
  88. <el-col align="right">
  89. <el-pagination layout="prev, pager, next,jumper" @current-change="search" :total="total"
  90. :page-size="per_page" :current-page="current_page" background
  91. ></el-pagination>
  92. </el-col>
  93. </el-row>
  94. </div>
  95. </div>
  96. </div>
  97. <script>
  98. var app = new Vue({
  99. el: "#app",
  100. delimiters: ['[[', ']]'],
  101. name: 'test',
  102. data() {
  103. return {
  104. id:0,
  105. search_form:{},
  106. times:[],
  107. list:[],
  108. count:{},
  109. rules: {},
  110. current_page:1,
  111. total:1,
  112. per_page:1,
  113. }
  114. },
  115. created() {
  116. },
  117. mounted() {
  118. this.id = this.getParam('id')
  119. this.getData(1);
  120. },
  121. methods: {
  122. getData(page) {
  123. let json = {
  124. page:page,
  125. id:this.id,
  126. search_form:{
  127. member:this.search_form.member,
  128. member_id:this.search_form.member_id,
  129. // search_time:[],
  130. }
  131. }
  132. if(this.times&&this.times!=null&&this.times.length>0) {
  133. console.log(this.times)
  134. json.search_form.search_time = [];
  135. json.search_form.search_time[0] = this.times[0]/1000;
  136. json.search_form.search_time[1] = this.times[1]/1000;
  137. }
  138. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  139. this.$http.post('{!! yzWebFullUrl('plugin.new-poster.admin.poster-record.getList') !!}',json).then(function(response) {
  140. if (response.data.result) {
  141. this.list = response.data.data.list.data;
  142. this.current_page=response.data.data.list.current_page;
  143. this.total=response.data.data.list.total;
  144. this.per_page=response.data.data.list.per_page;
  145. loading.close();
  146. } else {
  147. this.$message({
  148. message: response.data.msg,
  149. type: 'error'
  150. });
  151. }
  152. loading.close();
  153. }, function(response) {
  154. this.$message({
  155. message: response.data.msg,
  156. type: 'error'
  157. });
  158. loading.close();
  159. });
  160. },
  161. gotoDetail(item) {
  162. let link = `{!! yzWebFullUrl('plugin.answer-reward.admin.subject.get-view') !!}`+`&id=`+item.id;
  163. window.location.href = link;
  164. },
  165. search(val) {
  166. this.getData(val);
  167. },
  168. addModal() {
  169. let link = `{!! yzWebFullUrl('plugin.answer-reward.admin.subject.get-view') !!}`;
  170. console.log(link);
  171. window.location.href = link;
  172. },
  173. del(id,index) {
  174. console.log(id,index)
  175. this.$confirm('确定删除吗', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {
  176. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  177. this.$http.post('{!! yzWebFullUrl('plugin.new-poster.admin.poster-record.delete') !!}',{id:id}).then(function (response) {
  178. if (response.data.result) {
  179. this.list.splice(index,1);
  180. this.$message({type: 'success',message: '删除成功!'});
  181. }
  182. else{
  183. this.$message({type: 'error',message: response.data.msg});
  184. }
  185. loading.close();
  186. this.search(this.current_page)
  187. },function (response) {
  188. this.$message({type: 'error',message: response.data.msg});
  189. loading.close();
  190. }
  191. );
  192. }).catch(() => {
  193. this.$message({type: 'info',message: '已取消删除'});
  194. });
  195. },
  196. allDel() {
  197. this.$confirm('确定删除吗', '提示', {confirmButtonText: '确定',cancelButtonText: '取消',type: 'warning'}).then(() => {
  198. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  199. this.$http.post('{!! yzWebFullUrl('plugin.new-poster.admin.poster-record.allDelete') !!}',{id:this.id}).then(function (response) {
  200. if (response.data.result) {
  201. this.$message({type: 'success',message: '删除成功!'});
  202. }
  203. else{
  204. this.$message({type: 'error',message: response.data.msg});
  205. }
  206. loading.close();
  207. this.search(this.current_page)
  208. },function (response) {
  209. this.$message({type: 'error',message: response.data.msg});
  210. loading.close();
  211. }
  212. );
  213. }).catch(() => {
  214. this.$message({type: 'info',message: '已取消删除'});
  215. });
  216. },
  217. uploadSuccess(res, file) {
  218. if (res.result == 1) {
  219. // this.form.file = res.data.thumb;
  220. this.$message.success(res.msg);
  221. } else {
  222. this.$message.error(res.msg);
  223. }
  224. window.location.reload();
  225. // this.submit_loading = false;
  226. },
  227. beforeUpload(file) {
  228. // this.submit_loading = true;
  229. },
  230. reNew(row) {
  231. let json = {
  232. poster_type:row.poster_type,
  233. id:row.id,
  234. member_id:row.member_id,
  235. }
  236. let loading = this.$loading({target:document.querySelector(".content"),background: 'rgba(0, 0, 0, 0)'});
  237. this.$http.post('{!! yzWebFullUrl('plugin.new-poster.admin.poster-record.remake') !!}',json).then(function(response) {
  238. if (response.data.result) {
  239. this.$message({type: 'success',message: '生成成功!'});
  240. }
  241. else{
  242. this.$message({type: 'error',message: response.data.msg});
  243. }
  244. loading.close();
  245. this.search(this.current_page)
  246. }, function(response) {
  247. this.$message({
  248. message: response.data.msg,
  249. type: 'error'
  250. });
  251. loading.close();
  252. });
  253. },
  254. add0(m) {
  255. return m<10?'0'+m:m
  256. },
  257. getParam(name) {
  258. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)", "i");
  259. var r = window.location.search.substr(1).match(reg);
  260. if (r != null) return unescape(r[2]);
  261. return null;
  262. },
  263. },
  264. })
  265. </script>
  266. @endsection