tenantTradeManager.vue 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  1. <template>
  2. <div class="m-container">
  3. <h2>
  4. <div class="squrt"></div>
  5. 机构交易管理
  6. </h2>
  7. <save-form
  8. :inline="true"
  9. class="searchForm"
  10. ref="searchForm"
  11. @submit="search"
  12. @reset="reset"
  13. :saveKey="'tenantTradeManager'"
  14. :model.sync="searchForm"
  15. >
  16. <el-form-item prop="transNo">
  17. <el-input
  18. placeholder="交易流水号"
  19. clearable
  20. type="text"
  21. v-model.trim="searchForm.transNo"
  22. ></el-input>
  23. </el-form-item>
  24. <el-form-item prop="orderNo">
  25. <el-input
  26. placeholder="订单号"
  27. clearable
  28. type="text"
  29. v-model.trim="searchForm.orderNo"
  30. ></el-input>
  31. </el-form-item>
  32. <el-form-item prop="tenantId" v-if="baseTenantId < 0">
  33. <!-- 小于0则是平台 -->
  34. <el-select
  35. v-model.trim="searchForm.tenantId"
  36. filterable
  37. multiple
  38. collapse-tags
  39. placeholder="机构名称"
  40. clearable
  41. >
  42. <el-option v-for="(item, index) in tenantList" :key="index" :label="item.name" :value="item.id"></el-option>
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item prop="orderType">
  46. <el-select
  47. v-model.trim="searchForm.orderType"
  48. clearable
  49. filterable
  50. @clear="onClear('orderType')"
  51. placeholder="交易类型"
  52. >
  53. <el-option
  54. v-for="(item, index) in tenantStatus"
  55. :key="index"
  56. :label="item.label"
  57. :value="item.value"
  58. ></el-option>
  59. </el-select>
  60. </el-form-item>
  61. <el-form-item prop="orderState">
  62. <el-select
  63. v-model.trim="searchForm.orderState"
  64. clearable
  65. filterable
  66. @clear="onClear('orderState')"
  67. placeholder="交易状态"
  68. >
  69. <el-option label="待支付" :value="0"></el-option>
  70. <el-option label="已支付" :value="1"></el-option>
  71. </el-select>
  72. </el-form-item>
  73. <el-form-item prop="createTimer">
  74. <el-date-picker
  75. v-model.trim="searchForm.createTimer"
  76. type="daterange"
  77. value-format="yyyy-MM-dd"
  78. range-separator="至"
  79. start-placeholder="入驻开始时间"
  80. end-placeholder="入驻结束时间"
  81. :picker-options="{ firstDayOfWeek: 1 }"
  82. ></el-date-picker>
  83. </el-form-item>
  84. <el-form-item>
  85. <el-button native-type="submit" type="danger">搜索</el-button>
  86. <el-button native-type="reset" type="primary">重置</el-button>
  87. </el-form-item>
  88. </save-form>
  89. <!-- 列表 -->
  90. <div class="tableWrap">
  91. <el-table
  92. :data="tableList"
  93. :header-cell-style="{ background: '#EDEEF0', color: '#444' }"
  94. >
  95. <el-table-column align="center" prop="transNo" label="交易流水号">
  96. </el-table-column>
  97. <el-table-column align="center" label="订单号" prop="orderNo">
  98. </el-table-column>
  99. <el-table-column align="center" label="订单时间" prop="payDate">
  100. </el-table-column>
  101. <el-table-column align="center" label="机构编号" prop="tenantId">
  102. </el-table-column>
  103. <el-table-column align="center" label="机构名称" prop="tenantName">
  104. </el-table-column>
  105. <el-table-column align="center" label="交易类型">
  106. <template slot-scope="scope">
  107. {{ scope.row.orderType | tenantStatus }}
  108. </template>
  109. </el-table-column>
  110. <el-table-column align="center" label="订单金额">
  111. <template slot-scope="scope">
  112. {{ scope.row.expectAmount | moneyFormat }}
  113. </template>
  114. </el-table-column>
  115. <!-- <el-table-column align="center" label="网络教室剩余时长" prop="productName">
  116. </el-table-column> -->
  117. <el-table-column align="center" label="支付金额">
  118. <template slot-scope="scope">
  119. {{ scope.row.actualAmount | moneyFormat }}
  120. </template>
  121. </el-table-column>
  122. <el-table-column align="center" label="交易状态">
  123. <template slot-scope="scope">
  124. {{ scope.row.orderState | tenantOrderStatus }}
  125. </template>
  126. </el-table-column>
  127. <!-- <el-table-column align="center" label="操作">
  128. <template slot-scope="scope">
  129. <el-button
  130. @click="openService(scope.row)"
  131. v-permission="'tenantInfo/info'"
  132. type="text"
  133. >查看</el-button>
  134. </template>
  135. </el-table-column> -->
  136. </el-table>
  137. <pagination
  138. :saveKey="'tenantTradeManager'"
  139. sync
  140. :total.sync="pageInfo.total"
  141. :page.sync="pageInfo.page"
  142. :limit.sync="pageInfo.limit"
  143. :page-sizes="pageInfo.page_size"
  144. @pagination="getList"
  145. />
  146. </div>
  147. <el-dialog title="订单详情" :visible.sync="orderVisible" width="1200px">
  148. <order-info />
  149. </el-dialog>
  150. </div>
  151. </template>
  152. <script>
  153. import pagination from "@/components/Pagination/index";
  154. import { tenantInfoQueryPage } from "../organManager/api";
  155. import { tenantOrderRecordQueryPage } from "./api";
  156. import { tenantStatus, dealStatus } from "@/utils/searchArray";
  157. import OrderInfo from './model/orderInfo'
  158. import { getTimes } from "@/utils";
  159. const initSearch = {
  160. transNo: null,
  161. orderNo: null,
  162. tenantId: [],
  163. orderType: null,
  164. orderState: null,
  165. createTimer: [],
  166. };
  167. export default {
  168. components: { pagination, OrderInfo },
  169. data() {
  170. const baseTenantId = sessionStorage.getItem('baseTenantId')
  171. return {
  172. baseTenantId,
  173. tenantStatus,
  174. dealStatus,
  175. tableList: [],
  176. orderVisible: false,
  177. pageInfo: {
  178. // 分页规则
  179. limit: 10, // 限制显示条数
  180. page: 1, // 当前页
  181. total: 0, // 总条数
  182. page_size: [10, 20, 40, 50], // 选择限制显示条数
  183. },
  184. searchForm: { ...initSearch },
  185. tenantList: []
  186. };
  187. },
  188. async mounted() {
  189. await this.getTenant()
  190. this.getList();
  191. },
  192. methods: {
  193. async getTenant() {
  194. try {
  195. const res = await tenantInfoQueryPage({ page: 1, rows: 999 }, )
  196. this.tenantList = res.data?.rows || []
  197. } catch(e) {}
  198. },
  199. async getList() {
  200. try {
  201. let { createTimer, tenantId, ...reset } = this.searchForm;
  202. const res = await tenantOrderRecordQueryPage({
  203. ...reset,
  204. tenantId: tenantId.join(','),
  205. ...getTimes(createTimer, ["startDate", "endDate"], "YYYY-MM-DD"),
  206. page: this.pageInfo.page,
  207. rows: this.pageInfo.limit,
  208. });
  209. this.pageInfo.total = res.total;
  210. this.tableList = res.rows;
  211. } catch (e) {}
  212. },
  213. search() {
  214. this.pageInfo.page = 1;
  215. this.$refs.searchForm.save(this.searchForm);
  216. this.$refs.searchForm.save(this.pageInfo, "page");
  217. this.getList();
  218. },
  219. reset() {
  220. this.searchForm = { ...initSearch };
  221. this.search();
  222. },
  223. openService(row) {
  224. this.orderVisible = true
  225. },
  226. },
  227. filters: {
  228. tenantOrderStatus(val) {
  229. const template = {
  230. 0: "待支付",
  231. 1: "已支付",
  232. 2: "支付失败"
  233. }
  234. return template[val]
  235. }
  236. }
  237. };
  238. </script>
  239. <style lang="scss" scoped>
  240. .courseMask .el-dialog__body {
  241. padding-bottom: 0;
  242. }
  243. </style>