index.vue 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290
  1. <template>
  2. <div class="app-container">
  3. <el-form
  4. :model="queryParams"
  5. ref="queryForm"
  6. :inline="true"
  7. v-show="showSearch"
  8. label-width="90px"
  9. >
  10. <el-form-item label="盲票组名称" prop="boxTitle">
  11. <el-input
  12. v-model="queryParams.boxTitle"
  13. placeholder="请输入盲票组名称"
  14. clearable
  15. size="small"
  16. style="width: 240px"
  17. @keyup.enter.native="handleQuery"
  18. />
  19. </el-form-item>
  20. <el-form-item label="盲票类型" prop="boxType">
  21. <el-select
  22. v-model="queryParams.boxType"
  23. placeholder="请选择盲票类型"
  24. style="width: 100%"
  25. size="small"
  26. filterable
  27. clearable
  28. @change="handleQuery"
  29. >
  30. <el-option label="线上盲票" value="online"></el-option>
  31. <el-option label="线下盲票" value="offline"></el-option>
  32. </el-select>
  33. </el-form-item>
  34. <el-form-item label="用户手机号" prop="phone">
  35. <el-input
  36. v-model="queryParams.phone"
  37. placeholder="请输入用户手机号"
  38. clearable
  39. size="small"
  40. style="width: 240px"
  41. @keyup.enter.native="handleQuery"
  42. />
  43. </el-form-item>
  44. <el-form-item label="下单时间">
  45. <el-date-picker
  46. v-model="tradeTimeArr"
  47. type="datetimerange"
  48. size="small"
  49. value-format="timestamp"
  50. range-separator="至"
  51. start-placeholder="时间选择"
  52. end-placeholder="时间选择"
  53. @change="tardeTime"
  54. >
  55. </el-date-picker>
  56. </el-form-item>
  57. <el-form-item>
  58. <el-button
  59. type="primary"
  60. icon="el-icon-search"
  61. size="mini"
  62. @click="handleQuery"
  63. >搜索</el-button
  64. >
  65. <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
  66. >重置</el-button
  67. >
  68. </el-form-item>
  69. </el-form>
  70. <!-- 导出、刷新 -->
  71. <el-row :gutter="10" class="mb8">
  72. <el-col :span="1.5">
  73. <el-button
  74. type="infor"
  75. plain
  76. icon="el-icon-download"
  77. size="small"
  78. @click="handleExportDraw"
  79. v-hasPermi="['order:deliver:export']"
  80. >导出订单</el-button
  81. >
  82. </el-col>
  83. <right-toolbar
  84. :showSearch.sync="showSearch"
  85. @queryTable="getList"
  86. ></right-toolbar>
  87. </el-row>
  88. <!-- 订单状态 -->
  89. <el-tabs type="card" v-model="state">
  90. <el-tab-pane label="全部" name="null"></el-tab-pane>
  91. </el-tabs>
  92. <!-- 列表 -->
  93. <el-table ref="table" v-loading="loading" :data="list">
  94. <el-table-column
  95. label="订单号"
  96. fixed="left"
  97. align="center"
  98. prop="orderId"
  99. min-width="110"
  100. />
  101. <el-table-column label="下单时间" min-width="100">
  102. <template slot-scope="{ row }">
  103. <div>{{ parseTime(row.createdTime) }}</div>
  104. </template>
  105. </el-table-column>
  106. <el-table-column label="盲票组名称" prop="title" min-width="95" />
  107. <el-table-column label="盲票类型" prop="boxType" min-width="95" />
  108. <el-table-column label="盲票售价(元)" prop="parentName" min-width="95">
  109. <template slot-scope="{ row }">
  110. <div>{{ $numberFormat(row.salePrice) }}</div>
  111. </template>
  112. </el-table-column>
  113. <el-table-column label="支付金额(元)" min-width="95">
  114. <template slot-scope="{ row }">
  115. <div>{{ $numberFormat(row.payAmt) }}</div>
  116. </template>
  117. </el-table-column>
  118. <el-table-column label="用户昵称/手机号" min-width="120">
  119. <template slot-scope="{ row }">
  120. <div>{{ row.nickName }}/{{ row.phone }}</div>
  121. </template>
  122. </el-table-column>
  123. <el-table-column label="操作" fixed="right" align="center" width="80">
  124. <template slot-scope="{ row }">
  125. <div>
  126. <el-button
  127. v-hasPermi="['order:channel:query']"
  128. type="text"
  129. @click="$router.push({ name: 'UserTicketDetail', query: { id: row.orderId } })"
  130. >查看</el-button
  131. >
  132. </div>
  133. </template>
  134. </el-table-column>
  135. </el-table>
  136. <!-- 分页 -->
  137. <pagination
  138. v-show="total > 0"
  139. :total="total"
  140. :page.sync="pageParams.pageNum"
  141. :limit.sync="pageParams.pageSize"
  142. @pagination="getList"
  143. />
  144. </div>
  145. </template>
  146. <script>
  147. import { ticketOrderList, ticketOrderExport } from "@/api/business/order";
  148. export default {
  149. name: "UserTicket",
  150. data() {
  151. return {
  152. loading: false,
  153. showSearch: true,
  154. // 筛选
  155. queryParams: {
  156. boxTitle: "",
  157. boxType: "",
  158. startTime: "",
  159. endTime: "",
  160. phone: "",
  161. },
  162. // 分页
  163. pageParams: {
  164. pageNum: 1,
  165. pageSize: 10,
  166. },
  167. // 总条数
  168. total: 0,
  169. list: [
  170. {
  171. orderId: 1,
  172. },
  173. ],
  174. // 下单时间
  175. tradeTimeArr: [],
  176. // 订单列表状态
  177. state: "null",
  178. };
  179. },
  180. created() {
  181. this.getList()
  182. },
  183. methods: {
  184. // 订单列表
  185. getList() {
  186. this.loading = true;
  187. ticketOrderList(
  188. "pageNum=" +
  189. this.pageParams.pageNum +
  190. "&pageSize=" +
  191. this.pageParams.pageSize +
  192. "&",
  193. this.queryParams
  194. )
  195. .then((res) => {
  196. this.loading = false;
  197. if (res.code == 0) {
  198. this.total = res.total;
  199. this.list = res.rows;
  200. this.list.forEach((item) => {
  201. item.boxType = JSON.parse(item.boxType).desc;
  202. });
  203. }
  204. })
  205. .catch(() => {
  206. this.loading = false;
  207. });
  208. },
  209. //搜索
  210. handleQuery() {
  211. this.siteList = this.siteCopyList;
  212. this.pageParams.pageNum = 1;
  213. this.getList();
  214. },
  215. // 重置
  216. resetQuery() {
  217. this.resetForm("queryForm");
  218. this.tradeTimeArr = [];
  219. this.pageParams.pageNum = 1;
  220. this.queryParams.startTime = "";
  221. this.queryParams.endTime = "";
  222. this.getList();
  223. },
  224. // 选择下单时间
  225. tardeTime(e) {
  226. if (e) {
  227. this.queryParams.startTime = e[0];
  228. this.queryParams.endTime = e[1];
  229. this.handleQuery();
  230. } else {
  231. this.queryParams.startTime = "";
  232. this.queryParams.endTime = "";
  233. this.handleQuery();
  234. }
  235. },
  236. // 查看详情
  237. getDetail(row) {
  238. this.$router.push({ name: "ChannelDetail", query: { id: row.orderId } });
  239. },
  240. // 点击发货
  241. toGoods(row) {
  242. this.goodsShow = true;
  243. this.goodsInfo = row;
  244. this.getBoxList(row);
  245. },
  246. // 关闭发货弹框
  247. close() {
  248. this.getList();
  249. },
  250. // 导出订单
  251. handleExportDraw() {
  252. this.$confirm("是否确认导出订单?", "警告", {
  253. confirmButtonText: "确定",
  254. cancelButtonText: "取消",
  255. type: "warning",
  256. })
  257. .then(() => {
  258. this.vloading = this.$loading({
  259. lock: true,
  260. text: "正在导出订单.....",
  261. background: "rgba(0, 0, 0, 0.7)",
  262. });
  263. return ticketOrderExport(this.queryParams);
  264. })
  265. .then((response) => {
  266. this.vloading.close();
  267. this.download(response.msg);
  268. })
  269. .catch(() => {
  270. this.vloading.close();
  271. });
  272. },
  273. },
  274. };
  275. </script>
  276. <style lang="scss" scoped>
  277. ::v-deep .el-tabs--border-card > .el-tabs__content {
  278. padding: 0;
  279. }
  280. </style>