index.vue 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327
  1. <template>
  2. <div class="app-container">
  3. <!-- 搜索 -->
  4. <el-form inline size="mini">
  5. <el-form-item label="订单编号:">
  6. <el-input v-model="form.orderCode" placeholder="请输入订单编号" clearable />
  7. </el-form-item>
  8. <el-form-item label="用户账号:">
  9. <el-input v-model="form.userName" placeholder="请输入用户账户" clearable />
  10. </el-form-item>
  11. <el-form-item label="用户手机号:">
  12. <el-input v-model="form.phone" placeholder="请输入用户手机号" clearable />
  13. </el-form-item>
  14. <!-- 流量订单 -->
  15. <span v-if="form.searchType === '2'">
  16. <el-form-item label="SIM卡号:">
  17. <el-input v-model="form.simCode" placeholder="请输入SIM卡号" clearable />
  18. </el-form-item>
  19. <el-form-item label="生效状态">
  20. <el-select v-model="form.flowStatus" placeholder="请选择生效状态">
  21. <el-option v-for="item in flowOptions" :key="item.value" :value="item.value" :label="item.label" />
  22. </el-select>
  23. </el-form-item>
  24. </span>
  25. <!-- 除充值订单 -->
  26. <span v-if="form.searchType === '3'">
  27. <el-form-item label="商品ID:">
  28. <el-input v-model="form.goodsid" placeholder="请输入商品ID" />
  29. </el-form-item>
  30. <el-form-item label="商品名称:">
  31. <el-input v-model="form.goodsName" placeholder="请输入商品名称" />
  32. </el-form-item>
  33. <el-form-item label="操作系统">
  34. <el-select v-model="form.platform" placeholder="请选择操作系统">
  35. <el-option v-for="item in systemOptions" :key="item.value" :value="item.value" :label="item.label" />
  36. </el-select>
  37. </el-form-item>
  38. </span>
  39. <!-- 会员订单 -->
  40. <el-form-item v-if="form.searchType === '4'" label="资源平台:">
  41. <el-select v-model="form.platformId" placeholder="请选择资源平台">
  42. <el-option v-for="item in platformIdOptions" :key="item.value" :value="item.value" :label="item.label" />
  43. </el-select>
  44. </el-form-item>
  45. <el-form-item label="支付状态:">
  46. <el-select v-model="form.status" placeholder="请选择订单状态">
  47. <el-option v-for="item in statusOptions" :key="item.value" :value="item.value" :label="item.label" />
  48. </el-select>
  49. </el-form-item>
  50. <el-form-item label="支付方式:">
  51. <el-select v-model="form.payType" placeholder="请选择支付方式">
  52. <el-option v-for="item in payOptions" :key="item.value" :value="item.value" :label="item.label" />
  53. </el-select>
  54. </el-form-item>
  55. <el-form-item label="下单时间:">
  56. <el-date-picker v-model="form.listDate" type="datetimerange" start-placeholder="开始日期" end-placeholder="结束日期"
  57. value-format="yyyy-MM-dd HH:mm:ss" />
  58. </el-form-item>
  59. <el-form-item>
  60. <el-button type="primary" icon="el-icon-search" @click="getSearch">搜索</el-button>
  61. <el-button icon="el-icon-refresh" @click="getRefresh">重置</el-button>
  62. <el-button type="primary" icon="el-icon-download" @click="handleExport">导出</el-button>
  63. <el-button type="primary" @click="getDialog">查看</el-button>
  64. </el-form-item>
  65. </el-form>
  66. <!-- 列表 -->
  67. <el-table :data="tableData" v-loading="loading">
  68. <el-table-column label="订单编号" prop="orderCode" key="orderCode" align="center" />
  69. <el-table-column v-if="form.searchType === '2'" label="第三方订单编号" prop="thirdOrderId" key="thirdOrderId"
  70. align="center" />
  71. <el-table-column label="商品ID" prop="goodsid" key="goodsid" align="center" />
  72. <el-table-column label="商品名称" prop="goodsName" key="goodsName" align="center" show-overflow-tooltip />
  73. <el-table-column label="订单金额 / 元" prop="amount" key="amount" align="center" :formatter="amountFormatter" />
  74. <el-table-column v-if="form.searchType === '2'" label="SIM卡号" prop="simCode" key="simCode" align="center" />
  75. <el-table-column v-if="form.searchType === '1'" label="购买类型" prop="charging" key="charging" align="center"
  76. :formatter="chargingFormatter" />
  77. <el-table-column v-if="form.searchType === '3'" label="订单来源" prop="platform" key="platform" align="center"
  78. :formatter="platformFormatter" />
  79. <el-table-column v-if="form.searchType === '4'" label="栏目" prop="groupId" key="groupId" align="center"
  80. :formatter="groupFormatter" />
  81. <el-table-column v-if="form.searchType === '4'" label="服务时长" prop="expirationTime" key="expirationTime"
  82. align="center" />
  83. <el-table-column v-if="form.searchType === '4'" label="资源平台" prop="platformId" key="platformId" align="center"
  84. :formatter="platformIdFormatter" />
  85. <el-table-column label="下单时间" prop="createTime" key="createTime" align="center" />
  86. <el-table-column label="支付方式" prop="payType" key="payType" align="center" :formatter="payTypeFormatter" />
  87. <el-table-column label="支付状态" prop="status" key="status" align="center" :formatter="statusFormatter" />
  88. <el-table-column label="支付时间" prop="goodsUpdateTime" key="goodsUpdateTime" align="center" />
  89. <el-table-column label="用户账号" prop="userName" key="userName" align="center" />
  90. <el-table-column label="支付流水号" prop="payId" key="payId" align="center" />
  91. <el-table-column v-if="form.searchType === '2'" label="生效状态" prop="flowStatus" key="flowStatus" align="center"
  92. :formatter="flowFormatter" />
  93. <el-table-column v-if="form.searchType === '2'" label="生效时间" prop="effectTime" key="effectTime" align="center" />
  94. </el-table>
  95. <pagination v-show="total > 0" :total="total" :page.sync="form.pageNum" :limit.sync="form.pageSize"
  96. @pagination="getList" />
  97. <!-- 弹窗 -->
  98. <el-dialog :visible.sync="dialogVisible" title="导出历史" width="1000px">
  99. <el-table :data="dialogTable" v-loading="dialogLoading">
  100. <el-table-column type="index" label="序号" align="center" />
  101. <el-table-column label="任务ID" prop="msgId" align="center" />
  102. <el-table-column label="任务名称" prop="jobName" align="center" />
  103. <el-table-column label="任务类型" prop="jobType" align="center" />
  104. <el-table-column label="导出时间" prop="updateTime" align="center" />
  105. <el-table-column label="操作" align="center">
  106. <template slot-scope="scope">
  107. <el-button type="text" @click="getDownLoad(scope.row)" :disabled="scope.row.status === 1">下载</el-button>
  108. </template>
  109. </el-table-column>
  110. </el-table>
  111. <pagination v-show="dialogTotal > 0" :total="dialogTotal" :page.sync="form.pageNum" :limit.sync="form.pageSize"
  112. @pagination="getList" />
  113. </el-dialog>
  114. </div>
  115. </template>
  116. <script>
  117. import { list, dialogList, download, downLoadHistory } from '@/api/order/list'
  118. import { list as sceneList } from '@/api/operation/scene'
  119. import { payTypeMixin, systemMixin } from '@/mixin/index'
  120. export default {
  121. mixins: [payTypeMixin, systemMixin],
  122. data() {
  123. return {
  124. // 遮罩层
  125. loading: false,
  126. dialogLoading: false,
  127. // 表单
  128. form: {
  129. pageNum: 1,
  130. pageSize: 10,
  131. searchType: this.$route.query.searchType
  132. },
  133. // 列表
  134. tableData: [],
  135. // 总数据
  136. total: 0,
  137. // 弹窗
  138. dialogVisible: false,
  139. // 弹窗表单
  140. dialogForm: {
  141. pageNum: 1,
  142. pageSize: 10
  143. },
  144. // 弹窗列表
  145. dialogTable: [],
  146. // 历史数据
  147. dialogTotal: 0,
  148. // 支付方式
  149. payOptions: [{
  150. value: 1,
  151. label: '微信'
  152. }, {
  153. value: 2,
  154. label: '支付宝'
  155. }, {
  156. value: 3,
  157. label: '苹果支付'
  158. }, {
  159. value: 4,
  160. label: '猫币支付'
  161. }],
  162. // 支付状态
  163. statusOptions: [{
  164. value: 1,
  165. label: '待支付'
  166. }, {
  167. value: 2,
  168. label: '支付成功'
  169. }, {
  170. value: 3,
  171. label: '支付失败'
  172. }, {
  173. value: 4,
  174. label: '取消'
  175. }],
  176. // 栏目
  177. sceneOptions: [],
  178. // 生效状态
  179. flowOptions: [{
  180. value: 0,
  181. label: '已生效'
  182. }, {
  183. value: 1,
  184. label: '待生效'
  185. }, {
  186. value: 2,
  187. label: '已失效'
  188. }],
  189. platformIdOptions: [{
  190. value: 6,
  191. label: 'QQ音乐'
  192. }, {
  193. value: 9,
  194. label: '酷狗音乐'
  195. }, {
  196. value: 10,
  197. label: '爱听音乐'
  198. }]
  199. }
  200. },
  201. mounted() {
  202. this.getScene()
  203. this.getList()
  204. },
  205. methods: {
  206. // 列表
  207. getList() {
  208. this.loading = true
  209. list(this.form).then(res => {
  210. if (res.code === 0) {
  211. this.tableData = res.data.records
  212. this.total = res.data.total
  213. this.loading = false
  214. }
  215. })
  216. },
  217. // 搜索
  218. getSearch() {
  219. this.form.pageNum = 1
  220. this.getList()
  221. },
  222. // 重置
  223. getRefresh() {
  224. this.form = {
  225. pageNum: 1,
  226. pageSize: 10,
  227. searchType: this.$route.query.searchType
  228. }
  229. this.getList()
  230. },
  231. // 导出
  232. handleExport() {
  233. download(this.form).then(res => {
  234. if (res.code === 0) {
  235. this.$message.success(`${res.data}`)
  236. }
  237. })
  238. },
  239. // 弹窗
  240. getDialog() {
  241. this.dialogVisible = true
  242. this.getDialogList()
  243. },
  244. // 历史列表
  245. getDialogList() {
  246. this.dialogLoading = true
  247. dialogList(this.dialogForm).then(res => {
  248. if (res.code === 0) {
  249. this.dialogTable = res.data.records
  250. this.dialogTotal = res.data.total
  251. this.dialogLoading = false
  252. }
  253. })
  254. },
  255. // 历史下载
  256. getDownLoad(row) {
  257. this.$confirm(`是否下载${row.jobName}?`, '提示', {
  258. type: 'warning'
  259. }).then(() => {
  260. downLoadHistory(row.msgId).then(res => {
  261. if (res.code === 0) {
  262. this.$message.success('下载成功!')
  263. window.location.href = res.data
  264. this.getDialogList()
  265. }
  266. })
  267. }).catch(() => { })
  268. },
  269. // 栏目
  270. getScene() {
  271. sceneList().then(res => {
  272. if (res.code === 0) {
  273. res.data.map(i => {
  274. this.sceneOptions.push({
  275. value: i.id,
  276. label: i.name
  277. })
  278. })
  279. }
  280. })
  281. },
  282. // 字典翻译
  283. payTypeFormatter(row) {
  284. return this.selectDictLabel(this.payOptions, row.payType)
  285. },
  286. statusFormatter(row) {
  287. return this.selectDictLabel(this.statusOptions, row.status)
  288. },
  289. groupFormatter(row) {
  290. return this.selectDictLabel(this.sceneOptions, row.groupId)
  291. },
  292. chargingFormatter(row) {
  293. return this.selectDictLabel(this.payTypeOptions, row.charging)
  294. },
  295. platformFormatter(row) {
  296. return this.selectDictLabel(this.systemOptions, row.platform)
  297. },
  298. platformIdFormatter(row) {
  299. return this.selectDictLabel(this.platformIdOptions, row.platformId)
  300. },
  301. flowFormatter(row) {
  302. return this.selectDictLabel(this.flowOptions, row.flowStatus)
  303. },
  304. amountFormatter(row) {
  305. return row.amount.toFixed(2)
  306. }
  307. }
  308. }
  309. </script>
  310. <style lang="scss" scoped></style>