Forráskód Böngészése

结算和订单等

pansl 1 éve
szülő
commit
1a01fba73a
22 módosított fájl, 583 hozzáadás és 304 törlés
  1. 2 2
      src/views/ordersManage/index.vue
  2. 13 12
      src/views/ordersManage/tabs/rechargeList/excelTitle.ts
  3. 77 0
      src/views/ordersManage/tabs/rechargeList/form/create.vue
  4. 40 47
      src/views/ordersManage/tabs/rechargeList/index.vue
  5. 110 14
      src/views/ordersManage/tabs/refundList/excelTitle.ts
  6. 47 54
      src/views/ordersManage/tabs/refundList/index.vue
  7. 4 4
      src/views/settleManage/financialControl/index.vue
  8. 121 5
      src/views/settleManage/financialControl/tabs/rechargeSettle/excelTitle.ts
  9. 17 41
      src/views/settleManage/financialControl/tabs/rechargeSettle/form/create.vue
  10. 76 24
      src/views/settleManage/financialControl/tabs/rechargeSettle/index.vue
  11. 36 34
      src/views/settleManage/financialControl/tabs/rechargeSettle/withdrawDetail/index.vue
  12. 5 8
      src/views/settleManage/financialControl/tabs/rechargeSettle/withdrawDetail/tables/settleInfo/excelTitle.ts
  13. 1 0
      src/views/settleManage/financialControl/tabs/rechargeSettle/withdrawDetail/tables/settleInfo/index.vue
  14. 3 3
      src/views/settleManage/paymentAccountInfo/index.vue
  15. 1 1
      src/views/settleManage/paymentAccountInfo/tabs/paymentInfo/index.vue
  16. 3 3
      src/views/settleManage/settlementCenter/index.vue
  17. 6 5
      src/views/settleManage/settlementCenter/tabs/rechargeSettle/index.vue
  18. 5 2
      src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/index.vue
  19. 0 16
      src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/tabs/rechargeList/excelTitle.ts
  20. 7 6
      src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/tabs/rechargeList/index.vue
  21. 0 16
      src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/tabs/refundList/excelTitle.ts
  22. 9 7
      src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/tabs/refundList/index.vue

+ 2 - 2
src/views/ordersManage/index.vue

@@ -3,10 +3,10 @@
     <el-card shadow="always" :body-style="{ padding: '20px' }">
       <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handChange">
         <el-tab-pane label="充值订单" name="recharge">
-          <rechargeList></rechargeList>
+          <rechargeList v-if="activeName == 'recharge'"></rechargeList>
         </el-tab-pane>
         <el-tab-pane label="退款订单" name="refund">
-          <refundList></refundList>
+          <refundList v-if="activeName == 'refund'"></refundList>
         </el-tab-pane>
       </el-tabs>
     </el-card>

+ 13 - 12
src/views/ordersManage/tabs/rechargeList/excelTitle.ts

@@ -1,16 +1,17 @@
 // 导出中文/字段
 export const titleObj = {
-  所属账户ID: 'advertiser_id',
-  所属账户: 'advertiser_name',
-  订单号: 'order_no',
+  商户名称: 'company_name',
+  商户ID: 'puser_id',
+  优化师: 'username',
+  小程序: 'play_name',
   用户ID: 'uid',
-  注册IP: 'user_ranse_ip',
-  注册时间: 'user_ranse_start_at',
-  充值时间: 'order_created_at',
-  充值金额: 'order_price',
-  是否回传: 'filter_type_str',
-  备注: 'filter_reason',
-  回传百分比: 'current_rate',
-  回传配置百分比: 'config_rate',
-  广告计划ID: 'adv_promotion_id'
+  订单号: 'trade_no',
+  订单时间: 'created_at',
+  染色注册时间: 'ranse_created_at',
+  累计充值次数: 'total_count',
+  充值金额: 'price',
+  推广名称: 'promotion_title',
+  充值类型: 'tip_text',
+  支付方式: 'pay_name',
+  订单状态: 'status_txt'
 };

+ 77 - 0
src/views/ordersManage/tabs/rechargeList/form/create.vue

@@ -0,0 +1,77 @@
+<template>
+  <el-form :model="formData" label-width="120px" ref="ruleForm" :rules="rules" v-loading="loading" class="pr-4">
+    <div class="flex flex-row justify-between">
+      <div class="w-full">
+        <el-form-item label="可退款提现金额" prop="name">
+          <el-input v-model="props.primary.price" disabled placeholder="请输入商户名称" />
+        </el-form-item>
+        <el-form-item label="申请退款金额" prop="price">
+          <div class="items-center w-full">
+            <el-input style="width:200px;margin:0 5px;" v-model="formData.price" placeholder="请输入金额">
+              <template #append>元</template>
+            </el-input>
+          </div>
+        </el-form-item>
+      </div>
+    </div>
+    <div class="flex justify-end">
+      <el-button type="primary" @click="submitForm(ruleForm)">{{ $t('system.confirm') }}</el-button>
+    </div>
+  </el-form>
+</template>
+
+<script lang="ts" setup>
+import { useCreate } from '@/hook/curd/useCreate';
+import { useShow } from '@/hook/curd/useShow';
+import type { FormInstance, FormRules } from 'element-plus'
+import { orderRefundApply } from '@/api/orders/index'
+const ruleForm = ref<FormInstance>()
+import { onMounted, ref } from 'vue';
+const props = defineProps({
+  primary: Object,
+});
+const formData = ref({})
+const rules = reactive({
+  price: [
+    {
+      required: true,
+      message: '请输入金额',
+      trigger: 'blur'
+    },
+    { pattern: /^\d+(\.\d{1,2})?$/, message: '金额最多只能有两位小数', trigger: 'blur' },
+    { pattern: /^(?!0\d+)\d+(\.\d+)?$/, message: '请输入有效的金额', trigger: 'blur' },
+  ],
+});
+const loading = ref(false)
+const applyBank = ref([])
+
+const submitForm = (formEl: FormInstance | undefined) => {
+  console.log(formData.value, 'formData.valueformData.value');
+  if (!formEl) return;
+  formEl
+    .validate(valid => {
+      if (valid) {
+        orderRefundApply(formData.value).then(res => {
+          ElMessage.success(res.message)
+          emit('close')
+          loading.value = false;
+        })
+      } else {
+        loading.value = false;
+      }
+    })
+    .then(() => { });
+}
+
+if (props.primary) {
+  formData.value.order_id = props.primary.id
+  console.log(props.primary, 'props.primaryprops.primary');
+}
+
+const emit = defineEmits(['close']);
+onMounted(() => {
+
+});
+</script>
+
+<style lang="scss" scoped></style>

+ 40 - 47
src/views/ordersManage/tabs/rechargeList/index.vue

@@ -21,14 +21,13 @@
         <!-- :remote-method="remoteMethod($event, 'channelPromotions')"不支持这种写法自定义参数 -->
         <el-form-item label="推广名称" prop="promotion_id">
           <el-select v-model="query.promotion_id" filterable remote clearable
-            @change="selectChange($event, 'channelPromotions')"
             :remote-method="(query) => { remoteMethod(query, 'channelPromotions') }" placeholder="选择推广名称">
             <el-option v-for="item in channelPromotions" :key="item.promotion_id" :label="item.name"
               :value="item.promotion_id" />
           </el-select>
         </el-form-item>
         <el-form-item label="小程序" v-if="!query.promotion_id" prop="miniprogram_id">
-          <el-select v-model="query.miniprogram_id" filterable remote @change="selectChange($event, 'channelMiniprogram')"
+          <el-select v-model="query.miniprogram_id" filterable remote
             :remote-method="(query) => { remoteMethod(query, 'channelMiniprogram') }" clearable placeholder="选择小程序">
             <el-option v-for="item in channelMiniprogram" :key="item.miniprogram_id" :label="item.name"
               :value="item.miniprogram_id" />
@@ -36,7 +35,6 @@
         </el-form-item>
         <el-form-item label="优化师" v-if="!query.promotion_id" prop="user_id">
           <el-select v-model="query.user_id" filterable remote clearable
-            @change="selectChange($event, 'channelPromotionsUsers')"
             :remote-method="(query) => { remoteMethod(query, 'channelPromotionsUsers') }" placeholder="选择优化师">
             <el-option v-for="item in promotionsUsersList" :key="item.user_id" :label="item.name" :value="item.user_id" />
           </el-select>
@@ -99,13 +97,20 @@
           <template #default="scope">
             <el-button link type="primary" size="small" @click="openType('userDetailVisible', scope.row)">用户详情</el-button>
             <br />
+            <el-button v-if="scope.row.status == 'PAID'" link type="primary" size="small"
+              v-action="'orderRefund.RefundOrder.applyRefund'"
+              @click="openType('applyVisible', scope.row)">申请退款</el-button>
+            <br />
           </template>
         </el-table-column>
       </el-table>
       <Paginate />
     </div>
     <Dialog v-model="userDetailVisible" width="50%" title="用户详情" destroy-on-close>
-      <userDetail @close="closeUserDetail" :primary="userDetailData"></userDetail>
+      <userDetail @close="closeType('applyVisible')" :primary="userDetailData"></userDetail>
+    </Dialog>
+    <Dialog v-model="applyVisible" width="50%" title="申请退款" destroy-on-close>
+      <create @close="closeType('applyVisible')" :primary="applyData"></create>
     </Dialog>
   </div>
 </template>
@@ -117,6 +122,7 @@ import { InfoFilled } from '@element-plus/icons-vue';
 import { useGetList } from '@/hook/curd/useGetList';
 import { titleObj } from "./excelTitle"
 import userDetail from './userDetail/index.vue'
+import create from './form/create.vue'
 import {
   channelOrderList,
   channelMiniprogramUseList,
@@ -125,8 +131,6 @@ import {
   channelOrderStatus,
   channelOrderType,
 } from '@/api/orders/index'
-
-import { callbackJuliangAccountList, callbackJuliangAccountLogCallbackAgain } from '@/api/backConfig/index'
 import moment from 'moment';
 const start_date = moment().startOf('month').format('YYYY-MM-DD')
 const end_date = moment().endOf('month').format('YYYY-MM-DD')
@@ -136,7 +140,9 @@ const router = useRouter()
 const route = useRoute()
 const { data, query, search, reset, loading } = useGetList(api);
 const userDetailVisible = ref(false)
+const applyVisible = ref(false)
 const userDetailData = ref({})
+const applyData = ref({})
 const current = ref({})
 const promotionsUsersList = ref([])
 const channelMiniprogram = ref([])
@@ -157,8 +163,6 @@ const colorType = (data: object) => {
   }
 }
 
-const closeUserDetail = () => { }
-
 const payTimeChange = (e: object) => {
   console.log(e, query.value.payTime, 'timeChangetimeChangetimeChange');
   if (query.value.payTime) {
@@ -182,43 +186,18 @@ const orderTimeChange = (e: object) => {
   }
 }
 
-const selectChange = (e: object, type: string,) => {
-  console.log(e, 'queryquery', type);
-  if (e) {
-    switch (type) {
-      case 'channelPromotionsUsers':
-        query.value.miniprogram_id = ''
-        query.value.promotion_id = ''
-        initRemoteOption('channelPromotions', { name: '', user_id: e })
-        initRemoteOption('channelMiniprogram', { name: '', user_id: e })
-        break;
-      case 'channelMiniprogram':
-        query.value.user_id = ''
-        query.value.promotion_id = ''
-        initRemoteOption('channelMiniprogram', { name: '' })
-        initRemoteOption('channelPromotionsUsers', { name: '', miniprogram_id: e })
-        initRemoteOption('channelPromotions', { name: '', miniprogram_id: e })
-        break;
-      case 'channelPromotions':
-        // initRemoteOption('channelPromotions', { name: query })
-        break;
-    }
-  }
-}
 const remoteMethod = (query: string, type: string,) => {
   console.log(query, 'queryquery', type);
-  if (query) {
-    switch (type) {
-      case 'channelPromotionsUsers':
-        initRemoteOption('channelPromotionsUsers', { name: query })
-        break;
-      case 'channelMiniprogram':
-        initRemoteOption('channelMiniprogram', { name: query })
-        break;
-      case 'channelPromotions':
-        initRemoteOption('channelPromotions', { name: query })
-        break;
-    }
+  switch (type) {
+    case 'channelPromotionsUsers':
+      initRemoteOption('channelPromotionsUsers', { name: query })
+      break;
+    case 'channelMiniprogram':
+      initRemoteOption('channelMiniprogram', { name: query })
+      break;
+    case 'channelPromotions':
+      initRemoteOption('channelPromotions', { name: query })
+      break;
   }
 }
 
@@ -263,9 +242,23 @@ const openType = (type: string, data: object) => {
       userDetailVisible.value = true
       userDetailData.value = data
       break;
-    case 'backConfigVisible':
+    case 'applyVisible':
+      applyVisible.value = true
+      applyData.value = data
+      break;
+  }
+}
+
+const closeType = (type: string) => {
+  switch (type) {
+    case 'userDetailVisible':
+      userDetailVisible.value = false
+      break;
+    case 'applyVisible':
+      applyVisible.value = false
       break;
   }
+  search()
 }
 const tableData = computed(() => data.value?.data);
 
@@ -278,9 +271,9 @@ onMounted(() => {
   // query.value.payTime = [start_date, end_date];
   // query.value.pay_end_at_start = start_date
   // query.value.pay_end_at_end = end_date
-  query.value.orderTime = [start_date, end_date];
-  query.value.created_at_start = start_date
-  query.value.created_at_end = end_date
+  // query.value.orderTime = [start_date, end_date];
+  // query.value.created_at_start = start_date
+  // query.value.created_at_end = end_date
   search();
 });
 </script>

+ 110 - 14
src/views/ordersManage/tabs/refundList/excelTitle.ts

@@ -1,16 +1,112 @@
 // 导出中文/字段
-export const titleObj = {
-  所属账户ID: 'advertiser_id',
-  所属账户: 'advertiser_name',
-  订单号: 'order_no',
-  用户ID: 'uid',
-  注册IP: 'user_ranse_ip',
-  注册时间: 'user_ranse_start_at',
-  充值时间: 'order_created_at',
-  充值金额: 'order_price',
-  是否回传: 'filter_type_str',
-  备注: 'filter_reason',
-  回传百分比: 'current_rate',
-  回传配置百分比: 'config_rate',
-  广告计划ID: 'adv_promotion_id'
+export default {
+  0: {
+    商户名称: 'company_name',
+    商户ID: 'puser_id',
+    优化师: 'username',
+    小程序: 'xcx_name',
+    用户ID: 'uid',
+    订单号: 'trade_no',
+    订单时间: 'order_created_at',
+    染色注册时间: 'ranse_created_at',
+    申退金额: 'refund_price',
+    充值金额: 'order_price',
+    推广名称: 'promotion_name',
+    档位类型: 'tip_text',
+    支付方式: 'pay_name',
+    订单状态: 'status_txt',
+    平台审核: 'pt_verify_status_text',
+    平台审核备注: 'pt_verify_remark',
+    商户审核: 'sh_verify_status_text',
+    商户审核备注: 'sh_verify_remark'
+  },
+  1: {
+    商户名称: 'company_name',
+    商户ID: 'puser_id',
+    优化师: 'username',
+    小程序: 'xcx_name',
+    用户ID: 'uid',
+    订单号: 'trade_no',
+    订单时间: 'order_created_at',
+    染色注册时间: 'ranse_created_at',
+    申退金额: 'refund_price',
+    充值金额: 'order_price',
+    推广名称: 'promotion_name',
+    档位类型: 'tip_text',
+    支付方式: 'pay_name',
+    退款时间: 'pay_at',
+    退款单号: 'refund_no',
+    订单状态: 'status_txt'
+  }
 };
+
+/**
+ * 
+ *   <el-table-column prop="company_name" label="商户名称" min-width="200px">
+          <template #default="scope">
+            <div>{{ scope.row.company_name }}</div>
+            <div>ID:{{ scope.row.puser_id }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="username" label="优化师" show-overflow-tooltip min-width="200px">
+        </el-table-column>
+        <el-table-column prop="play_name" show-overflow-tooltip label="小程序" min-width="200px">
+        </el-table-column>
+        <el-table-column prop="uid" label="用户ID" show-overflow-tooltip>
+        </el-table-column>
+        <el-table-column prop="trade_no" label="订单号" show-overflow-tooltip min-width="200px">
+        </el-table-column>
+        <el-table-column prop="created_at" label="订单时间" show-overflow-tooltip min-width="200px" />
+        <el-table-column prop="ranse_created_at" label="染色注册时间" show-overflow-tooltip min-width="200px" />
+        <el-table-column prop="refund_price" label="申退金额" show-overflow-tooltip min-width="200px" />
+        <el-table-column prop="order_price" label="充值金额" show-overflow-tooltip>
+        </el-table-column>
+        <el-table-column prop="promotion_name" label="推广名称" show-overflow-tooltip min-width="200px">
+        </el-table-column>
+        <el-table-column prop="tip_text" label="档位类型" show-overflow-tooltip min-width="150px">
+        </el-table-column>
+        <el-table-column prop="pay_name" label="支付方式" show-overflow-tooltip min-width="150px">
+        </el-table-column>
+        <el-table-column prop="pay_at" label="退款时间" v-if="query.refund_status == 1" show-overflow-tooltip
+          min-width="180px">
+        </el-table-column>
+        <el-table-column prop="refund_no" label="退款单号" v-if="query.refund_status == 1" show-overflow-tooltip
+          min-width="150px">
+        </el-table-column>
+        <el-table-column v-if="query.refund_status == 1" prop="pay_name" label="订单状态" show-overflow-tooltip
+          min-width="150px">
+          <template #default="scope">
+            <div class="wrapper">
+              <span class="text-lg font-bold content">
+                <el-text class="mx-1" type="info">{{ scope.row.status_text }}</el-text>
+              </span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="query.refund_status == 0" prop="pt_verify_status_text" label="平台审核" show-overflow-tooltip
+          min-width="150px">
+          <template #default="scope">
+            <div class="wrapper">
+              <span class="text-lg font-bold content">
+                <el-text class="mx-1" :type="colorType(scope.row)">{{ scope.row.pt_verify_status_text }}</el-text>
+              </span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="query.refund_status == 0" prop="pt_verify_remark" label="平台审核备注" show-overflow-tooltip
+          min-width="150px">
+        </el-table-column>
+        <el-table-column v-if="query.refund_status == 0" prop="sh_verify_status_text" label="商户审核" show-overflow-tooltip
+          min-width="150px">
+          <template #default="scope">
+            <div class="wrapper">
+              <span class="text-lg font-bold content">
+                <el-text class="mx-1" :type="colorType(scope.row)">{{ scope.row.sh_verify_status_text }}</el-text>
+              </span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="query.refund_status == 0" prop="sh_verify_remark" label="商户审核备注" show-overflow-tooltip
+          min-width="150px">
+        </el-table-column>
+ */

+ 47 - 54
src/views/ordersManage/tabs/refundList/index.vue

@@ -21,7 +21,6 @@
           </el-form-item>
           <el-form-item label="推广名称" prop="promotion_id">
             <el-select v-model="query.promotion_id" filterable remote clearable
-              @change="selectChange($event, 'channelPromotions')"
               :remote-method="(query) => { remoteMethod(query, 'channelPromotions') }" placeholder="选择推广名称">
               <el-option v-for="item in channelPromotions" :key="item.promotion_id" :label="item.name"
                 :value="item.promotion_id" />
@@ -29,7 +28,6 @@
           </el-form-item>
           <el-form-item label="小程序" v-if="!query.promotion_id" prop="miniprogram_id">
             <el-select v-model="query.miniprogram_id" filterable remote
-              @change="selectChange($event, 'channelMiniprogram')"
               :remote-method="(query) => { remoteMethod(query, 'channelMiniprogram') }" clearable placeholder="选择小程序">
               <el-option v-for="item in channelMiniprogram" :key="item.miniprogram_id" :label="item.name"
                 :value="item.miniprogram_id" />
@@ -37,7 +35,6 @@
           </el-form-item>
           <el-form-item label="优化师" v-if="!query.promotion_id" prop="user_id">
             <el-select v-model="query.user_id" filterable remote clearable
-              @change="selectChange($event, 'channelPromotionsUsers')"
               :remote-method="(query) => { remoteMethod(query, 'channelPromotionsUsers') }" placeholder="选择优化师">
               <el-option v-for="item in promotionsUsersList" :key="item.user_id" :label="item.name"
                 :value="item.user_id" />
@@ -50,8 +47,8 @@
           </el-form-item>
         </template>
         <template v-slot:extra_button>
-          <exportExcel api="channel/order_list" sheet_name="订单列表" :title_obj="titleObj"
-            :extro_params="{ is_export: true, ...query }">
+          <exportExcel api="channel/order_list" sheet_name="订单列表" :title_obj="titleObj[query.refund_status]"
+            :extro_params="{ is_all: true, ...query }">
           </exportExcel>
         </template>
       </Search>
@@ -66,24 +63,41 @@
         </el-table-column>
         <el-table-column prop="username" label="优化师" show-overflow-tooltip min-width="200px">
         </el-table-column>
-        <el-table-column prop="play_name" show-overflow-tooltip label="小程序" min-width="200px">
+        <el-table-column prop="xcx_name" show-overflow-tooltip label="小程序" min-width="200px">
         </el-table-column>
         <el-table-column prop="uid" label="用户ID" show-overflow-tooltip>
         </el-table-column>
         <el-table-column prop="trade_no" label="订单号" show-overflow-tooltip min-width="200px">
         </el-table-column>
-        <el-table-column prop="created_at" label="订单时间" show-overflow-tooltip min-width="200px" />
+        <el-table-column prop="order_created_at" label="订单时间" show-overflow-tooltip min-width="200px" />
         <el-table-column prop="ranse_created_at" label="染色注册时间" show-overflow-tooltip min-width="200px" />
         <el-table-column prop="refund_price" label="申退金额" show-overflow-tooltip min-width="200px" />
-        <el-table-column prop="price" label="充值金额" show-overflow-tooltip>
+        <el-table-column prop="order_price" label="充值金额" show-overflow-tooltip>
         </el-table-column>
-        <el-table-column prop="promotion_title" label="推广名称" show-overflow-tooltip min-width="200px">
+        <el-table-column prop="promotion_name" label="推广名称" show-overflow-tooltip min-width="200px">
         </el-table-column>
         <el-table-column prop="tip_text" label="档位类型" show-overflow-tooltip min-width="150px">
         </el-table-column>
         <el-table-column prop="pay_name" label="支付方式" show-overflow-tooltip min-width="150px">
         </el-table-column>
-        <el-table-column prop="status_txt" label="平台审核" show-overflow-tooltip min-width="150px">
+        <el-table-column prop="pay_at" label="退款时间" v-if="query.refund_status == 1" show-overflow-tooltip
+          min-width="180px">
+        </el-table-column>
+        <el-table-column prop="refund_no" label="退款单号" v-if="query.refund_status == 1" show-overflow-tooltip
+          min-width="150px">
+        </el-table-column>
+        <el-table-column v-if="query.refund_status == 1" prop="pay_name" label="订单状态" show-overflow-tooltip
+          min-width="150px">
+          <template #default="scope">
+            <div class="wrapper">
+              <span class="text-lg font-bold content">
+                <el-text class="mx-1" type="info">{{ scope.row.status_text }}</el-text>
+              </span>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="query.refund_status == 0" prop="pt_verify_status_text" label="平台审核" show-overflow-tooltip
+          min-width="150px">
           <template #default="scope">
             <div class="wrapper">
               <span class="text-lg font-bold content">
@@ -92,9 +106,11 @@
             </div>
           </template>
         </el-table-column>
-        <el-table-column prop="pt_verify_remark" label="平台审核备注" show-overflow-tooltip min-width="150px">
+        <el-table-column v-if="query.refund_status == 0" prop="pt_verify_remark" label="平台审核备注" show-overflow-tooltip
+          min-width="150px">
         </el-table-column>
-        <el-table-column prop="status_txt" label="商户审核" show-overflow-tooltip min-width="150px">
+        <el-table-column v-if="query.refund_status == 0" prop="sh_verify_status_text" label="商户审核" show-overflow-tooltip
+          min-width="150px">
           <template #default="scope">
             <div class="wrapper">
               <span class="text-lg font-bold content">
@@ -103,17 +119,20 @@
             </div>
           </template>
         </el-table-column>
-        <el-table-column prop="sh_verify_remark" label="商户审核备注" show-overflow-tooltip min-width="150px">
+        <el-table-column v-if="query.refund_status == 0" prop="sh_verify_remark" label="商户审核备注" show-overflow-tooltip
+          min-width="150px">
         </el-table-column>
-        <el-table-column label="操作">
+        <el-table-column v-if="query.refund_status == 0" label="操作">
           <template #default="scope">
-            <el-button link type="primary" size="small"
+            <el-button link type="primary" size="small" v-action="'orderRefund.RefundOrder.companyVerify'"
               @click="openType('noapprovedVisible', scope.row, '平台审核')">平台审核</el-button>
             <br />
-            <el-button link type="primary" size="small"
+            <el-button link type="primary" size="small" v-action="'orderRefund.RefundOrder.platformVerify'"
               @click="openType('noapprovedVisible', scope.row, '商户审核')">商户审核</el-button>
             <br />
-            <el-button link type="primary" size="small" @click="openType('approvedVisible', scope.row)">确认打款</el-button>
+            <el-button :disabled="!scope.row.can_pay" link type="primary" size="small"
+              v-action="'orderRefund.RefundOrder.payToUser'"
+              @click="openType('approvedVisible', scope.row)">确认打款</el-button>
             <br />
           </template>
         </el-table-column>
@@ -148,7 +167,7 @@ import { shortcuts } from '@/utils/shortcuts'
 import { useRouter, useRoute } from 'vue-router'
 import { InfoFilled } from '@element-plus/icons-vue';
 import { useGetList } from '@/hook/curd/useGetList';
-import { titleObj } from "./excelTitle"
+import titleObj from "./excelTitle"
 import {
   channelOrderList,
   channelMiniprogramUseList,
@@ -257,44 +276,18 @@ const orderTimeChange = (e: object) => {
     delete query.value.created_at_end
   }
 }
-
-const selectChange = (e: object, type: string,) => {
-  console.log(e, 'queryquery', type);
-  if (e) {
-    switch (type) {
-      case 'channelPromotionsUsers':
-        query.value.miniprogram_id = ''
-        query.value.promotion_id = ''
-        initRemoteOption('channelPromotions', { name: '', user_id: e })
-        initRemoteOption('channelMiniprogram', { name: '', user_id: e })
-        break;
-      case 'channelMiniprogram':
-        query.value.user_id = ''
-        query.value.promotion_id = ''
-        initRemoteOption('channelMiniprogram', { name: '' })
-        initRemoteOption('channelPromotionsUsers', { name: '', miniprogram_id: e })
-        initRemoteOption('channelPromotions', { name: '', miniprogram_id: e })
-        break;
-      case 'channelPromotions':
-        // initRemoteOption('channelPromotions', { name: query })
-        break;
-    }
-  }
-}
 const remoteMethod = (query: string, type: string,) => {
   console.log(query, 'queryquery', type);
-  if (query) {
-    switch (type) {
-      case 'channelPromotionsUsers':
-        initRemoteOption('channelPromotionsUsers', { name: query })
-        break;
-      case 'channelMiniprogram':
-        initRemoteOption('channelMiniprogram', { name: query })
-        break;
-      case 'channelPromotions':
-        initRemoteOption('channelPromotions', { name: query })
-        break;
-    }
+  switch (type) {
+    case 'channelPromotionsUsers':
+      initRemoteOption('channelPromotionsUsers', { name: query })
+      break;
+    case 'channelMiniprogram':
+      initRemoteOption('channelMiniprogram', { name: query })
+      break;
+    case 'channelPromotions':
+      initRemoteOption('channelPromotions', { name: query })
+      break;
   }
 }
 

+ 4 - 4
src/views/settleManage/financialControl/index.vue

@@ -2,8 +2,8 @@
   <div>
     <el-card shadow="always" :body-style="{ padding: '20px' }">
       <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handChange">
-        <el-tab-pane label="对公审核" name="recharge">
-          <rechargeSettle></rechargeSettle>
+        <el-tab-pane label="对公打款" name="publicremit">
+          <rechargeSettle v-if="activeName == 'publicremit'"></rechargeSettle>
         </el-tab-pane>
       </el-tabs>
     </el-card>
@@ -19,9 +19,9 @@ const route = useRoute()
 const handChange = (tab: TabsPaneContext, event: Event) => {
   activeName.value = tab
 }
-const activeName = ref('recharge')
+const activeName = ref('publicremit')
 onMounted(() => {
-  activeName.value = route.query.tab || 'recharge'
+  activeName.value = route.query.tab || 'publicremit'
 });
 </script>
 

+ 121 - 5
src/views/settleManage/financialControl/tabs/rechargeSettle/excelTitle.ts

@@ -1,8 +1,124 @@
 // 导出中文/字段
 export const titleObj = {
-  时间: 'jiesuan_date',
-  日充值总额: 'charge_money',
-  当日退款: 'tuikuan_money',
-  分成比例: 'share_rate',
-  日结算总额: 'jiesuan_money'
+  0: {
+    商户名称: 'owner_name',
+    商户ID: 'company_uid',
+    所属商务: 'business_str',
+    提现金额: 'tixian_money',
+    打款金额: 'tixian_money',
+    提现时间: 'created_at',
+    提现账户: 'card_no',
+    状态: 'status_str',
+    收款人姓名: 'name_of_payee',
+    备注: 'remark'
+  },
+  1: {
+    商户名称: 'owner_name',
+    商户ID: 'company_uid',
+    所属商务: 'business_str',
+    提现金额: 'tixian_money',
+    打款金额: 'tixian_money',
+    提现时间: 'created_at',
+    提现账户: 'card_no',
+    状态: 'status_str',
+    收款人姓名: 'name_of_payee',
+    备注: 'remark'
+  },
+  2: {
+    商户名称: 'owner_name',
+    商户ID: 'company_uid',
+    所属商务: 'business_str',
+    提现金额: 'tixian_money',
+    打款金额: 'tixian_money',
+    提现时间: 'created_at',
+    提现账户: 'card_no',
+    状态: 'status_str',
+    收款人姓名: 'name_of_payee',
+    备注: 'remark'
+  },
+  3: {
+    商户名称: 'owner_name',
+    商户ID: 'company_uid',
+    所属商务: 'business_str',
+    提现金额: 'tixian_money',
+    打款金额: 'tixian_money',
+    提现时间: 'created_at',
+    提现账户: 'card_no',
+    状态: 'status_str',
+    收款人姓名: 'name_of_payee',
+    备注: 'remark'
+  },
+  4: {
+    提现金额: 'tixian_money',
+    提现时间: 'created_at',
+    提现账户: 'card_no',
+    状态: 'status_str',
+    收款人姓名: 'name_of_payee',
+    打款时间:'updated_at',
+    备注: 'remark'
+  },
+  5: {
+    提现金额: 'tixian_money',
+    提现时间: 'created_at',
+    提现账户: 'card_no',
+    状态: 'status_str',
+    收款人姓名: 'name_of_payee',
+    备注: 'remark'
+  }
 };
+
+/**
+ * 
+ *  <el-table-column prop="owner_name" label="商户名称" min-width="200px" v-if="!([4, 5].includes(query.status))">
+          <template #default="scope">
+            <div>{{ scope.row.owner_name }}</div>
+            <div>ID:{{ scope.row.company_uid }}</div>
+          </template>
+        </el-table-column>
+        <el-table-column v-if="!([4, 5].includes(query.status))" prop="business_str" show-overflow-tooltip label="所属商务"
+          min-width="200px">
+        </el-table-column>
+        <el-table-column prop="tixian_money" label="提现金额" show-overflow-tooltip min-width="200px">
+        </el-table-column>
+        <el-table-column v-if="!([4, 5].includes(query.status))" prop="tixian_money" label="打款金额" show-overflow-tooltip
+          min-width="200px">
+        </el-table-column>
+        <el-table-column prop="created_at" show-overflow-tooltip label="提现时间" min-width="200px">
+        </el-table-column>
+        <el-table-column prop="card_no" label="提现账户" show-overflow-tooltip>
+        </el-table-column>
+        <el-table-column prop="status_str" label="状态" show-overflow-tooltip min-width="200px">
+          <template #default="scope">
+            <el-text class="mx-1" :type="colorType(scope.row)">{{ scope.row.status_str }}</el-text>
+            <div v-if="query.status == 4">
+              <el-text class="mx-1" :type="colorType(scope.row)">{{ scope.row.updated_at }}</el-text>
+            </div>
+          </template>
+        </el-table-column>
+        <el-table-column prop="name_of_payee" label="收款人姓名" show-overflow-tooltip min-width="200px">
+        </el-table-column>
+        <el-table-column prop="remark" label="备注" show-overflow-tooltip>
+        </el-table-column>
+        <el-table-column label="操作" v-if="isShowOperate">
+          <template #default="scope">
+            <el-button link type="primary" size="small" v-if="query.status == 1"
+              @click="openType('withdrawDetailVisible', scope.row)">提现详情</el-button>
+            <br />
+            <div v-if="query.status == 1">
+              <el-button link type="primary" size="small" @click="openType('approvedVisible', scope.row)">审核通过</el-button>
+              <br />
+              <el-button link type="primary" size="small"
+                @click="openType('noapprovedVisible', scope.row)">审核不通过</el-button>
+              <br />
+            </div>
+            <div v-if="query.status == 3">
+              <el-button link type="primary" size="small"
+                @click="openType('applyVisible', scope.row, '打款成功')">打款成功</el-button>
+              <br />
+              <el-button link type="primary" size="small"
+                @click="openType('applyVisible', scope.row, '打款失败')">打款失败</el-button>
+              <br />
+            </div>
+          </template>
+        </el-table-column>
+ */

+ 17 - 41
src/views/settleManage/financialControl/tabs/rechargeSettle/form/create.vue

@@ -1,27 +1,15 @@
 <template>
-  <div class="withdraw-popup-warn">
-    提现提示1:工作日14:30点前提现,审核通过之后下一工作日可到账;14:30之后提现将会在下一工作日审核<br />
-    提现提示2:充值收入提现后,请自行到当地税务部门纳税,本平台仅收取10%平台服务费,不承担代扣代缴义务。
-  </div>
   <el-form :model="formData" label-width="120px" ref="ruleForm" :rules="rules" v-loading="loading" class="pr-4">
     <div class="flex flex-row justify-between">
       <div class="w-full">
-        <el-form-item label="可提现金额" prop="name">
-          <el-input v-model="props.primary.yue_money" disabled placeholder="请输入商户名称" />
+        <el-form-item label="支付通道" prop="pay_channel">
+          <el-input v-model="formData.pay_channel" placeholder="请输入支付通道" />
         </el-form-item>
-        <el-form-item label="提现金额" prop="tixian_money">
-          <div class="items-center w-full">
-            <el-input style="width:200px;margin:0 5px;" v-model="formData.tixian_money" placeholder="请输入金额">
-              <template #append>元</template>
-            </el-input>
-            <span v-if="Number(props.primary.yue_money) > 0" class="text-blue-400 cursor-pointer"
-              @click="formData.tixian_money = props.primary.yue_money">全部提现</span>
-          </div>
+        <el-form-item label="银行流水" prop="pay_no" v-if="props.primary.isShowPayNo">
+          <el-input v-model="formData.pay_no" placeholder="请输入银行流水" />
         </el-form-item>
-        <el-form-item label="提现账户" prop="bank_card_id">
-          <el-select class="w-full" v-model="formData.bank_card_id" filterable clearable placeholder="选择提现账户">
-            <el-option v-for="item in applyBank" :key="item.value" :label="item.label" :value="item.value" />
-          </el-select>
+        <el-form-item label="备注" prop="remark">
+          <el-input v-model="formData.remark" placeholder="请输入备注" />
         </el-form-item>
       </div>
     </div>
@@ -35,7 +23,7 @@
 import { useCreate } from '@/hook/curd/useCreate';
 import { useShow } from '@/hook/curd/useShow';
 import type { FormInstance, FormRules } from 'element-plus'
-import { jiesuanManageBankAccountListAvailableBankCard, jiesuanManageJiesuanTixian } from '@/api/settlement/index'
+import { jiesuanManageFinanceCheckRemit } from '@/api/settlement/index'
 const ruleForm = ref<FormInstance>()
 import { onMounted, ref } from 'vue';
 const props = defineProps({
@@ -43,32 +31,27 @@ const props = defineProps({
 });
 const formData = ref({})
 const rules = reactive({
-  bank_card_id: [{ required: true, message: '请选择提现账户' }],
-  tixian_money: [
+  pay_channel: [{
+    required: true,
+    message: '请输入支付通道',
+    trigger: 'blur'
+  },],
+  pay_no: [
     {
       required: true,
-      message: '请输入金额',
+      message: '请输入银行流水',
       trigger: 'blur'
     },
-    { pattern: /^\d+(\.\d{1,2})?$/, message: '金额最多只能有两位小数', trigger: 'blur' },
-    { pattern: /^(?!0\d+)\d+(\.\d+)?$/, message: '请输入有效的金额', trigger: 'blur' },
-    {
-      pattern: /^500(\.\d{1,2})?$|^([5-9]\d{2}|[1-9]\d{3,})(\.\d{1,2})?$/,
-      message: '请输入不低于500的金额',
-      // trigger: 'blur'
-    }
   ],
 });
 const loading = ref(false)
-const applyBank = ref([])
-
 const submitForm = (formEl: FormInstance | undefined) => {
   console.log(formData.value, 'formData.valueformData.value');
   if (!formEl) return;
   formEl
     .validate(valid => {
       if (valid) {
-        jiesuanManageJiesuanTixian(formData.value).then(res => {
+        jiesuanManageFinanceCheckRemit(formData.value).then(res => {
           ElMessage.success(res.message)
           emit('close')
           loading.value = false;
@@ -81,20 +64,13 @@ const submitForm = (formEl: FormInstance | undefined) => {
 }
 
 if (props.primary) {
+  formData.value.id = props.primary.id
+  formData.value.status = props.primary.status
   console.log(props.primary, 'props.primaryprops.primary');
 }
 
 const emit = defineEmits(['close']);
 onMounted(() => {
-  jiesuanManageBankAccountListAvailableBankCard().then(res => {
-    applyBank.value = res.data;
-    applyBank.value = res.data.map(v => {
-      return {
-        label: `${v.bank_name}(***********${v.card_no.slice(-4)})`,
-        value: v.id,
-      };
-    });;
-  })
 
 });
 </script>

+ 76 - 24
src/views/settleManage/financialControl/tabs/rechargeSettle/index.vue

@@ -1,36 +1,48 @@
 <template>
   <div>
-    <el-radio-group v-model="query.status" @change="search">
+    <el-radio-group v-model="query.status" @change="search" class="pl-5">
       <el-radio v-for="item in statusList" :label="item.value" :key="item.value">{{ item.name }}</el-radio>
     </el-radio-group>
     <Search :search="search" :reset="resetQuery">
       <template v-slot:body>
-        <el-form-item label="所属商务" prop="business_id">
+        <!-- <el-form-item label="所属商务" prop="business_id">
           <el-select v-model="query.business_id" filterable clearable placeholder="选择所属商务">
             <el-option v-for="item in businessList" :key="item.id" :label="item.username" :value="item.id" />
           </el-select>
-        </el-form-item>
+        </el-form-item> -->
         <el-form-item label="提现时间">
           <el-date-picker unlink-panels clearable @change="createTimeChange" format="YYYY/MM/DD" value-format="YYYY-MM-DD"
             v-model="query.createTime" type="daterange" :shortcuts="shortcuts" range-separator="To"
             start-placeholder="开始时间" end-placeholder="结束时间" />
         </el-form-item>
+        <el-form-item label="商户名称" v-if="!([4, 5].includes(query.status))" prop="owner_name">
+          <el-input v-model="query.owner_name" placeholder="请输入商户名称" clearable />
+        </el-form-item>
+        <el-form-item label="商户ID" v-if="!([4, 5].includes(query.status))" prop="company_uid">
+          <el-input v-model="query.company_uid" placeholder="请输入商户ID" clearable />
+        </el-form-item>
+      </template>
+      <template v-slot:extra_button>
+        <exportExcel api="jiesuanManage/financeCheck/list" sheet_name="财务审核" :title_obj="titleObj[query.status]"
+          :extro_params="{ is_export: 1, ...query }">
+        </exportExcel>
       </template>
     </Search>
     <div class="table-default">
-      <Operate :show="open" />
       <el-table :data="tableData" class="mt-3" v-loading="loading">
-        <el-table-column prop="owner_name" label="商户名称" min-width="200px">
+        <el-table-column prop="owner_name" label="商户名称" min-width="200px" v-if="!([4, 5].includes(query.status))">
           <template #default="scope">
             <div>{{ scope.row.owner_name }}</div>
             <div>ID:{{ scope.row.company_uid }}</div>
           </template>
         </el-table-column>
-        <el-table-column prop="business_str" show-overflow-tooltip label="所属商务" min-width="200px">
+        <el-table-column v-if="!([4, 5].includes(query.status))" prop="business_str" show-overflow-tooltip label="所属商务"
+          min-width="200px">
         </el-table-column>
         <el-table-column prop="tixian_money" label="提现金额" show-overflow-tooltip min-width="200px">
         </el-table-column>
-        <el-table-column prop="tixian_money" label="打款金额" show-overflow-tooltip min-width="200px">
+        <el-table-column v-if="!([4, 5].includes(query.status))" prop="tixian_money" label="打款金额" show-overflow-tooltip
+          min-width="200px">
         </el-table-column>
         <el-table-column prop="created_at" show-overflow-tooltip label="提现时间" min-width="200px">
         </el-table-column>
@@ -39,22 +51,35 @@
         <el-table-column prop="status_str" label="状态" show-overflow-tooltip min-width="200px">
           <template #default="scope">
             <el-text class="mx-1" :type="colorType(scope.row)">{{ scope.row.status_str }}</el-text>
+            <div v-if="query.status == 4">
+              <el-text class="mx-1" :type="colorType(scope.row)">{{ scope.row.updated_at }}</el-text>
+            </div>
           </template>
         </el-table-column>
         <el-table-column prop="name_of_payee" label="收款人姓名" show-overflow-tooltip min-width="200px">
         </el-table-column>
-        <el-table-column prop="remark" label="审核备注" show-overflow-tooltip>
+        <el-table-column prop="remark" label="备注" show-overflow-tooltip>
         </el-table-column>
-        <el-table-column label="操作">
+        <el-table-column label="操作" v-if="isShowOperate">
           <template #default="scope">
-            <el-button link type="primary" size="small"
+            <el-button link type="primary" size="small" v-if="query.status == 1"
               @click="openType('withdrawDetailVisible', scope.row)">提现详情</el-button>
             <br />
-            <el-button link type="primary" size="small" @click="openType('approvedVisible', scope.row)">审核通过</el-button>
-            <br />
-            <el-button link type="primary" size="small"
-              @click="openType('noapprovedVisible', scope.row)">审核不通过</el-button>
-            <br />
+            <div v-if="query.status == 1" v-action="'jiesuan.FinanceCheck.check'">
+              <el-button link type="primary" size="small" @click="openType('approvedVisible', scope.row)">审核通过</el-button>
+              <br />
+              <el-button link type="primary" size="small"
+                @click="openType('noapprovedVisible', scope.row)">审核不通过</el-button>
+              <br />
+            </div>
+            <div v-if="query.status == 3" v-action="'jiesuan.FinanceCheck.remit'">
+              <el-button link type="primary" size="small"
+                @click="openType('applyVisible', scope.row, '打款成功')">打款成功</el-button>
+              <br />
+              <el-button link type="primary" size="small"
+                @click="openType('applyVisible', scope.row, '打款失败')">打款失败</el-button>
+              <br />
+            </div>
           </template>
         </el-table-column>
       </el-table>
@@ -63,21 +88,24 @@
     <Dialog v-model="withdrawDetailVisible" width="80%" title="提现详情" destroy-on-close>
       <withdrawDetail @close="closeType('withdrawDetailVisible')" :primary="withdrawDetailData"></withdrawDetail>
     </Dialog>
-    <el-dialog width="500px" v-model="noapprovedVisible" title="审核不通过" destroy-on-close>
+    <el-dialog width="500px" v-model="noapprovedVisible" title="审核不通过" destroy-on-close @close="noapprovedClose">
       <el-form :model="form" label-width="120px">
         <el-form-item label="备注">
-          <el-input v-model="form.status" :rows="3" type="textarea" placeholder="请输入内容" autocomplete="off" />
+          <el-input v-model="form.remark" :rows="3" type="textarea" placeholder="请输入内容" autocomplete="off" />
         </el-form-item>
       </el-form>
       <template #footer>
         <span class="dialog-footer">
-          <el-button @click="noapprovedVisible = false">取消</el-button>
+          <el-button @click="noapprovedClose">取消</el-button>
           <el-button type="primary" @click="noapproveChange">
             确认
           </el-button>
         </span>
       </template>
     </el-dialog>
+    <Dialog v-model="applyVisible" width="50%" :title="titleDialog" destroy-on-close>
+      <create @close="closeType('applyVisible')" :primary="applyData"></create>
+    </Dialog>
   </div>
 </template>
 
@@ -87,6 +115,8 @@ import { useRouter, useRoute } from 'vue-router'
 import { InfoFilled } from '@element-plus/icons-vue';
 import { useGetList } from '@/hook/curd/useGetList';
 import { useOpen } from '@/hook/curd/useOpen';
+import { titleObj } from './excelTitle'
+import create from './form/create.vue'
 import { jiesuanManageJiesuanAccountInfo, jiesuanManageBankAccountListShangwu, jiesuanManageFinanceCheckCheck } from '@/api/settlement/index'
 import moment from 'moment';
 const start_date = moment().startOf('month').format('YYYY-MM-DD')
@@ -98,9 +128,9 @@ const route = useRoute()
 import withdrawDetail from './withdrawDetail/index.vue'
 const statusList = ref([
   { name: '待审核', value: 1 },
-  { name: '审核失败', value: 2 },
+  { name: '审核不通过', value: 2 },
   { name: '待打款', value: 3 },
-  { name: '打款', value: 4 },
+  { name: '打款成功', value: 4 },
   { name: '打款失败', value: 5 },
 ])
 const { data, query, search, reset, loading } = useGetList(api);
@@ -112,10 +142,14 @@ const businessList = ref([])
 const rolesIdentify = inject('rolesIdentify')
 const withdrawDetailVisible = ref(false)
 const withdrawDetailData = ref({})
+const applyVisible = ref(false)
 const applyData = ref({})
+const titleDialog = ref('')
 const approvedVisible = ref(false)
 const noapprovedVisible = ref(false)
 
+const isShowOperate = computed(() => [1, 3].includes(query.value.status))
+
 const colorType = (data: object) => {
   const type = data.status
   switch (type) {
@@ -131,11 +165,14 @@ const colorType = (data: object) => {
       return 'danger'
   }
 }
-
+const noapprovedClose = () => {
+  form.value = {}
+  noapprovedVisible.value = false
+}
 const noapproveChange = () => {
-  jiesuanManageFinanceCheckCheck({ id: current.value.id, status: 2 }).then(res => {
-    console.log(res, 'jiesuanManageFinanceCheckCheck');
+  jiesuanManageFinanceCheckCheck({ id: current.value.id, status: 2, ...form.value }).then(res => {
     ElMessage.success(res.message)
+    noapprovedVisible.value = false
     search()
   })
 }
@@ -171,11 +208,14 @@ const closeType = (type: string) => {
     case 'noapprovedVisible':
       noapprovedVisible.value = false
       break;
+    case 'applyVisible':
+      applyVisible.value = false
+      break;
   }
   search()
 }
 
-const openType = (type: string, data?: object) => {
+const openType = (type: string, data?: object, title?: string) => {
   current.value = data || {}
   switch (type) {
     case 'withdrawDetailVisible':
@@ -206,6 +246,18 @@ const openType = (type: string, data?: object) => {
     case 'noapprovedVisible':
       noapprovedVisible.value = true
       break;
+    case 'applyVisible':
+      applyVisible.value = true
+      applyData.value = data || {}
+      if (title == '打款成功') {
+        applyData.value.isShowPayNo = true
+        applyData.value.status = 4
+      } else if (title == '打款失败') {
+        applyData.value.isShowPayNo = false
+        applyData.value.status = 5
+      }
+      titleDialog.value = title || '';
+      break;
   }
 }
 const tableData = computed(() => data.value?.data);

+ 36 - 34
src/views/settleManage/financialControl/tabs/rechargeSettle/withdrawDetail/index.vue

@@ -1,39 +1,41 @@
 <template>
-  <el-card shadow="always" :body-style="{ padding: '20px' }">
-    <el-row :gutter="20">
-      <el-col :span="6" class="col">
-        <div class="text-lg text-red-500">
-          ¥{{ applyData.yue_money }}
-        </div>
-        <div class="text-base">
-          账户余额
-        </div>
-      </el-col>
-      <el-col :span="6" class="col">
-        <div class="text-lg text-green-500">
-          ¥{{ applyData.tixian_money }}
-        </div>
-        <div class="text-base">
-          审核中
-        </div>
-      </el-col>
-      <el-col :span="6" class="col">
-        <div class="text-lg text-red-300">
-          ¥{{ applyData.total_dakuan }}
-        </div>
-        <div class="text-base">
-          已打款
-        </div>
-      </el-col>
-    </el-row>
-  </el-card>
-  <div class="p-5">注:每日的结算数据需要在次日统计完成后才能展示</div>
+  <div v-action="'jiesuan.FinanceCheck.remit'">
+    <el-card shadow="always" :body-style="{ padding: '20px' }">
+      <el-row :gutter="20">
+        <el-col :span="6" class="col">
+          <div class="text-lg text-red-500">
+            ¥{{ applyData.yue_money }}
+          </div>
+          <div class="text-base">
+            账户余额
+          </div>
+        </el-col>
+        <el-col :span="6" class="col">
+          <div class="text-lg text-green-500">
+            ¥{{ applyData.tixian_money }}
+          </div>
+          <div class="text-base">
+            审核中
+          </div>
+        </el-col>
+        <el-col :span="6" class="col">
+          <div class="text-lg text-red-300">
+            ¥{{ applyData.total_dakuan }}
+          </div>
+          <div class="text-base">
+            已打款
+          </div>
+        </el-col>
+      </el-row>
+    </el-card>
+    <div class="p-5">注:每日的结算数据需要在次日统计完成后才能展示</div>
+  </div>
   <el-tabs v-model="activeName" @tab-change="handChange">
-    <el-tab-pane label="结算明细" name="readLog">
-      <settleInfo :primary="props.primary"></settleInfo>
+    <el-tab-pane label="结算明细" name="billDetails">
+      <settleInfo :primary="props.primary" v-if="activeName == 'billDetails'"></settleInfo>
     </el-tab-pane>
-    <el-tab-pane label="提现记录" name="recharge">
-      <withdrawalRecord :primary="props.primary"></withdrawalRecord>
+    <el-tab-pane label="提现记录" name="withdrawalRecord">
+      <withdrawalRecord :primary="props.primary" v-if="activeName == 'withdrawalRecord'"></withdrawalRecord>
     </el-tab-pane>
   </el-tabs>
 </template>
@@ -47,7 +49,7 @@ import type { TabsPaneContext } from 'element-plus'
 const props = defineProps({
   primary: Object,
 });
-const activeName = ref('readLog')
+const activeName = ref('billDetails')
 
 const handChange = (tab: TabsPaneContext, event: Event) => {
   activeName.value = tab

+ 5 - 8
src/views/settleManage/financialControl/tabs/rechargeSettle/withdrawDetail/tables/settleInfo/excelTitle.ts

@@ -1,11 +1,8 @@
 // 导出中文/字段
 export const titleObj = {
-  提现时间: 'created_at',
-  提现金额: 'tixian_money',
-  提现账户: 'card_no',
-  收款人姓名: 'name_of_payee',
-  支付通道: 'pay_channel',
-  银行流水: 'pay_no',
-  审核状态: 'status_str',
-  备注: 'remark'
+  时间: 'jiesuan_date',
+  日充值总额: 'charge_money',
+  当日退款: 'tuikuan_money',
+  分成比例: 'share_rate',
+  日结算总额: 'jiesuan_money'
 };

+ 1 - 0
src/views/settleManage/financialControl/tabs/rechargeSettle/withdrawDetail/tables/settleInfo/index.vue

@@ -41,6 +41,7 @@ const api = 'jiesuanManage/jiesuan/list';
 const props = defineProps({
   primary: Object,
 });
+import { titleObj } from './excelTitle'
 const { data, query, search, reset, loading } = useGetList(api);
 
 const createTimeChange = (e: object) => {

+ 3 - 3
src/views/settleManage/paymentAccountInfo/index.vue

@@ -3,10 +3,10 @@
     <el-card shadow="always" :body-style="{ padding: '20px' }">
       <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handChange">
         <el-tab-pane label="收款账户信息" name="payment">
-          <paymentInfo></paymentInfo>
+          <paymentInfo v-if="activeName == 'payment'"></paymentInfo>
         </el-tab-pane>
-        <el-tab-pane label="合作信息" name="cooperate">
-          <cooperate></cooperate>
+        <el-tab-pane label="合作信息" v-action="'jiesuan.BankAccount.hezuoInfo'" name="cooperate">
+          <cooperate v-if="activeName == 'cooperate'"></cooperate>
         </el-tab-pane>
       </el-tabs>
     </el-card>

+ 1 - 1
src/views/settleManage/paymentAccountInfo/tabs/paymentInfo/index.vue

@@ -15,7 +15,7 @@
       </template>
     </Search>
     <div class="table-default">
-      <Operate :show="open" />
+      <Operate :show="open" v-action="'jiesuan.BankAccount.addCompanyCard'" />
       <el-table :data="tableData" class="mt-3" v-loading="loading">
         <el-table-column prop="owner_name" label="所属商务" min-width="200px" />
         <el-table-column label="收款信息" show-overflow-tooltip min-width="200px">

+ 3 - 3
src/views/settleManage/settlementCenter/index.vue

@@ -3,10 +3,10 @@
     <el-card shadow="always" :body-style="{ padding: '20px' }">
       <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handChange">
         <el-tab-pane label="充值结算" name="recharge">
-          <rechargeSettle></rechargeSettle>
+          <rechargeSettle v-if="activeName == 'recharge'"></rechargeSettle>
         </el-tab-pane>
-        <el-tab-pane label="结算规则" name="refund">
-          <rechargeRules></rechargeRules>
+        <el-tab-pane label="结算规则" name="settlementRules">
+          <rechargeRules v-if="activeName == 'settlementRules'"></rechargeRules>
         </el-tab-pane>
       </el-tabs>
     </el-card>

+ 6 - 5
src/views/settleManage/settlementCenter/tabs/rechargeSettle/index.vue

@@ -2,7 +2,7 @@
   <div>
     <el-card shadow="always" :body-style="{ padding: '20px' }">
       <el-row :gutter="20">
-        <el-col :span="6" class="col">
+        <el-col :span="6" class="col" v-action="'jiesuan.Jiesuan.accountInfo'">
           <div class="text-lg text-red-500">
             ¥{{ applyData.yue_money }}
           </div>
@@ -10,7 +10,7 @@
             账户余额
           </div>
         </el-col>
-        <el-col :span="6" class="col">
+        <el-col :span="6" class="col" v-action="'jiesuan.Jiesuan.accountInfo'">
           <div class="text-lg text-green-500">
             ¥{{ applyData.tixian_money }}
           </div>
@@ -18,7 +18,7 @@
             审核中
           </div>
         </el-col>
-        <el-col :span="6" class="col">
+        <el-col :span="6" class="col" v-action="'jiesuan.Jiesuan.accountInfo'">
           <div class="text-lg text-red-300">
             ¥{{ applyData.total_dakuan }}
           </div>
@@ -27,14 +27,15 @@
           </div>
         </el-col>
         <el-col :span="6" class="col">
-          <div class="flex mb-4 text-lg text-red-500">
+          <div class="flex mb-4 text-lg text-red-500" v-action="'jiesuan.Jiesuan.tixian'">
             <el-button type="primary" :disabled="applyBank.length <= 0" size="default"
               @click="openType('applyVisible', applyData)">申请提现</el-button>
             <div v-if="applyBank.length <= 0" class="ml-3">未配置收款账户,<span
                 @click="router.push('/jiesuanManage/bankAccount')" class="text-blue-400 cursor-pointer">去配置</span></div>
           </div>
           <div class="text-base">
-            <el-button size="default" @click="openType('applyListVisible')">提现记录</el-button>
+            <el-button v-action="'jiesuan.Jiesuan.listTixian'" size="default"
+              @click="openType('applyListVisible')">提现记录</el-button>
           </div>
         </el-col>
       </el-row>

+ 5 - 2
src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/index.vue

@@ -2,10 +2,10 @@
   <div>
     <el-tabs v-model="activeName" class="demo-tabs" @tab-change="handChange">
       <el-tab-pane label="充值订单" name="recharge">
-        <rechargeList></rechargeList>
+        <rechargeList v-if="activeName == 'recharge'" :primary="props.primary"></rechargeList>
       </el-tab-pane>
       <el-tab-pane label="退款订单" name="refund">
-        <refundList></refundList>
+        <refundList v-if="activeName == 'refund'" :primary="props.primary"></refundList>
       </el-tab-pane>
     </el-tabs>
   </div>
@@ -21,6 +21,9 @@ const route = useRoute()
 const handChange = (tab: TabsPaneContext, event: Event) => {
   activeName.value = tab
 }
+const props = defineProps({
+  primary: Object,
+});
 const activeName = ref('recharge')
 onMounted(() => {
   activeName.value = route.query.tab || 'recharge'

+ 0 - 16
src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/tabs/rechargeList/excelTitle.ts

@@ -1,16 +0,0 @@
-// 导出中文/字段
-export const titleObj = {
-  所属账户ID: 'advertiser_id',
-  所属账户: 'advertiser_name',
-  订单号: 'order_no',
-  用户ID: 'uid',
-  注册IP: 'user_ranse_ip',
-  注册时间: 'user_ranse_start_at',
-  充值时间: 'order_created_at',
-  充值金额: 'order_price',
-  是否回传: 'filter_type_str',
-  备注: 'filter_reason',
-  回传百分比: 'current_rate',
-  回传配置百分比: 'config_rate',
-  广告计划ID: 'adv_promotion_id'
-};

+ 7 - 6
src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/tabs/rechargeList/index.vue

@@ -21,16 +21,17 @@
 
 <script lang="ts" setup>
 import { useGetList } from '@/hook/curd/useGetList';
-import { titleObj } from "./excelTitle"
-import moment from 'moment';
-const start_date = moment().startOf('month').format('YYYY-MM-DD')
-const end_date = moment().endOf('month').format('YYYY-MM-DD')
-
+const props = defineProps({
+  primary: Object,
+});
 const api = 'channel/order_list';
 const { data, query, search, reset, loading } = useGetList(api);
 
 const tableData = computed(() => data.value?.data);
-
+if (props.primary) {
+  query.value.id = props.primary.id
+  console.log(props.primary, 'props.primaryprops.primary');
+}
 onMounted(() => {
   search();
 });

+ 0 - 16
src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/tabs/refundList/excelTitle.ts

@@ -1,16 +0,0 @@
-// 导出中文/字段
-export const titleObj = {
-  所属账户ID: 'advertiser_id',
-  所属账户: 'advertiser_name',
-  订单号: 'order_no',
-  用户ID: 'uid',
-  注册IP: 'user_ranse_ip',
-  注册时间: 'user_ranse_start_at',
-  充值时间: 'order_created_at',
-  充值金额: 'order_price',
-  是否回传: 'filter_type_str',
-  备注: 'filter_reason',
-  回传百分比: 'current_rate',
-  回传配置百分比: 'config_rate',
-  广告计划ID: 'adv_promotion_id'
-};

+ 9 - 7
src/views/settleManage/settlementCenter/tabs/rechargeSettle/orderDetail/tabs/refundList/index.vue

@@ -21,14 +21,16 @@
 
 <script lang="ts" setup>
 import { useGetList } from '@/hook/curd/useGetList';
-import { titleObj } from "./excelTitle"
-import moment from 'moment';
-const start_date = moment().startOf('month').format('YYYY-MM-DD')
-const end_date = moment().endOf('month').format('YYYY-MM-DD')
-
-const api = 'channel/order_list';
+const api = 'orderRefund/order_list';
 const { data, query, search, reset, loading } = useGetList(api);
-
+const props = defineProps({
+  primary: Object,
+});
+if (props.primary) {
+  query.value.puser_id = props.primary.company_uid
+  query.value.created_at_start = props.primary.jiesuan_date + ' 00:00:00'
+  query.value.created_at_end = props.primary.jiesuan_date + ' 23:59:59'
+}
 const tableData = computed(() => data.value?.data);
 
 onMounted(() => {