index.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348
  1. <template>
  2. <zj-page-container>
  3. <zj-page-fill>
  4. <zj-tab-page
  5. ref="tabPage"
  6. :defaultActives="[{ key: 'list', label: $route.meta.title + '-列表', essential: true }]"
  7. >
  8. <template slot-scope="{ activeKey, data }">
  9. <div
  10. :style="{ height: activeKey == 'list' ? '100%' : '0px' }"
  11. style="width: 100%; height: 100%; overflow: hidden"
  12. >
  13. <div style="width: 100%; height: 100%; box-sizing: border-box; padding: 10px">
  14. <zj-page-container>
  15. <div class="screen-container">
  16. <el-form ref="screenForm" :model="screenForm" label-width="70px" size="small" label-position="left">
  17. <el-row :gutter="20">
  18. <el-col :xs="24" :sm="12" :lg="6">
  19. <el-form-item label="订单号" prop="orderId">
  20. <el-input v-model="screenForm.orderId" placeholder="请输入订单号"></el-input>
  21. </el-form-item>
  22. </el-col>
  23. <el-col :xs="24" :sm="12" :lg="6">
  24. <el-form-item label="售后编号" prop="esOrderRefundId">
  25. <el-input v-model="screenForm.esOrderRefundId" placeholder="请输入售后编号"></el-input>
  26. </el-form-item>
  27. </el-col>
  28. <el-col :xs="24" :sm="12" :lg="6">
  29. <el-form-item label="商品名称" prop="esGoodsName">
  30. <el-input v-model="screenForm.esGoodsName" placeholder="请输入商品名称"></el-input>
  31. </el-form-item>
  32. </el-col>
  33. <el-col :xs="24" :sm="12" :lg="6">
  34. <el-form-item label="会员昵称" prop="userName">
  35. <el-input v-model="screenForm.userName" placeholder="请输入会员昵称"></el-input>
  36. </el-form-item>
  37. </el-col>
  38. <el-col :xs="24" :sm="12" :lg="6">
  39. <el-form-item label="手机号" prop="userMobile">
  40. <el-input v-model="screenForm.userMobile" placeholder="请输入手机号"></el-input>
  41. </el-form-item>
  42. </el-col>
  43. <el-col :xs="24" :sm="12" :lg="6">
  44. <el-form-item label="创建时间" prop="createDate" style="height: 33px">
  45. <el-date-picker
  46. v-model="screenForm.createDate"
  47. type="datetimerange"
  48. value-format="yyyy-MM-dd HH:mm:ss"
  49. range-separator="至"
  50. start-placeholder="开始日期"
  51. end-placeholder="结束日期"
  52. >
  53. </el-date-picker>
  54. </el-form-item>
  55. </el-col>
  56. <el-col :xs="24" :sm="12" :lg="6">
  57. <el-form-item label="支付时间" prop="payDate" style="height: 33px">
  58. <el-date-picker
  59. v-model="screenForm.payDate"
  60. type="datetimerange"
  61. value-format="yyyy-MM-dd HH:mm:ss"
  62. range-separator="至"
  63. start-placeholder="开始日期"
  64. end-placeholder="结束日期"
  65. >
  66. </el-date-picker>
  67. </el-form-item>
  68. </el-col>
  69. <el-col :xs="24" :sm="12" :lg="6" class="tr">
  70. <el-form-item label="" label-width="0px">
  71. <div style="text-align: left">
  72. <el-button size="small" type="primary" @click="submitScreenForm">搜索</el-button>
  73. <el-button size="small" @click="resetScreenForm">清空</el-button>
  74. </div>
  75. </el-form-item>
  76. </el-col>
  77. </el-row>
  78. </el-form>
  79. </div>
  80. <div class="tabs-container order-tabs-container clearfix" style="margin: 10px 0 !important">
  81. <div class="fl">
  82. <el-tabs
  83. v-model="tabCurrent"
  84. type="card"
  85. @tab-click="changeTabs"
  86. class="fl"
  87. size="small"
  88. style="margin-right: 10px"
  89. >
  90. <el-tab-pane label="全部" name="ALL"></el-tab-pane>
  91. <el-tab-pane label="待商家处理" name="WAIT"></el-tab-pane>
  92. <el-tab-pane label="已完成" name="OVER"></el-tab-pane>
  93. </el-tabs>
  94. </div>
  95. <div class="fr">
  96. <el-button size="small" type="primary" @click="handleExport">导出</el-button>
  97. </div>
  98. </div>
  99. <zj-page-fill>
  100. <div class="order-main-container">
  101. <div class="table-top">
  102. <el-row style="width: 100%">
  103. <el-col :span="3">
  104. <span class="item product">商品信息</span>
  105. </el-col>
  106. <el-col :span="3" style="text-align: right"><span class="item">单价(元)/数量</span></el-col>
  107. <el-col :span="3" style="text-align: center"><span class="item">买家信息</span></el-col>
  108. <el-col :span="3" style="text-align: center"><span class="item">收货信息</span></el-col>
  109. <el-col :span="3" style="text-align: center"><span class="item">订单金额</span></el-col>
  110. <el-col :span="3" style="text-align: center"><span class="item">退款金额</span></el-col>
  111. <el-col :span="3" style="text-align: center"><span class="item">状态</span></el-col>
  112. <el-col :span="3" style="text-align: center"><span class="item">操作</span></el-col>
  113. </el-row>
  114. </div>
  115. <div class="order-item" v-for="order in dataList" :key="order.orderId">
  116. <div class="order-top">
  117. <span><b>售后编号</b>:{{ order.esOrderRefundId }}</span>
  118. <span><b>订单号</b>:{{ order.esOrderId }}</span>
  119. <span><b>下单时间</b>:{{ order.createTime }}</span>
  120. <!-- <el-tag>商城销售</el-tag> -->
  121. <div class="fr"></div>
  122. </div>
  123. <div class="order-content">
  124. <el-row style="width: 100%">
  125. <el-col :span="6" style="height: 100%">
  126. <div class="col-item-pro">
  127. <div class="pro-item">
  128. <div class="left">
  129. <div class="image">
  130. <img :src="$showImgUrl(order.goodsUrl)" style="height: 80px; width: 80px" />
  131. </div>
  132. <div class="main">
  133. <span>{{ order.esGoodsName }}</span>
  134. </div>
  135. </div>
  136. <div class="right">
  137. <span>¥{{ order.refundPrice }}</span>
  138. <span>x{{ order.refundNum }}</span>
  139. </div>
  140. </div>
  141. </div>
  142. </el-col>
  143. <el-col :span="3" style="height: 100%">
  144. <div class="col-item">
  145. <div>{{ order.userName }}</div>
  146. <div>{{ order.userMobile }}</div>
  147. </div>
  148. </el-col>
  149. <el-col :span="3" style="height: 100%">
  150. <div class="col-item">
  151. <div>{{ order.userName }}/{{ order.userMobile }}</div>
  152. <div class="ellipsis-2">
  153. {{ order.province + order.city + order.area + order.street + order.receAddress }}
  154. </div>
  155. </div>
  156. </el-col>
  157. <el-col :span="3" style="height: 100%">
  158. <div class="col-item">
  159. <div class="totalprice">¥{{ order.totalAmount }}</div>
  160. </div>
  161. </el-col>
  162. <el-col :span="3" style="height: 100%">
  163. <div class="col-item">
  164. <div class="totalprice">¥{{ order.refundPrice }}</div>
  165. </div>
  166. </el-col>
  167. <el-col :span="3" style="height: 100%">
  168. <div class="col-item">
  169. <div style="display: flex; align-items: center">
  170. <span style="margin-left: 4px">{{
  171. { WAIT: '平台处理', OVER: '完成' }[order.status]
  172. }}</span>
  173. </div>
  174. </div>
  175. </el-col>
  176. <el-col :span="3" style="height: 100%">
  177. <div class="col-item">
  178. <div class="operate">
  179. <el-button @click="viewDetails(order)" type="text" size="small">查看详情</el-button>
  180. </div>
  181. </div>
  182. </el-col>
  183. </el-row>
  184. </div>
  185. </div>
  186. <div class="no-data" v-if="dataList.length <= 0">暂无订单</div>
  187. </div>
  188. </zj-page-fill>
  189. <div class="pagination clearfix" style="margin-top: 10px">
  190. <div class="fr">
  191. <el-pagination
  192. @size-change="handleSizeChange"
  193. @current-change="handleCurrentChange"
  194. :current-page="currentPage"
  195. :page-sizes="[10, 20, 30, 50]"
  196. :page-size="10"
  197. layout="total, sizes, prev, pager, next, jumper"
  198. :total="listTotal"
  199. >
  200. </el-pagination>
  201. </div>
  202. </div>
  203. </zj-page-container>
  204. </div>
  205. </div>
  206. <!-- 查看详情 -->
  207. <div v-if="activeKey == 'details'" style="width: 100%; height: 100%">
  208. <detailsV
  209. :detailsId="detailsId"
  210. @removeTab="
  211. () => {
  212. getList()
  213. data.removeTab()
  214. }
  215. "
  216. />
  217. </div>
  218. </template>
  219. </zj-tab-page>
  220. </zj-page-fill>
  221. </zj-page-container>
  222. </template>
  223. <script>
  224. import { esOrderListRefund } from '@/api/orderManagement'
  225. import detailsV from './details.vue'
  226. import '@/styles/order-list.scss'
  227. import { downloadFiles } from '@/utils/util'
  228. export default {
  229. components: { detailsV },
  230. data() {
  231. return {
  232. screenForm: {
  233. // 筛选表单数据
  234. orderId: '', // 订单号
  235. esOrderRefundId: '',
  236. esGoodsName: '', // 商品名称
  237. userName: '', // 会员昵称
  238. userMobile: '', // 手机号
  239. websitId: '', // 网点名称
  240. status: '', // 状态
  241. createDate: '', // 创建时间
  242. payDate: '', // 支付时间
  243. exchangeCode: '', // 兑换码
  244. evaluateStatus: '', // 评价状态
  245. sendStatus: '', // 派单异常
  246. workerOrderNo: '' // 信息编号
  247. },
  248. tabCurrent: 'ALL',
  249. currentPage: 1, // 当前页码
  250. pageSize: 10, // 每页数量
  251. listTotal: 0, // 列表总数
  252. dataList: [],
  253. detailsId: ''
  254. }
  255. },
  256. created() {
  257. this.getList()
  258. },
  259. methods: {
  260. viewDetails(row, type) {
  261. this.$refs.tabPage.addTab({
  262. // 对应显示的模块
  263. activeKey: 'details',
  264. // 唯一标识
  265. key: 'details',
  266. // 页签名称
  267. label: '订单详情',
  268. // 打开时事件
  269. triggerEvent: () => {
  270. this.detailsId = row.esOrderRefundId
  271. },
  272. // 关闭时事件
  273. closeEvent: () => {}
  274. })
  275. },
  276. changeTabs(tab, event) {
  277. this.screenForm.status = this.tabCurrent === 'ALL' ? '' : tab.$options.propsData.name
  278. this.currentPage = 1
  279. this.getList()
  280. },
  281. // 获取数据列表
  282. getList() {
  283. let params = {
  284. orderId: this.screenForm.orderId, // 订单号
  285. esOrderRefundId: this.screenForm.esOrderRefundId, // 订单号
  286. esGoodsName: this.screenForm.esGoodsName, // 商品名称
  287. userName: this.screenForm.userName, // 会员昵称
  288. userMobile: this.screenForm.userMobile, // 手机号
  289. status: this.screenForm.status, // 状态
  290. startCreateTime: this.screenForm.createDate[0] ? this.screenForm.createDate[0] : null, // 创建时间
  291. endCreateTime: this.screenForm.createDate[1] ? this.screenForm.createDate[1] : null, // 创建时间
  292. startPayTime: this.screenForm.payDate[0] ? this.screenForm.payDate[0] : null, // 支付时间
  293. endPayTime: this.screenForm.payDate[1] ? this.screenForm.payDate[1] : null, // 支付时间
  294. pageNum: this.currentPage,
  295. pageSize: this.pageSize
  296. }
  297. esOrderListRefund(params).then(res => {
  298. res.data.records.forEach(item => {
  299. item.selected = false
  300. })
  301. this.dataList = res.data.records
  302. this.listTotal = res.data.total
  303. })
  304. },
  305. // 更改每页数量
  306. handleSizeChange(val) {
  307. this.pageSize = val
  308. this.currentPage = 1
  309. this.getList()
  310. },
  311. // 更改当前页
  312. handleCurrentChange(val) {
  313. this.currentPage = val
  314. this.getList()
  315. },
  316. // 提交筛选表单
  317. submitScreenForm() {
  318. this.currentPage = 1
  319. this.getList()
  320. },
  321. // 重置筛选表单
  322. resetScreenForm() {
  323. this.$refs.screenForm.resetFields()
  324. this.currentPage = 1
  325. this.getList()
  326. },
  327. // 导出
  328. handleExport() {
  329. let params = {
  330. orderId: this.screenForm.orderId, // 订单号
  331. esOrderRefundId: this.screenForm.esOrderRefundId, // 订单号
  332. esGoodsName: this.screenForm.esGoodsName, // 商品名称
  333. userName: this.screenForm.userName, // 会员昵称
  334. userMobile: this.screenForm.userMobile, // 手机号
  335. status: this.screenForm.status, // 状态
  336. startCreateTime: this.screenForm.createDate[0] ? this.screenForm.createDate[0] : null, // 创建时间
  337. endCreateTime: this.screenForm.createDate[1] ? this.screenForm.createDate[1] : null, // 创建时间
  338. startPayTime: this.screenForm.payDate[0] ? this.screenForm.payDate[0] : null, // 支付时间
  339. endPayTime: this.screenForm.payDate[1] ? this.screenForm.payDate[1] : null, // 支付时间
  340. pageNum: this.currentPage,
  341. pageSize: this.pageSize
  342. }
  343. downloadFiles('esOrder/listExcelRefund', params)
  344. }
  345. }
  346. }
  347. </script>