wait_expend.vue 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279
  1. <template>
  2. <div v-if="jobData && packageData && hireData">
  3. <div class="header">云端托管:{{jobData.sumJob.totalAmount}}元,整包托管:{{packageData.sumPackage.totalAmount}}元,雇佣托管:{{hireData.sumHire.totalAmount || 0}}元</div>
  4. <el-tabs v-model="activeName" type="card">
  5. <el-tab-pane label="云端" name="job">
  6. <div class="tab-header">云端项目待支出总额{{jobData.sumJob.totalAmount}}元,共{{jobData.sumJob.totalNum}}笔</div>
  7. <div class="tab-content">
  8. <el-table :data="jobData.orders" border style="width:100%;" height="100%">
  9. <el-table-column prop="product_title" label="订单名称" width="300"/>
  10. <el-table-column prop="user_info.nickname" label="用户" width="150"/>
  11. <el-table-column prop="real_amount" label="实际金额" width="100"/>
  12. <el-table-column prop="real_amount" label="收支类型" width="100">
  13. <template slot-scope="scope">
  14. <span>{{parseInt(scope.row.real_amount)>=0?"收入":"支出"}}</span>
  15. </template>
  16. </el-table-column>
  17. <el-table-column prop="channel_name" label="支付方式" width="100"/>
  18. <el-table-column prop="order_state_name" label="订单状态" width="100"/>
  19. <el-table-column label="创建时间" width="100">
  20. <template slot-scope="scope">
  21. <span>{{formatDate(scope.row.created_at)}}</span>
  22. </template>
  23. </el-table-column>
  24. <el-table-column label="到账时间" width="100">
  25. <template slot-scope="scope">
  26. <span>{{formatDate(scope.row.pay_time)}}</span>
  27. </template>
  28. </el-table-column>
  29. <el-table-column label="订单编号" width="100">
  30. <template slot-scope="scope">
  31. <nuxt-link target="_blank" :to="{path:'/main/orders_detail?id='+scope.row.order_no}">{{scope.row.order_no}}</nuxt-link>
  32. </template>
  33. </el-table-column>
  34. <el-table-column prop="out_order_id" label="支付编号" width="100"/>
  35. <el-table-column prop="product_type_name" label="订单类型" width="100"/>
  36. <el-table-column prop="order_type_name" label="交易类型" width="100"/>
  37. <el-table-column label="关联项目" width="100">
  38. <template slot-scope="scope">
  39. <a :href="scope.row.related_project.url?scope.row.related_project.url:'#'" target="_blank">
  40. <span class="lblue" >{{scope.row.related_project.name?scope.row.related_project.name:"--"}}</span>
  41. </a>
  42. </template>
  43. </el-table-column>
  44. <el-table-column label="人工" width="100">
  45. <template slot-scope="scope">
  46. <span v-if="scope.row.operator_info.nickname">{{scope.row.operator_info.nickname}}</span>
  47. <span>({{scope.row.operator_uid}})</span>
  48. </template>
  49. </el-table-column>
  50. </el-table>
  51. </div>
  52. <el-pagination class="order-footer" background layout="prev, pager, next" :page-size="10" :total="Number(jobData.sumJob.totalNum)" @current-change="handleJobCurrentChange"/>
  53. </el-tab-pane>
  54. <el-tab-pane label="整包" name="package">
  55. <div class="tab-header">整包项目待支出总额{{packageData.sumPackage.totalAmount}}元,共{{packageData.sumPackage.totalNum}}笔</div>
  56. <div class="tab-content">
  57. <el-table :data="packageData.orders" border style="width:100%;" height="100%">
  58. <el-table-column prop="product_title" label="订单名称" width="300"/>
  59. <el-table-column prop="user_info.nickname" label="用户" width="150"/>
  60. <el-table-column prop="real_amount" label="实际金额" width="100"/>
  61. <el-table-column prop="real_amount" label="收支类型" width="100">
  62. <template slot-scope="scope">
  63. <span>{{parseInt(scope.row.real_amount)>=0?"收入":"支出"}}</span>
  64. </template>
  65. </el-table-column>
  66. <el-table-column prop="channel_name" label="支付方式" width="100"/>
  67. <el-table-column prop="order_state_name" label="订单状态" width="100"/>
  68. <el-table-column label="创建时间" width="100">
  69. <template slot-scope="scope">
  70. <span>{{formatDate(scope.row.created_at)}}</span>
  71. </template>
  72. </el-table-column>
  73. <el-table-column label="到账时间" width="100">
  74. <template slot-scope="scope">
  75. <span>{{formatDate(scope.row.pay_time)}}</span>
  76. </template>
  77. </el-table-column>
  78. <el-table-column label="订单编号" width="100">
  79. <template slot-scope="scope">
  80. <nuxt-link target="_blank" :to="{path:'/main/orders_detail?id='+scope.row.order_no}">{{scope.row.order_no}}</nuxt-link>
  81. </template>
  82. </el-table-column>
  83. <el-table-column prop="out_order_id" label="支付编号" width="100"/>
  84. <el-table-column prop="product_type_name" label="订单类型" width="100"/>
  85. <el-table-column prop="order_type_name" label="交易类型" width="100"/>
  86. <el-table-column label="关联项目" width="100">
  87. <template slot-scope="scope">
  88. <a :href="scope.row.related_project.url?scope.row.related_project.url:'#'" target="_blank">
  89. <span class="lblue" >{{scope.row.related_project.name?scope.row.related_project.name:"--"}}</span>
  90. </a>
  91. </template>
  92. </el-table-column>
  93. <el-table-column label="人工" width="100">
  94. <template slot-scope="scope">
  95. <span v-if="scope.row.operator_info.nickname">{{scope.row.operator_info.nickname}}</span>
  96. <span>({{scope.row.operator_uid}})</span>
  97. </template>
  98. </el-table-column>
  99. </el-table>
  100. </div>
  101. <el-pagination class="order-footer" background layout="prev, pager, next" :page-size="10" :total="Number(packageData.sumPackage.totalNum)" @current-change="handlePackageCurrentChange"/>
  102. </el-tab-pane>
  103. <el-tab-pane label="雇佣" name="hire">
  104. <div class="tab-header">整包项目待支出总额{{hireData.sumHire.totalAmount}}元,共{{hireData.sumHire.totalNum}}笔</div>
  105. <div class="tab-content">
  106. <el-table :data="hireData.orders" border style="width:100%;" height="100%">
  107. <el-table-column prop="product_title" label="订单名称" width="300"/>
  108. <el-table-column prop="user_info.nickname" label="用户" width="150"/>
  109. <el-table-column prop="real_amount" label="实际金额" width="100"/>
  110. <el-table-column prop="real_amount" label="收支类型" width="100">
  111. <template slot-scope="scope">
  112. <span>{{parseInt(scope.row.real_amount)>=0?"收入":"支出"}}</span>
  113. </template>
  114. </el-table-column>
  115. <el-table-column prop="channel_name" label="支付方式" width="100"/>
  116. <el-table-column prop="order_state_name" label="订单状态" width="100"/>
  117. <el-table-column label="创建时间" width="100">
  118. <template slot-scope="scope">
  119. <span>{{formatDate(scope.row.created_at)}}</span>
  120. </template>
  121. </el-table-column>
  122. <el-table-column label="到账时间" width="100">
  123. <template slot-scope="scope">
  124. <span>{{formatDate(scope.row.pay_time)}}</span>
  125. </template>
  126. </el-table-column>
  127. <el-table-column label="订单编号" width="100">
  128. <template slot-scope="scope">
  129. <nuxt-link target="_blank" :to="{path:'/main/orders_detail?id='+scope.row.order_no}">{{scope.row.order_no}}</nuxt-link>
  130. </template>
  131. </el-table-column>
  132. <el-table-column prop="out_order_id" label="支付编号" width="100"/>
  133. <el-table-column prop="product_type_name" label="订单类型" width="100"/>
  134. <el-table-column prop="order_type_name" label="交易类型" width="100"/>
  135. <el-table-column label="关联项目" width="100">
  136. <template slot-scope="scope">
  137. <a :href="scope.row.related_project.url?scope.row.related_project.url:'#'" target="_blank">
  138. <span class="lblue" >{{scope.row.related_project.name?scope.row.related_project.name:"--"}}</span>
  139. </a>
  140. </template>
  141. </el-table-column>
  142. <el-table-column label="人工" width="100">
  143. <template slot-scope="scope">
  144. <span v-if="scope.row.operator_info.nickname">{{scope.row.operator_info.nickname}}</span>
  145. <span>({{scope.row.operator_uid}})</span>
  146. </template>
  147. </el-table-column>
  148. </el-table>
  149. </div>
  150. <el-pagination class="order-footer" background layout="prev, pager, next" :page-size="10" :total="Number(hireData.sumHire.totalNum)" @current-change="handleHireCurrentChange"/>
  151. </el-tab-pane>
  152. </el-tabs>
  153. </div>
  154. </template>
  155. <script>
  156. export default {
  157. data() {
  158. return {
  159. activeName: 'job',
  160. jobPage: 1,
  161. jobData: '',
  162. packagePage: 1,
  163. packageData: '',
  164. hirePage: 1,
  165. hireData: '',
  166. }
  167. },
  168. mounted() {
  169. this.activeName = this.$route.query.activeName || 'job'
  170. this.getJobOrders()
  171. this.getPackageOrders()
  172. this.getHireOrders()
  173. },
  174. methods: {
  175. async getJobOrders() {
  176. const data = {
  177. page: this.jobPage,
  178. pageSize: 10,
  179. productType: 9
  180. }
  181. let res = await this.$post("/api/admin/order/getWaitExpenseOrders", data)
  182. if (res) {
  183. this.jobData = res.data
  184. // console.log(this.jobData)
  185. }
  186. },
  187. async getPackageOrders() {
  188. const data = {
  189. page: this.packagePage,
  190. pageSize: 10,
  191. productType: 2
  192. }
  193. let res = await this.$post("/api/admin/order/getWaitExpenseOrders", data)
  194. if (res) {
  195. this.packageData = res.data
  196. // console.log(this.packageData)
  197. }
  198. },
  199. async getHireOrders() {
  200. const data = {
  201. page: this.hirePage,
  202. pageSize: 10,
  203. productType: 4
  204. }
  205. let res = await this.$post("/api/admin/order/getWaitExpenseOrders", data)
  206. if (res) {
  207. this.hireData = res.data
  208. // console.log(this.hireData)
  209. }
  210. },
  211. handleJobCurrentChange(val) {
  212. this.jobPage = val
  213. this.getJobOrders()
  214. },
  215. handlePackageCurrentChange(val) {
  216. this.packagePage = val
  217. this.getPackageOrders()
  218. },
  219. handleHireCurrentChange(val) {
  220. this.hirePage = val
  221. this.getHireOrders()
  222. },
  223. formatDate(time) {
  224. var now = new Date(time * 1000);
  225. var year = now.getFullYear();
  226. var month = now.getMonth() + 1;
  227. var date = now.getDate();
  228. var hour = now.getHours();
  229. var minute = now.getMinutes();
  230. var second = now.getSeconds();
  231. if (hour < 10) {
  232. hour = "0" + hour;
  233. }
  234. if (minute < 10) {
  235. minute = "0" + minute;
  236. }
  237. if (second < 10) {
  238. second = "0" + second;
  239. }
  240. return (
  241. year +
  242. "-" +
  243. month +
  244. "-" +
  245. date +
  246. " " +
  247. hour +
  248. ":" +
  249. minute +
  250. ":" +
  251. second
  252. );
  253. },
  254. }
  255. }
  256. </script>
  257. <style scoped>
  258. .header {
  259. margin-top: 20px;
  260. margin-bottom: 30px;
  261. }
  262. .tab-header {
  263. margin-bottom: 10px;
  264. }
  265. .tab-content {
  266. white-space: nowrap;
  267. overflow-x: scroll;
  268. height: calc(100vh - 300px);
  269. }
  270. .order-footer {
  271. margin-top: 10px;
  272. }
  273. </style>