goods_ranking.blade.php 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196
  1. @extends('layouts.base')
  2. @section('title', "商品数据统计")
  3. @section('content')
  4. {{--<link rel="stylesheet" href="{{resource_get('plugins/wechat-notice/views/admin/index.css')}}">--}}
  5. <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/vue-goods1.css')}}" />
  6. <link rel="stylesheet" href="{{resource_get('plugins/shop-statistics/assets/css/common.css')}}">
  7. <link rel="stylesheet" href="{{resource_get('plugins/shop-statistics/assets/css/statistics.css')}}">
  8. <style>
  9. /* 导航 */
  10. .el-radio-button .el-radio-button__inner,
  11. .el-radio-button:first-child .el-radio-button__inner {
  12. border-radius: 20px 20px 20px 20px;
  13. border-left: 0px;
  14. }
  15. .el-radio-button__inner {
  16. border: 0;
  17. }
  18. .el-radio-button:last-child .el-radio-button__inner {
  19. border-radius: 20px 20px 20px 20px;
  20. }
  21. .edit-i {
  22. display: none;
  23. }
  24. .el-table_1_column_2:hover .edit-i {
  25. font-weight: 900;
  26. padding: 0;
  27. margin: 0;
  28. display: inline-block;
  29. }
  30. .el-tabs__item,
  31. .is-top {
  32. font-size: 16px
  33. }
  34. .el-tabs__active-bar {
  35. height: 3px;
  36. }
  37. </style>
  38. <div class="all">
  39. <div id="app" v-cloak>
  40. <div class="vue-main" style="padding:20px;">
  41. <div class="vue-main-form" style="margin-top:0px;">
  42. <statistics-card-title >
  43. {{$type == 'goods_sales_amount'?'商品销售金额排名':($type == 'goods_sales'?'商品销量排名':'分类销量排名')}}
  44. <div class="block" v-if="page_type=='goods_sales' || page_type == 'goods_sales_amount'">
  45. <el-select v-model="time_type" placeholder="周期" >
  46. <el-option
  47. v-for="item in types"
  48. :label="item.name"
  49. :value="item.id">
  50. </el-option>
  51. </el-select>
  52. <el-date-picker
  53. v-model="goods_month_sales"
  54. type="month"
  55. placeholder="选择月"
  56. @change="getData(1)"
  57. value-format="timestamp"
  58. v-if="time_type=='month'"
  59. >
  60. </el-date-picker>
  61. <el-date-picker
  62. v-model="goods_month_sales"
  63. type="date"
  64. placeholder="选择日"
  65. @change="getData(1)"
  66. value-format="timestamp"
  67. v-if="time_type=='day'"
  68. >
  69. </el-date-picker>
  70. </div>
  71. </statistics-card-title>
  72. <el-table :data="list" style="width: 100%" v-if="page_type == 'goods_sales_amount' || page_type == 'goods_sales'">
  73. <el-table-column label="排名" align="center" prop="rank_no">
  74. <template slot-scope="scope">
  75. <div class="member-rank" :data-rank="scope.row.rank_no">[[ scope.row.rank_no ]]</div>
  76. </template>
  77. </el-table-column>
  78. <el-table-column label="商品名称" align="center" prop="title"> </el-table-column>
  79. <el-table-column label="商品类型" align="center" prop="goods_type"></el-table-column>
  80. <el-table-column label="销售金额" align="center" prop="goods_price_total" v-if="page_type == 'goods_sales_amount'"></el-table-column>
  81. <el-table-column label="销量" align="center" prop="real_sales" v-if="page_type == 'goods_sales'"></el-table-column>
  82. </el-table>
  83. <el-table :data="list" style="width: 100%" v-if="page_type == 'category_sales'">
  84. <el-table-column label="排名" align="center" prop="rank_no">
  85. <template slot-scope="scope">
  86. <div class="member-rank" :data-rank="scope.row.rank_no">[[ scope.row.rank_no ]]</div>
  87. </template>
  88. </el-table-column>
  89. <el-table-column label="分类名称" align="center" prop="name"> </el-table-column>
  90. <el-table-column label="销量" align="center" prop="sales"></el-table-column>
  91. </el-table>
  92. </div>
  93. </div>
  94. <!-- 分页 -->
  95. <div class="vue-page">
  96. <el-row>
  97. <el-col align="right">
  98. <el-pagination layout="prev, pager, next,jumper" @current-change="search" :total="total" :page-size="per_page" :current-page="current_page" background></el-pagination>
  99. </el-col>
  100. </el-row>
  101. </div>
  102. </div>
  103. </div>
  104. <script src="{{resource_get('plugins/shop-statistics/assets/js/components.js')}}"></script>
  105. <script>
  106. var app = new Vue({
  107. el: "#app",
  108. delimiters: ['[[', ']]'],
  109. name: 'test',
  110. mixins: [componentMixins],
  111. data() {
  112. return {
  113. time_type:'',
  114. types:[
  115. {id:'day',name:'日'},
  116. {id:'month',name:'月'},
  117. ],
  118. street: 0,
  119. list: [],
  120. page_type: "{!! $type !!}",
  121. change_sort: '',
  122. times: [],
  123. category_list: [],
  124. rules: {},
  125. current_page: 1,
  126. total: 1,
  127. per_page: 1,
  128. goods_month_sales:''
  129. }
  130. },
  131. created() {
  132. },
  133. mounted() {
  134. this.getData(1);
  135. },
  136. methods: {
  137. getData(page) {
  138. let json = {
  139. page: page,
  140. goods_month_sales:this.goods_month_sales/1000
  141. };
  142. let url = '';
  143. if (this.page_type == 'goods_sales_amount') {
  144. url = "{!! yzWebFullUrl('plugin.shop-statistics.backend.goods.search-goods-sales-amount') !!}";
  145. json.time_type = this.time_type;
  146. } else if (this.page_type == 'goods_sales') {
  147. url = "{!! yzWebFullUrl('plugin.shop-statistics.backend.goods.search-goods-sales') !!}";
  148. json.time_type = this.time_type;
  149. } else {
  150. url = "{!! yzWebFullUrl('plugin.shop-statistics.backend.goods.search-category-goods-sales') !!}";
  151. }
  152. let loading = this.$loading({
  153. target: document.querySelector(".content"),
  154. background: 'rgba(0, 0, 0, 0)'
  155. });
  156. this.$http.post(url, json).then(function(response) {
  157. if (response.data.result) {
  158. this.list = response.data.data.data;
  159. this.current_page = response.data.data.current_page;
  160. this.total = response.data.data.total;
  161. this.per_page = response.data.data.per_page;
  162. loading.close();
  163. } else {
  164. this.$message({
  165. message: response.data.msg,
  166. type: 'error'
  167. });
  168. }
  169. loading.close();
  170. }, function(response) {
  171. this.$message({
  172. message: response.data.msg,
  173. type: 'error'
  174. });
  175. loading.close();
  176. });
  177. },
  178. search(val) {
  179. this.getData(val);
  180. },
  181. },
  182. })
  183. </script>
  184. @endsection