index.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391
  1. <div id="app" v-cloak>
  2. <el-card shadow="never" style="border:0;" body-style="background-color: #f3f3f3;padding: 10px 0 0;">
  3. <div slot="header">
  4. <div>
  5. <span>订单列表</span>
  6. </div>
  7. </div>
  8. <div class="table-body">
  9. <el-form :inline="true" :model="searchData" class="demo-form-inline">
  10. <el-col :span="24">
  11. <el-form-item label="会员ID">
  12. <el-input v-model="searchData.user_id" placeholder="会员ID"></el-input>
  13. </el-form-item>
  14. <el-form-item label="会员名称">
  15. <el-input v-model="searchData.user_name" placeholder="会员名称"></el-input>
  16. </el-form-item>
  17. <el-form-item label="会员手机号">
  18. <el-input v-model="searchData.user_mobile" placeholder="会员手机号"></el-input>
  19. </el-form-item>
  20. <el-form-item label="订单类型">
  21. <el-select v-model="searchData.order_type" placeholder="订单类型">
  22. <el-option :label="item.name" :value="item.value" v-for="item in order_types">
  23. {{ item.name }}
  24. </el-option>
  25. </el-select>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :span="24">
  29. <el-form-item label="订单编号">
  30. <el-input v-model="searchData.order_no" placeholder="订单编号"></el-input>
  31. </el-form-item>
  32. <!-- <el-form-item label="订单状态">
  33. <el-select v-model="searchData.order_status" placeholder="订单状态">
  34. <el-option :label="value" :value="index" v-for="(value, index) in order_status"></el-option>
  35. </el-select>
  36. </el-form-item> -->
  37. <!--<el-form-item label="支付状态">
  38. <el-select v-model="searchData.is_pay" placeholder="支付状态">
  39. <el-option :label="value" :value="index" v-for="(value, index) in pay_arr"></el-option>
  40. </el-select>
  41. </el-form-item>-->
  42. <el-form-item label="创建时间">
  43. <el-date-picker value-format="yyyy-MM-dd" v-model="searchData.data" type="daterange" range-separator="至" start-placeholder="开始日期" end-placeholder="结束日期">
  44. </el-date-picker>
  45. </el-form-item>
  46. </el-col>
  47. <el-form-item>
  48. <el-button type="primary" @click="onSubmit">查询</el-button>
  49. <el-button @click="resetForm">重置</el-button>
  50. </el-form-item>
  51. </el-form>
  52. <!-- 订单信息 -->
  53. <template>
  54. <el-table ref="multipleTable" :data="order_list" @selection-change="handleSelectionChange">
  55. <!-- 空数据 -->
  56. <!-- <template slot="empty">
  57. <el-empty description="暂无订单"></el-empty>
  58. </template> -->
  59. <el-table-column type="selection">
  60. </el-table-column>
  61. <el-table-column prop="user_id" align="center" label="会员ID">
  62. </el-table-column>
  63. <el-table-column prop="user_info" align="center" label="会员" class="user-info">
  64. <template slot-scope="scope">
  65. <div class="table-info-img-text">
  66. <el-image class="table-info-img circle" :src="scope.row.user.avatar_url">
  67. <div slot="error" class="image-slot">
  68. <com-image src="/resources/img/common/default-avatar.png"></com-image>
  69. </div>
  70. </el-image>
  71. <div class="table-info-text">
  72. <div style="color:#000;">{{scope.row.user.nickname}}</div>
  73. <div style="color:#000;">{{scope.row.user.mobile}}</div>
  74. </div>
  75. </div>
  76. </template>
  77. </el-table-column>
  78. <el-table-column prop="order_no" align="center" label="订单编号">
  79. </el-table-column>
  80. <el-table-column prop="order_type_text" align="center" label="订单类型">
  81. </el-table-column>
  82. <el-table-column prop="rand_fee" align="center" label="随机减免金额(元)">
  83. </el-table-column>
  84. <el-table-column prop="is_pay_text" align="center" label="支付状态">
  85. </el-table-column>
  86. <el-table-column prop="created_at" label="创建时间" align="center">
  87. <template slot-scope="scope">
  88. {{ scope.row.created_at|dateTimeFormat('Y-m-d H:i:s') }}
  89. </template>
  90. </el-table-column>
  91. </el-table>
  92. </template>
  93. <!-- 分页 -->
  94. <el-row type="flex" class="page" justify="end">
  95. <el-pagination @current-change="pagination" background layout="prev, pager, next" :page-count="pageCount" v-if="order_list"></el-pagination>
  96. </el-row>
  97. </div>
  98. </el-card>
  99. </div>
  100. <script>
  101. const app = new Vue({
  102. el: '#app',
  103. data() {
  104. return {
  105. searchData: {
  106. user_id: '',
  107. user_mobile: '',
  108. user_name: '',
  109. status: '',
  110. order_no: '',
  111. order_status: '',
  112. data: [],
  113. },
  114. order_list: [],
  115. order_status: {},
  116. order_types: {},
  117. pageCount: 0,
  118. page: 1,
  119. currentPage: null,
  120. listLoading: false,
  121. btnLoading: false,
  122. checked: false,
  123. type: '',
  124. sort: '',
  125. pay_arr: {
  126. 0: '未支付',
  127. 1: '已支付',
  128. },
  129. };
  130. },
  131. methods: {
  132. handleSelectionChange(val) {
  133. this.select_order = val
  134. },
  135. // 全选
  136. allSelect() {
  137. if (this.checked) {
  138. this.goods_list.forEach(function(item, index) {
  139. if (!item.storage) {
  140. item.is_select = true
  141. }
  142. })
  143. } else {
  144. this.goods_list.forEach(function(item, index) {
  145. item.is_select = false
  146. })
  147. }
  148. },
  149. //搜索
  150. onSubmit() {
  151. this.page = 1
  152. this.getOrderList()
  153. },
  154. pagination(currentPage) {
  155. this.page = currentPage
  156. this.getOrderList()
  157. },
  158. getOrderList() {
  159. this.listLoading = true;
  160. var param = {
  161. r: 'rand-fee/default/index',
  162. page: this.page,
  163. limit: 20
  164. }
  165. Object.assign(param, param, this.searchData)
  166. request({
  167. params: param,
  168. }).then(e => {
  169. if (e.data.code === 0) {
  170. this.order_list = e.data.data.list
  171. this.pageCount = e.data.data.page_count
  172. this.order_status = e.data.data.order_status
  173. this.order_types = e.data.data.order_types
  174. this.currentPage = e.data.data.pagination.current_page
  175. } else {
  176. this.$message.error(e.data.msg)
  177. }
  178. this.listLoading = false
  179. }).catch(e => {
  180. this.listLoading = false
  181. })
  182. },
  183. //重置
  184. resetForm() {
  185. this.searchData = {
  186. user_id: '',
  187. user_mobile: '',
  188. user_name: '',
  189. status: '',
  190. order_no: '',
  191. order_status: '',
  192. data: [],
  193. }
  194. },
  195. },
  196. mounted: function() {
  197. this.page = getQuery('page') ? getQuery('page') : 1
  198. this.getOrderList()
  199. }
  200. });
  201. </script>
  202. <style>
  203. .table-body {
  204. padding: 20px;
  205. background-color: #fff;
  206. }
  207. .input-item {
  208. display: inline-block;
  209. width: 150px;
  210. margin: 0 0 20px;
  211. margin-right: 10px;
  212. }
  213. .input-item .el-input__inner {
  214. border-right: 1px solid #dcdfe6;
  215. }
  216. .input-item .el-input__inner:hover {
  217. border: 1px solid #dcdfe6;
  218. border-right: 0;
  219. outline: 0;
  220. }
  221. .input-item .el-input__inner:focus {
  222. border: 1px solid #dcdfe6;
  223. border-right: 0;
  224. outline: 0;
  225. }
  226. .input-item .el-input-group__append {
  227. background-color: #fff;
  228. border-left: 0;
  229. width: 10%;
  230. padding: 0;
  231. }
  232. .input-item .el-input-group__append .el-button {
  233. padding: 0;
  234. }
  235. .input-item .el-input-group__append .el-button {
  236. margin: 0;
  237. }
  238. .select {
  239. float: left;
  240. width: 100px;
  241. margin-right: 10px;
  242. }
  243. .el-table th>.cell {
  244. color: #333;
  245. font-weight: bold;
  246. font-size: 14px;
  247. }
  248. .el-table__footer-wrapper,
  249. .el-table__header-wrapper {
  250. border-bottom: 1.4px solid #D6D6D6;
  251. }
  252. .search-sort {
  253. display: inline-block;
  254. margin: 0px 10px;
  255. cursor: pointer;
  256. color: rgb(51, 51, 51);
  257. }
  258. .caret-wrapper {
  259. display: inline-flex;
  260. flex-direction: column;
  261. align-items: center;
  262. height: 25px;
  263. width: 11px;
  264. vertical-align: middle;
  265. cursor: pointer;
  266. overflow: initial;
  267. position: relative;
  268. }
  269. .caret-top {
  270. border: 5px solid transparent;
  271. margin: 1px 0;
  272. border-bottom-color: rgb(51, 51, 51);
  273. }
  274. .caret-bottom {
  275. border: 5px solid transparent;
  276. margin: 1px 0;
  277. border-top-color: rgb(51, 51, 51);
  278. }
  279. .active {
  280. border-top-color: rgb(41, 186, 156);
  281. }
  282. .ellipsis {
  283. font-size: .14rem;
  284. color: #333;
  285. overflow: hidden;
  286. text-overflow: ellipsis;
  287. }
  288. .goods-wrapper {
  289. border: 2px solid #CCCCCC;
  290. display: inline-block
  291. }
  292. .goods-select {
  293. border: 2px solid #bb730c;
  294. }
  295. .goods-price {
  296. text-align: center;
  297. }
  298. .goods-price .number {
  299. color: red;
  300. font-weight: 600;
  301. font-size: .18rem;
  302. }
  303. .goods-price .title {
  304. padding: 5px 0;
  305. color: #999;
  306. ;
  307. font-size: .1rem;
  308. font-weight: 600;
  309. }
  310. .bottom-price .title {
  311. padding: 5px 0;
  312. color: #8b8888;
  313. ;
  314. font-size: .1rem;
  315. }
  316. .bottom-price .number {
  317. color: #ff5100;
  318. font-size: .1rem;
  319. }
  320. .goods-action {
  321. margin-top: 0.8rem;
  322. }
  323. .goods-action .title {
  324. color: #0634aa;
  325. }
  326. .bottom-active {
  327. border-bottom-color: rgb(186, 41, 92);
  328. }
  329. .top-active {
  330. border-top-color: rgb(186, 41, 92);
  331. }
  332. .price {
  333. white-space: nowrap;
  334. }
  335. .goods-image {
  336. display: flex;
  337. justify-content: center;
  338. }
  339. .page {
  340. padding: 10px 0;
  341. }
  342. .table-info-img-text {
  343. justify-content: center;
  344. }
  345. </style>