list.vue 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. <template>
  2. <div class="list app-container">
  3. <div class="search">
  4. <div>
  5. <el-input
  6. v-model="query.noOrGName"
  7. size="small"
  8. placeholder="请输入订单编号"
  9. class="item-width-200 "
  10. ></el-input>
  11. <el-date-picker
  12. v-model="date"
  13. size="small"
  14. value-format="timestamp"
  15. class="item-width-350 ml10"
  16. type="datetimerange"
  17. range-separator="至"
  18. start-placeholder="开始日期"
  19. end-placeholder="结束日期">
  20. </el-date-picker>
  21. <el-select
  22. v-model="query.orderType"
  23. size="small"
  24. clearable
  25. class="item-width-200 ml10"
  26. placeholder="请选择订单状态"
  27. >
  28. <el-option
  29. v-for="item in options"
  30. :key="item.value"
  31. :label="item.label"
  32. :value="item.value"
  33. >
  34. </el-option>
  35. </el-select>
  36. <el-button
  37. class="ml10"
  38. type="primary"
  39. size="small"
  40. icon="el-icon-search"
  41. @click="handleSearch"
  42. >
  43. 搜索
  44. </el-button>
  45. </div>
  46. </div>
  47. <el-table
  48. :data="tableData"
  49. tooltip-effect="dark"
  50. border
  51. v-loading="loading"
  52. style="width: 100%"
  53. >
  54. <el-table-column
  55. align="center"
  56. label="订单编号"
  57. prop="orderNo"
  58. show-overflow-tooltip
  59. >
  60. </el-table-column>
  61. <el-table-column
  62. prop="shopName"
  63. align="center"
  64. label="商品图"
  65. show-overflow-tooltip
  66. >
  67. <template slot-scope="scope">
  68. <img :src="scope.row.goodsModelList[0].goodsInfo.activityCover||scope.row.goodsModelList[0].goodsInfo.goodsPath" alt="" class="icon">
  69. </template>
  70. </el-table-column>
  71. <el-table-column
  72. prop="shopName"
  73. align="center"
  74. label="商品名"
  75. show-overflow-tooltip
  76. >
  77. <template slot-scope="scope">
  78. {{scope.row.goodsModelList[0].goodsInfo.activityName||scope.row.goodsModelList[0].goodsInfo.goodsName}}
  79. </template>
  80. </el-table-column>
  81. <el-table-column
  82. prop="createTime"
  83. align="center"
  84. label="商品类型"
  85. show-overflow-tooltip
  86. >
  87. <template slot-scope="scope">
  88. {{goodsTypeObj[scope.row.goodsModelList[0].goodsInfo.goodsType] || formatType(scope.row) }}
  89. </template>
  90. </el-table-column>
  91. <el-table-column
  92. prop="payAmount"
  93. align="center"
  94. label="订单金额"
  95. show-overflow-tooltip
  96. >
  97. <template slot-scope="scope">
  98. {{scope.row.goodsModelList[0].payAmount}}
  99. </template>
  100. </el-table-column>
  101. <el-table-column
  102. prop="createTime"
  103. align="center"
  104. label="状态"
  105. show-overflow-tooltip
  106. >
  107. <template slot-scope="scope">
  108. {{scope.row.goodsModelList[0].goodsState | filterType}}
  109. </template>
  110. </el-table-column>
  111. <el-table-column
  112. prop="shopName"
  113. align="center"
  114. label="店铺名称"
  115. show-overflow-tooltip
  116. >
  117. <template slot-scope="scope">
  118. {{scope.row.shopInfo.shopName}}
  119. </template>
  120. </el-table-column>
  121. <el-table-column
  122. prop="createTime"
  123. align="center"
  124. label="下单时间"
  125. show-overflow-tooltip
  126. >
  127. <template slot-scope="scope">
  128. {{ timeFormat(scope.row.createTime) }}
  129. </template>
  130. </el-table-column>
  131. <el-table-column prop="address" align="center" label="操作">
  132. <template slot-scope="scope">
  133. <el-button type="text" size="small" @click="handleDetail(scope.row,'detail')">详情</el-button>
  134. <el-button type="text" size="small" v-if="scope.row.goodsModelList[0].goodsState == 'APPLY_REFUND'&&scope.row.goodsModelList[0].jobFlowMap!='XiaoJu'" @click="handleDetail(scope.row,'refund')">介入处理</el-button>
  135. </template>
  136. </el-table-column>
  137. </el-table>
  138. <div class="page-box">
  139. <el-pagination
  140. @size-change="handleSizeChange"
  141. @current-change="handleCurrentChange"
  142. background
  143. :current-page="query.page"
  144. :page-sizes="[10, 20, 30, 40]"
  145. :page-size="query.size"
  146. layout="total, sizes, prev, pager, next, jumper"
  147. :total="total"
  148. >
  149. </el-pagination>
  150. </div>
  151. </div>
  152. </template>
  153. <script>
  154. import {debounce} from '@/utils/index'
  155. import {getList} from '@/api/order'
  156. import {timeFormat} from '@/utils/index'
  157. export default {
  158. name: "list",
  159. data() {
  160. return {
  161. date:'',//时间
  162. options: [
  163. {
  164. value: "APPLY_REFUND",
  165. label: "申请退款",
  166. },
  167. {
  168. value: "CLOSE",
  169. label: "关闭订单",
  170. },
  171. {
  172. value: "REFUNDED",
  173. label: "已退款",
  174. },
  175. {
  176. value: "REFUSAL_REFUND",
  177. label: "拒绝退款",
  178. },
  179. {
  180. value: "USED",
  181. label: "已使用",
  182. },
  183. {
  184. value: "WAIT_PAYMENT",
  185. label: "待付款",
  186. },
  187. {
  188. value: "WAIT_USE ",
  189. label: "待使用",
  190. },
  191. ],
  192. tableData: [],
  193. goodsTypeObj:{},
  194. loading: false,
  195. query: {
  196. "endTime": '',
  197. "noOrGName": '',
  198. "orderType": "",
  199. "page": 1,
  200. "size": 10,
  201. "sort": "",
  202. "startTime": ''
  203. },
  204. title: "",
  205. total: 0,
  206. };
  207. },
  208. watch: {
  209. // query: {
  210. // handler: debounce(function(val) {
  211. // this.getList()
  212. // }),
  213. // deep:true
  214. // },
  215. date(val){
  216. if(val){
  217. this.query.startTime = val[0]
  218. this.query.endTime = val[1]
  219. }else{
  220. this.query.startTime = ''
  221. this.query.endTime = ''
  222. }
  223. }
  224. },
  225. filters: {
  226. filterType: function(val) {
  227. if(val == 'APPLY_REFUND'){
  228. return "申请退款"
  229. }else if(val == 'CLOSE'){
  230. return "关闭订单"
  231. }else if(val == 'REFUNDED'){
  232. return "已退款"
  233. }else if(val == 'REFUSAL_REFUND'){
  234. return "拒绝退款"
  235. }else if(val == 'USED'){
  236. return "已使用"
  237. }else if(val == 'WAIT_PAYMENT'){
  238. return "待付款"
  239. }else if(val =='AOUTO_REFUNDED'){
  240. return '自动退款'
  241. }
  242. else if(val == 'WAIT_USE'){
  243. return '待使用'
  244. }
  245. }
  246. },
  247. methods: {
  248. formatType(row){
  249. if(row.goodsModelList[0].jobFlowMap == 'XiaoJu'){
  250. return '加油充电'
  251. }else if(row.goodsModelList[0].jobFlowMap == 'Activity'){
  252. return '活动报名'
  253. }else{
  254. return '-'
  255. }
  256. },
  257. handleSearch(){
  258. this.query.page = 1
  259. this.getList();
  260. },
  261. timeFormat(val){
  262. return timeFormat(val)
  263. },
  264. handleDetail(row,mode){
  265. localStorage.setItem('orderItem',JSON.stringify(row))
  266. this.$router.push({
  267. path:'/operationManage/orderManage/orderDetail',
  268. query:{
  269. mode,
  270. orderNo:row.orderNo,
  271. id:row.goodsModelList[0].id
  272. }
  273. })
  274. },
  275. handleSizeChange(val) {
  276. this.query.page = 1;
  277. this.query.size = val;
  278. this.getList()
  279. },
  280. handleCurrentChange(val) {
  281. this.query.page = val;
  282. this.getList()
  283. },
  284. search() {
  285. this.query.page = 1;
  286. this.getList()
  287. },
  288. getList(){
  289. this.loading = true
  290. let obj = JSON.parse(JSON.stringify(this.query))
  291. obj.page = obj.page -1
  292. if(!obj.orderType){
  293. delete obj.orderType
  294. }
  295. getList(obj).then(res=>{
  296. this.loading = false
  297. if(res.state == 'Success'){
  298. this.tableData = res.content.content
  299. this.total = res.content.totalElements
  300. }
  301. })
  302. }
  303. },
  304. created() {
  305. this.goodsTypeObj = JSON.parse(sessionStorage.getItem('goodsTypeObj'))
  306. this.getList()
  307. },
  308. };
  309. </script>
  310. <style lang="scss" >
  311. .list {
  312. .icon{
  313. width: 80px;
  314. }
  315. }
  316. </style>