supplier-commission.php 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320
  1. <?php
  2. use common\helpers\ComponentHelper;
  3. ComponentHelper::loadComponentView('com-user-info');
  4. ComponentHelper::loadComponentView('com-list-page');
  5. ComponentHelper::loadComponentView('com-list-table');
  6. ?>
  7. <com-list-page :crumbs="crumbs" id="application">
  8. <com-list-table ref="table" :api="api" :search-list="searchList">
  9. <el-table-column prop="id" label="买家" align="center">
  10. <template slot-scope="scope">
  11. <com-user-info :user="scope.row.buyUser"></com-user-info>
  12. </template>
  13. </el-table-column>
  14. <el-table-column prop="buy_level_text" label="身份" align="center">
  15. <template slot-scope="scope">
  16. <el-tag size="small" type="info" v-if="scope.row.buy_level == 0">普通会员</el-tag>
  17. <el-tag size="small" v-else>{{ scope.row.buy_level_text }}</el-tag>
  18. </template>
  19. </el-table-column>
  20. <el-table-column prop="id" label="卖家" align="center">
  21. <template slot-scope="scope">
  22. <com-user-info :user="scope.row.sellerUser"></com-user-info>
  23. </template>
  24. </el-table-column>
  25. <el-table-column prop="seller_level_text" label="身份" align="center">
  26. <template slot-scope="scope">
  27. <el-tag size="small" type="info" v-if="scope.row.seller_level == 0">普通会员</el-tag>
  28. <el-tag size="small" v-else>{{ scope.row.seller_level_text }}</el-tag>
  29. </template>
  30. </el-table-column>
  31. <el-table-column label="利润" align="center">
  32. <template slot-scope="scope">
  33. ¥{{ scope.row.profit }}
  34. </template>
  35. </el-table-column>
  36. <el-table-column label="奖项" align="center">
  37. <template slot-scope="scope">
  38. <el-tag size="small">{{ scope.row.capital_type_text }}</el-tag>
  39. </template>
  40. </el-table-column>
  41. <el-table-column label="订单号" align="center" width="280">
  42. <template slot-scope="scope">
  43. 会员订单号:{{ scope.row.order_no }} <br>
  44. 供应商订单号:{{ scope.row.supplier_order_no }}
  45. </template>
  46. </el-table-column>
  47. <el-table-column label="货款金额" align="center">
  48. <template slot-scope="scope">
  49. ¥{{ scope.row.payment_amount }}
  50. </template>
  51. </el-table-column>
  52. <el-table-column label="订单状态" align="center">
  53. <template slot-scope="scope">
  54. <el-tag size="small">{{ scope.row.order.order_status_text }}</el-tag>
  55. </template>
  56. </el-table-column>
  57. <el-table-column prop="pay_time_text" label="收入时间" align="center"></el-table-column>
  58. <el-table-column label="操作" align="center">
  59. <template slot-scope="scope">
  60. <el-button size="mini" type="text" @click="clickListRedistributeCommission(scope.row.order_no)" v-if="scope.row.order.order_status != -4">订单纠错</el-button>
  61. </template>
  62. </el-table-column>
  63. <template slot="header-left">
  64. <el-button type="primary" size="mini" @click="exportData" :loading="btnLoad">导出全部</el-button>
  65. <el-button type="primary" size="mini" @click="deliveryTaskClick" :loading="btnLoad" :disabled="!isShowDeliveryTaskBtn">同步旧数据</el-button>
  66. <el-button type="primary" size="mini" @click="redistributeCommissionsDialog = true">订单纠错</el-button>
  67. <!--dialog-->
  68. <el-dialog
  69. title="订单纠错"
  70. :destroy-on-close="true"
  71. @close="hideRedistributeCommissionsDialog"
  72. :visible.sync="redistributeCommissionsDialog">
  73. <div class="table-search">
  74. <div class="search-input">
  75. <div class="search-input-item">
  76. <p class="search-input-item-title">订单号</p>
  77. <el-input size="mini" style="width: 200px;" clearable v-model="orderNo" placeholder="请输入订单号"></el-input>
  78. </div>
  79. </div>
  80. <div class="search-btn">
  81. <el-button type="primary" size="mini" @click="redistributeCommissionsSearch">搜索</el-button>
  82. </div>
  83. </div>
  84. <el-table
  85. :data="orderDetailsList"
  86. @selection-change="redistributeCommissionsSelectionChange"
  87. size="small">
  88. <el-table-column type="selection" width="55"></el-table-column>
  89. <el-table-column label="商品">
  90. <template slot-scope="scope">
  91. <div flex="cross:center">
  92. <div style="margin-right: 10px;">
  93. <el-image style="width: 50px; height: 50px;border-radius: 5px;"
  94. :src="scope.row.pic_url"></el-image>
  95. </div>
  96. <el-tooltip class="item" effect="dark" :content="scope.row.goods_name+''" placement="top">
  97. <span class="over2" style="text-align: left">
  98. {{scope.row.goods_name}}
  99. <br>
  100. ID:{{scope.row.goods_id}}
  101. </span>
  102. </el-tooltip>
  103. </div>
  104. </template>
  105. </el-table-column>
  106. <el-table-column property="num" label="商品数量"></el-table-column>
  107. </el-table>
  108. <p style="text-align: center; color: red;margin-top: 15px;"><i>注意:此操作不可回退,请谨慎操作!</i></p>
  109. <div slot="footer" class="dialog-footer">
  110. <el-button size="small" @click="hideRedistributeCommissionsDialog">取 消</el-button>
  111. <el-button size="small"
  112. type="primary"
  113. @click="redistributeCommissions"
  114. :loading="redistributeCommissionsLoading"
  115. :disabled="selectionOrderDetailsIds.length === 0">
  116. 确 定</el-button>
  117. </div>
  118. </el-dialog>
  119. </template>
  120. </com-list-table>
  121. </com-list-page>
  122. <script>
  123. const application = new Vue({
  124. el: '#application',
  125. data: function () {
  126. return {
  127. api: 'agent/default/supplier-commission',
  128. crumbs: [
  129. {
  130. title: '供应商收入',
  131. }
  132. ],
  133. exportList: [],
  134. btnLoad: false,
  135. isShowDeliveryTaskBtn: <?= $allowDeliveryTask ?>,
  136. redistributeCommissionsDialog: false,
  137. orderDetailsList: [],
  138. orderNo: '',
  139. selectionOrderDetailsIds: [],
  140. redistributeCommissionsLoading: false
  141. }
  142. },
  143. computed: {
  144. searchList() {
  145. return [
  146. {
  147. key: 'order_no',
  148. title: '会员订单号',
  149. type: 'text',
  150. },
  151. {
  152. key: 'buy_keyword',
  153. title: '买家ID/手机号',
  154. type: 'text',
  155. },
  156. {
  157. key: 'seller_keyword',
  158. title: '卖家ID/手机号',
  159. type: 'text',
  160. }
  161. ]
  162. }
  163. },
  164. methods: {
  165. exportData() {
  166. let searchParams = JSON.stringify(this.$refs['table'].searchParams) == '{}'
  167. ? {}
  168. : this.$refs['table'].searchParams
  169. let params = {
  170. order_no: searchParams.order_no,
  171. buy_keyword: searchParams.buy_keyword,
  172. seller_keyword: searchParams.seller_keyword,
  173. }
  174. request({
  175. params: {
  176. r: 'agent/default/supplier-commission-export'
  177. },
  178. data: {params},
  179. method: 'post',
  180. }).then(e => {
  181. if (e.data.code == 0) {
  182. this.$message.success(e.data.msg)
  183. } else {
  184. this.$message.error(e.data.msg)
  185. }
  186. this.btnLoad = false
  187. }).catch(e => {
  188. this.btnLoad = false
  189. this.$message.error('未知错误')
  190. })
  191. },
  192. deliveryTaskClick() {
  193. this.isShowDeliveryTaskBtn = false
  194. request({
  195. params: {
  196. r: 'agent/default/sync-old-data'
  197. },
  198. }).then(e => {
  199. if (e.data.code == 0) {
  200. this.$message.success(e.data.msg)
  201. } else {
  202. this.$message.error(e.data.msg)
  203. }
  204. }).catch(e => {
  205. this.$message.error('未知错误')
  206. })
  207. },
  208. /**
  209. * 确认重新分配
  210. */
  211. redistributeCommissions() {
  212. if (this.selectionOrderDetailsIds.length === 0) {
  213. this.$message.error('请选择订单')
  214. return
  215. }
  216. this.redistributeCommissionsLoading = true
  217. request({
  218. params: {
  219. r: 'agent/default/redistribute-commissions',
  220. },
  221. data: {
  222. order_details_ids: this.selectionOrderDetailsIds,
  223. },
  224. method: 'post',
  225. }).then(e => {
  226. if (e.data.code == 0) {
  227. this.redistributeCommissionsDialog = false
  228. this.$message.success('操作成功')
  229. this.$refs.table.getList()
  230. } else {
  231. this.$message.error(e.data.msg)
  232. }
  233. }).catch(e => {
  234. this.$message.error('未知错误')
  235. }).finally(e => {
  236. this.redistributeCommissionsLoading = false
  237. })
  238. },
  239. /**
  240. * 隐藏订单纠错弹窗
  241. */
  242. hideRedistributeCommissionsDialog() {
  243. this.redistributeCommissionsDialog = false
  244. this.orderNo = ''
  245. this.selectionOrderDetailsIds = []
  246. this.orderDetailsList = []
  247. },
  248. /**
  249. * 订单搜索
  250. */
  251. redistributeCommissionsSearch() {
  252. if (String(this.orderNo) === '') {
  253. this.$message.error('请填写订单号')
  254. return
  255. }
  256. request({
  257. params: {
  258. r: 'agent/default/get-order-details',
  259. order_no: this.orderNo,
  260. },
  261. }).then(e => {
  262. if (e.data.code == 0) {
  263. this.orderDetailsList = e.data.data
  264. } else {
  265. this.$message.error(e.data.msg)
  266. }
  267. }).catch(e => {
  268. this.$message.error('未知错误')
  269. })
  270. },
  271. /**
  272. * 订单选择
  273. */
  274. redistributeCommissionsSelectionChange(ids) {
  275. this.selectionOrderDetailsIds = ids.map(item => item.id)
  276. },
  277. /**
  278. * 点击列表的订单纠错
  279. */
  280. clickListRedistributeCommission(order_no) {
  281. this.orderNo = order_no
  282. this.redistributeCommissionsDialog = true
  283. this.redistributeCommissionsSearch()
  284. }
  285. }
  286. })
  287. </script>
  288. <style lang="scss" scoped>
  289. .table-search {
  290. display: flex;
  291. float: right;
  292. .search-input {
  293. display: flex;
  294. margin-right: 5px;
  295. .search-input-item {
  296. width: auto;
  297. display: flex;
  298. align-items: center;
  299. .search-input-item-title {
  300. margin-right: 5px;
  301. }
  302. }
  303. }
  304. .search-btn {
  305. }
  306. }
  307. </style>