Browse Source

样式合并10.13

zhangyong/milestone-20250913-现金管理
zhangrenyuan 2 months ago
parent
commit
f4b792912d
  1. 2
      .env.development
  2. 108
      src/assets/SvgIcons/背景.svg
  3. BIN
      src/assets/收款明细撤回背景.png
  4. 31
      src/components/workspace/GoldGraph.vue
  5. 6
      src/components/workspace/GoldManagement.vue
  6. 73
      src/css/btn.css
  7. 2
      src/main.ts
  8. 32
      src/views/audit/bean/beanAudit.vue
  9. 42
      src/views/audit/gold/audit.vue
  10. 42
      src/views/audit/gold/rechargeAudit.vue
  11. 20
      src/views/audit/gold/refundAudit.vue
  12. 95
      src/views/consume/bean/articleVideo.vue
  13. 14
      src/views/consume/bean/beanConsume.vue
  14. 70
      src/views/consume/bean/dieHardFan.vue
  15. 80
      src/views/consume/bean/liveStream.vue
  16. 22
      src/views/consume/gold/coinConsume.vue
  17. 86
      src/views/consume/gold/coinConsumeDetail.vue
  18. 32
      src/views/managerecharge/rate.vue
  19. 441
      src/views/moneyManage/receiveDetail/receiveDetail.vue
  20. 52
      src/views/permissions/userPermission.vue
  21. 83
      src/views/recharge/bean/beanOnlineRecharge.vue
  22. 28
      src/views/recharge/bean/beanRecharge.vue
  23. 55
      src/views/recharge/bean/beanSystemRecharge.vue
  24. 13
      src/views/recharge/gold/coinRecharge.vue
  25. 84
      src/views/recharge/gold/coinRechargeDetail.vue
  26. 18
      src/views/refund/gold/coinRefund.vue
  27. 36
      src/views/usergold/gold/clientCount.vue
  28. 4
      src/views/workspace/index.vue

2
.env.development

@ -13,4 +13,4 @@ VITE_UPLOAD_URL=http://39.101.133.168:8828/hljw/api/aws/upload
# 本地
#VITE_API_BASE='http://localhost:8081/'
# sunjiabei
# VITE_API_BASE='http://192.168.1.70:8081/'
#VITE_API_BASE='http://192.168.1.50:8081/'

108
src/assets/SvgIcons/背景.svg
File diff suppressed because it is too large
View File

BIN
src/assets/收款明细撤回背景.png

After

Width: 700  |  Height: 392  |  Size: 116 KiB

31
src/components/workspace/GoldGraph.vue

@ -51,7 +51,7 @@
<div class="right">
<el-card class="graph-card-list">
<div class="card-large">金币{{ activeTab === 'recharge' ? '充值' : '消费' }}排名</div>
<el-select class="card-select" v-model="selectedType" style="width: 100%; margin-bottom: 15px">
<el-select popper-class="mySelectStyle" class="card-select" v-model="selectedType" style="width: 100%; margin-bottom: 15px">
<el-option label="全部类型" value="all"></el-option>
<el-option label="永久金币" value="permanent"></el-option>
<el-option label="免费金币" value="free"></el-option>
@ -770,16 +770,14 @@ onUnmounted(() => {
.card-select {
:deep(.el-select__wrapper) {
background-color: #E7F4FD !important;
// :hover {
// background-color: red !important;
// }
box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.25) !important;
border: none !important;
}
:deep(.el-select-dropdown__item.selected) {
// :hover { background-color: red !important; }
background: red !important;
:deep(.el-select-dropdown) {
background-color: #E7F4FD !important;
box-shadow: 0 0 4px 0 rgba(0, 0, 0, 0.25) !important;
border: none !important;
}
}
@ -806,6 +804,25 @@ onUnmounted(() => {
:deep(.el-table__body .el-table__cell) {
border-bottom: 1px solid #BBC0C9 !important;
}
}
/* select 列表项 初始颜色 */
.el-select-dropdown__item {
background: #ffffff;
}
/* select hover状态*/
.el-select-dropdown__item:hover {
border-radius: 8px;
margin-left: 2px;
margin-right: 2px;
background: #E5EBFE;
height: 32px;
}
/* 选中状态(针对 is-selected 类) */
.el-select-dropdown__item.is-selected {
color: #2549E0;
border-radius: 8px;
}
/* tabs的样式 */

6
src/components/workspace/GoldManagement.vue

@ -63,7 +63,7 @@
<el-col :span="12">
<!-- 第二个卡片 -->
<div class="card-item-row1">
<div class="card-title">全年累计充值金币数{{ yearlyRecharge / 100 }}</div>
<div class="card-title">全年累计充值金币数{{ yearlyRecharge / 100 }}</div>
<el-row>
<el-col :span="12">
<div class="center-card">折合新币累计金额</div>
@ -85,7 +85,7 @@
<el-col :span="12">
<!-- 第三个卡片 -->
<div class="card-item">
<div class="card-title">全年累计消费金币数{{ yearlyReduce / 100 }}</div>
<div class="card-title">全年累计消费金币数{{ yearlyReduce / 100 }}</div>
<el-row style="height: 200px;">
<el-col :span="12">
<div ref="consumeChart" style="width:100%; height: 68%;"></div>
@ -99,7 +99,7 @@
<el-col :span="12">
<!-- 第四个卡片 -->
<div class="card-item" >
<div class="card-title">全年累计充值人头数{{ yearlyRechargeNum }}</div>
<div class="card-title">全年累计充值人头数{{ yearlyRechargeNum }}</div>
<el-row style="height: 200px;">
<el-col :span="12" style="border-right: 2px solid #CFE6FE; height: 150px">
<div class="chart5">

73
src/css/btn.css

@ -0,0 +1,73 @@
/*各个页面的按钮激活*/
/*使用示例
import '@/css/btn.css';
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'rechargeAudit' }"
@click="navigateTo('rechargeAudit')"
v-if="hasRecharge"
>
充值审核
</el-button>
*/
/* 默认按钮样式 */
.no-active-btn {
background-color: #E5EBFE; /* 未激活背景色 */
color: #666; /* 未激活文字色 */
/* 确保激活状态下 hover 也不变化 */
&:hover {
background-color: #E5EBFE !important; /* 保持默认背景色 */
color: #666 !important; /* 保持默认文字色 */
border-color: transparent; /* 若有边框,保持默认 */
}
}
/* 激活状态样式 */
.active-btn {
background-color: #2741DE; /* 激活背景色 */
color: white; /* 激活文字色 */
/* 确保激活状态下 hover 也不变化 */
&:hover {
background-color: #2741DE !important;
color: white !important;
border-color: transparent;
}
}
/** ----------------------------------**/
/** 通过驳回按钮 使用的是el-link **/
.pass-btn {
color: #2741DE;
margin-right: 5px;
}
.reject-btn {
color: #2741DE;
margin-left: 5px;
}
/* 清除hover状态的样式变化 */
.pass-btn:hover,
.reject-btn:hover {
color: #2741DE; /* 保持与默认状态相同的颜色 */
}
/** ----------------------------------**/
/** ----------------------------------**/
/** 编辑 按钮 使用的是el-link **/
.edit-btn {
color: #2741DE;
}
.edit-btn:hover{
color: #2741DE; /* 保持与默认状态相同的颜色 */
}
/** ----------------------------------**/
/** ----------------------------------**/
.el-pagination .el-pager li.is-active {
background-color: #2741DE !important;
color: #FFFFFF !important;
}

2
src/main.ts

@ -16,6 +16,8 @@ import 'vxe-table/lib/style.css'
import {useAdminStore} from './store'
import request from "@/util/request";
import "./global.css";
import '@/css/btn.css';
const app = createApp(App)
const pinia = createPinia()

32
src/views/audit/bean/beanAudit.vue

@ -4,7 +4,8 @@
<div class="select">
<div class="selectRow">
<el-text class="text" size="large">精网号</el-text>
<el-input v-model="searchForm.jwcode" placeholder="请输入精网号" style="width: 12vw;margin-right:1vw" clearable />
<el-input class="selectContent" v-model="searchForm.jwcode" placeholder="请输入精网号"
style="width: 12vw;margin-right:1vw" clearable/>
</div>
<div class="selectRow">
<el-text class="text" size="large">所属地区</el-text>
@ -17,14 +18,14 @@
<div class="select">
<div class="selectRow" style="width: 36vw;">
<el-text class="text" size="large" v-show="checkTab === 'pending'">提交时间</el-text>
<el-text size="large" style="width: 25vw;margin-right:1vw"
v-show="checkTab === 'reject' || checkTab === 'pass'">审核时间</el-text>
<el-text class="text" size="large" v-show="checkTab === 'reject' || checkTab === 'pass'">审核时间</el-text>
<el-date-picker v-model="dateRange" type="datetimerange" range-separator="" start-placeholder="开始时间"
end-placeholder="结束时间" style="width: 25vw;margin-right:1vw" @change="handleDatePickerChange"
end-placeholder="结束时间" class="selectContent" style="width: 25vw;margin-right:1vw"
@change="handleDatePickerChange"
:default-time="defaultTime"/>
<el-button @click="getToday()" :type="activeTimeRange === 'today' ? 'primary' : ''"></el-button>
<el-button @click="getYesterday()" :type="activeTimeRange === 'yesterday' ? 'primary' : ''"></el-button>
<el-button @click="get7Days()" :type="activeTimeRange === '7days' ? 'primary' : ''">近7天</el-button>
<!-- <el-button @click="getToday()" :type="activeTimeRange === 'today' ? 'primary' : ''"></el-button>-->
<!-- <el-button @click="getYesterday()" :type="activeTimeRange === 'yesterday' ? 'primary' : ''"></el-button>-->
<!-- <el-button @click="get7Days()" :type="activeTimeRange === '7days' ? 'primary' : ''">近7天</el-button>-->
</div>
<div class="selectRow" style="justify-content: flex-start;">
<el-button type="success" @click="resetSearch">重置</el-button>
@ -101,9 +102,10 @@
<div class="operation">
<el-popconfirm title="确定要通过此条记录吗?" @confirm="handleApprove(scope.row)">
<template #reference>
<el-button v-if="hasbeanWaitThough" :disabled="clicked || cancelClicked" type="primary" text>
<el-link :underline="false" class="pass-btn" v-if="hasbeanWaitThough"
:disabled="clicked || cancelClicked" type="primary">
通过
</el-button>
</el-link>
</template>
<template #actions="{ confirm }">
<el-button size="small">取消</el-button>
@ -112,23 +114,26 @@
</el-button>
</template>
</el-popconfirm>
<el-button v-if="hasbeanWaitReject" :disabled="clicked || cancelClicked" type="primary" text
<el-link :underline="false" class="reject-btn" v-if="hasbeanWaitReject" :disabled="clicked || cancelClicked"
type="primary"
@click="showRejectDialog(scope.row)">
驳回
</el-button>
</el-link>
</div>
</template>
</el-table-column>
</el-table>
<el-pagination style="margin-top:20px" v-model:current-page="pagination.pageNum"
v-model:page-size="pagination.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="stats.num"
v-model:page-size="pagination.pageSize" layout="total, sizes, prev, pager, next, jumper"
:total="stats.num"
@size-change="handlePageSizeChange" @current-change="handleCurrentChange"></el-pagination>
</el-card>
<el-dialog v-model="rejectVisible" title="驳回理由" width="500px">
<el-form>
<el-form-item label="驳回理由" required>
<el-input v-model="reason" type="textarea" :rows="4" placeholder="请输入驳回理由" maxlength="200" show-word-limit />
<el-input v-model="reason" type="textarea" :rows="4" placeholder="请输入驳回理由" maxlength="200"
show-word-limit/>
</el-form-item>
</el-form>
<template #footer>
@ -148,6 +153,7 @@ import { useAdminStore } from "@/store/index.js";
import {storeToRefs} from "pinia";
import _ from 'lodash'
import {permissionMapping, hasMenuPermission} from "@/utils/menuTreePermission.js"
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1, 23, 59, 59),

42
src/views/audit/gold/audit.vue

@ -1,13 +1,21 @@
<template>
<div>
<div style="height:4vh;width:82vw;">
<el-button-group class="custom-button-group">
<el-button :type="activeTab === 'rechargeAudit' ? 'primary' : 'default'" @click="navigateTo('rechargeAudit')" class="custom-tab-button"
v-if="hasRecharge">
<el-button-group>
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'rechargeAudit' }"
@click="navigateTo('rechargeAudit')"
v-if="hasRecharge"
>
充值审核
</el-button>
<el-button :type="activeTab === 'refundAudit' ? 'primary' : 'default'" @click="navigateTo('refundAudit')" class="custom-tab-button"
v-if="hasRefund">
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'refundAudit' }"
@click="navigateTo('refundAudit')"
v-if="hasRefund"
>
退款审核
</el-button>
</el-button-group>
@ -92,27 +100,3 @@ onMounted(() => {
}
});
</script>
<style scoped lang="scss">
/* 自定义按钮组布局 */
.custom-button-group {
display: flex;
margin-bottom: 16px;
gap: 8px;
}
:deep(.el-button.custom-tab-button) {
border-radius: 4px;
transition: all 0.3s ease;
}
// tab
:deep(.el-button.custom-tab-button.el-button--primary) {
background-color: #2741DE !important;
border-color: #2741DE !important;
color: #F3FAFE !important;
}
/* 鼠标悬停效果 */
:deep(.el-button.custom-tab-button:hover:not(.is-disabled)) {
opacity: 0.8;
}
</style>

42
src/views/audit/gold/rechargeAudit.vue

@ -48,32 +48,10 @@
</el-col>
</el-card>
<el-card class="card2">
<div class="custom-button-group">
<el-button
v-if="hasrechargeWait&&hasrechargeWaitShow"
:type="activeName === 'wait' ? 'primary' : 'default'"
@click="handleButtonClick('wait')"
class="custom-tab-button"
>
待审核
</el-button>
<el-button
v-if="hasrechargeThrough"
:type="activeName === 'pass' ? 'primary' : 'default'"
@click="handleButtonClick('pass')"
class="custom-tab-button"
>
已通过
</el-button>
<el-button
v-if="hasrechargeReject"
:type="activeName === 'reject' ? 'primary' : 'default'"
@click="handleButtonClick('reject')"
class="custom-tab-button"
>
已驳回
</el-button>
</div>
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="待审核" name="wait" v-if="hasrechargeWait&&hasrechargeWaitShow"></el-tab-pane>
<el-tab-pane label="已通过" name="pass" v-if="hasrechargeThrough"></el-tab-pane>
<el-tab-pane label="已驳回" name="reject" v-if="hasrechargeReject"></el-tab-pane>
<div class="goldStatistics">
<!-- 总条数{{ format3(stats.totalNum) }}&nbsp;&nbsp;&nbsp;&nbsp;-->
@ -83,6 +61,7 @@
永久金币{{ format3(stats.permanentGolds.toFixed(2)) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(stats.freeGolds.toFixed(2)) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
</div>
</el-tabs>
<el-table :data="tableData" style="width: 82vw;height:54vh" @sort-change="handleSortChange"
:row-style="{ height: '50px' }">
@ -146,9 +125,10 @@
<div class="operation">
<el-popconfirm title="确定要通过此条记录吗?" @confirm="handleApprove(scope.row)">
<template #reference>
<el-button v-if="hasrechargeWaitThough" :disabled="clicked || cancelClicked" type="primary" text>
<el-link :underline="false" class="pass-btn" v-if="hasrechargeWaitThough"
:disabled="clicked || cancelClicked">
通过
</el-button>
</el-link>
</template>
<template #actions="{ confirm, cancel }">
<el-button size="small" @click="cancel">取消</el-button>
@ -157,9 +137,11 @@
</el-button>
</template>
</el-popconfirm>
<el-button v-if="hasrechargeWaitReject" :disabled="clicked || cancelClicked" type="primary" text @click="showRejectDialog(scope.row)">
<el-link :underline="false" class="reject-btn" v-if="hasrechargeWaitReject"
:disabled="clicked || cancelClicked" type="primary"
@click="showRejectDialog(scope.row)">
驳回
</el-button>
</el-link>
</div>
</template>
</el-table-column>

20
src/views/audit/gold/refundAudit.vue

@ -78,7 +78,8 @@
</div>
<div class="goldStatistics">
退款总金币数{{ format3((stats.permanentGolds + stats.freeGolds + stats.taskGolds).toFixed(2))
退款总金币数{{
format3((stats.permanentGolds + stats.freeGolds + stats.taskGolds).toFixed(2))
}}金币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(stats.permanentGolds.toFixed(2)) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(stats.freeGolds.toFixed(2)) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
@ -139,15 +140,17 @@
{{ row.auditTime ? moment(row.auditTime).format('YYYY-MM-DD HH:mm:ss') : '--' }}
</template>
</el-table-column>
<el-table-column v-if="checkTab === 'pending' && (hasrefundWaitThough || hasrefundWaitReject)&&hasrefundWaitShow" fixed="right"
<el-table-column v-if="checkTab === 'pending' && (hasrefundWaitThough || hasrefundWaitReject)&&hasrefundWaitShow"
fixed="right"
prop="operation" label="操作" width="150px">
<template #default="scope">
<div class="operation">
<el-popconfirm title="确定要通过此条记录吗?" @confirm="handleApprove(scope.row)">
<template #reference>
<el-button v-if="hasrefundWaitThough" :disabled="clicked || cancelClicked" type="primary" text>
<el-link :underline="false" class="pass-btn" v-if="hasrefundWaitThough"
:disabled="clicked || cancelClicked" type="primary">
通过
</el-button>
</el-link>
</template>
<template #actions="{ confirm, cancel }">
<el-button size="small" @click="cancel">取消</el-button>
@ -156,16 +159,18 @@
</el-button>
</template>
</el-popconfirm>
<el-button v-if="hasrefundWaitReject" :disabled="clicked || cancelClicked" type="primary" text
<el-link :underline="false" class="reject-btn" v-if="hasrefundWaitReject"
:disabled="clicked || cancelClicked" type="primary"
@click="showRejectDialog(scope.row)">
驳回
</el-button>
</el-link>
</div>
</template>
</el-table-column>
</el-table>
<el-pagination class="pagination" v-model:current-page="pagination.pageNum" v-model:page-size="pagination.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="pagination.total" @size-change="handlePageSizeChange"
layout="total, sizes, prev, pager, next, jumper" :total="pagination.total"
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"></el-pagination>
</el-card>
@ -194,6 +199,7 @@ import { useAdminStore } from "@/store/index.js";
import {storeToRefs} from "pinia";
import dayjs from "dayjs";
import {permissionMapping, hasMenuPermission} from "@/utils/menuTreePermission.js"
const adminStore = useAdminStore();
const {adminData, menuTree} = storeToRefs(adminStore);
const defaultTime = [

95
src/views/consume/bean/articleVideo.vue

@ -271,7 +271,6 @@ const reset = function () {
beanConsumeArticle.value.endTime = ''
sortField.value = ''
sortOrder.value = ''
getTime.value = {}
@ -317,8 +316,6 @@ const get7Days = function () {
}
//
const handleSortChange = (column) => {
console.log('排序字段:', column.prop)
@ -463,51 +460,69 @@ const getTagText = (state) => {
</script>
<template>
<el-card class="card1" style="margin-bottom: 1vh">
<el-card class="card1" style="margin-bottom: 0.5vh">
<el-col style="margin-bottom: 1vh; ">
<div style="display:flex">
<div style="width: 13vw; display:flex; align-items:center; justify-content: center;">
<el-text>精网号</el-text>
<el-input v-model="beanConsumeArticle.jwcode" style="width:8vw;margin-left: 0.5vw;" placeholder="请输入精网号" clearable />
<div class="select">
<div class="selectRow">
<el-text class="text" size="large">精网号</el-text>
<el-input class="selectContent" v-model="beanConsumeArticle.jwcode" placeholder="请输入精网号"
clearable/>
</div>
<div style="width: 13vw; display:flex; align-items:center; justify-content: center;">
<el-text>地区</el-text>
<el-select v-model="beanConsumeArticle.dept" style="width:8vw; margin-left: 0.5vw;" placeholder="请选择地区" clearable>
<div class="selectRow">
<el-text class="text" size="large">地区</el-text>
<el-select class="selectContent" v-model="beanConsumeArticle.dept"
placeholder="请选择地区"
clearable>
<el-option v-for="(item, index) in dept" :key="index" :label="item" :value="item"/>
</el-select>
</div>
<div style="width: 13vw; display:flex;align-items:center; justify-content: center;">
<el-text>类型</el-text>
<el-select v-model="beanConsumeArticle.payMode" style="width:8vw; margin-left: 0.5vw;" placeholder="请选择类型" clearable @change="handlePayModeChange">
<div class="selectRow">
<el-text class="text" size="large">类型</el-text>
<el-select class="selectContent"
style="width: 20px"
v-model="beanConsumeArticle.payMode"
placeholder="请选择类型" clearable
@change="handlePayModeChange"
>
<el-option label="打赏" value="0"/>
<el-option label="付费购买" value="1"/>
<el-option label="其他" value="2"/>
</el-select>
</div>
<div style="width: 15vw; display:flex; align-items:center; justify-content: center;">
<el-text>文章/视频ID:</el-text>
<el-input v-model="beanConsumeArticle.articleId" style="width:8vw; margin-left: 0.5vw;" placeholder="请输入文章/视频ID" clearable />
<div class="selectRow">
<el-text class="text" size="large">文章/视频ID:</el-text>
<el-input class="selectContent" v-model="beanConsumeArticle.articleId"
placeholder="请输入文章/视频ID" clearable/>
</div>
<div style="width: 16vw; display:flex; align-items:center; justify-content: center;">
<el-text>文章/视频标题</el-text>
<el-input v-model="beanConsumeArticle.articleName" style="width:9vw; margin-left: 0.5vw;" placeholder="请输入文章/视频标题" clearable />
</div>
<div style="width: 12vw; display:flex; align-items:center; justify-content: center;">
<el-text>作者</el-text>
<el-input v-model="beanConsumeArticle.author" style="width:8vw; margin-left: 0.5vw;" placeholder="请输入作者" clearable />
<div class="selectRow">
<el-text class="text" size="large">文章/视频标题</el-text>
<el-input class="selectContent" v-model="beanConsumeArticle.articleName"
placeholder="请输入文章/视频标题" clearable/>
</div>
</div>
</el-col>
<el-col>
<div>
<el-text>付费时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 20vw;margin-right: 10px" @change="handleDatePickerChange"
<div class="select">
<div class="selectRow" style="width: 30.5vw;">
<el-text class="text" size="large">付费时间</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间"
end-placeholder="结束时间" style="width:25vw"
@change="handleDatePickerChange"
value-format="YYYY-MM-DD HH:mm:ss" :default-time="defaultTime"/>
<div v-if="false">
<el-button @click="getToday()" :type="activeTimeRange === 'today' ? 'primary' : ''"></el-button>
<el-button @click="getYesterday()" :type="activeTimeRange === 'yesterday' ? 'primary' : ''"></el-button>
<el-button @click="get7Days()" :type="activeTimeRange === '7days' ? 'primary' : ''">近7天</el-button>
</div>
</div>
<div class="selectRow">
<el-text class="text" size="large">作者</el-text>
<el-input class="selectContent" v-model="beanConsumeArticle.author" placeholder="请输入作者"
clearable/>
</div>
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
@ -648,4 +663,26 @@ const getTagText = (state) => {
display: flex;
margin-top: 20px;
}
/** 搜索的样式 */
.select {
display: flex;
.selectRow {
width: 17vw;
display: flex;
align-items: center;
justify-content: center;
padding: 0 0.5vw;
.text {
width: 5vw;
font-size: 15px;
}
.selectContent {
flex: 1;
}
}
}
</style>

14
src/views/consume/bean/beanConsume.vue

@ -2,7 +2,8 @@
<div style="height: 4vh;">
<el-button-group class="custom-button-group">
<el-button
:type="activeTab === 'addBeanConsume' ? 'primary' : 'default'" class="custom-tab-button"
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'addBeanConsume' }"
@click="navigateTo('addBeanConsume')"
v-if="hasAdd"
style="width: 6.5vw;"
@ -10,7 +11,8 @@
新增消耗
</el-button>
<el-button
:type="activeTab === 'liveStream' ? 'primary' : 'default'" class="custom-tab-button"
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'liveStream' }"
@click="navigateTo('liveStream')"
v-if="hasLive"
style="width: 6.5vw;"
@ -18,7 +20,8 @@
直播
</el-button>
<el-button
:type="activeTab === 'dieHardFan' ? 'primary' : 'default'" class="custom-tab-button"
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'dieHardFan' }"
@click="navigateTo('dieHardFan')"
v-if="hasFan"
style="width: 6.5vw;"
@ -26,7 +29,8 @@
铁粉
</el-button>
<el-button
:type="activeTab === 'articleVideo' ? 'primary' : 'default'" class="custom-tab-button"
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'articleVideo' }"
@click="navigateTo('articleVideo')"
v-if="hasArticleVideo"
style="width: 6.5vw;"
@ -116,7 +120,7 @@ onMounted(() => {
.custom-button-group {
display: flex;
margin-bottom: 16px;
gap: 8px;
// gap: 8px;
}
:deep(.el-button.custom-tab-button) {
border-radius: 4px;

70
src/views/consume/bean/dieHardFan.vue

@ -116,7 +116,6 @@ const getTime = ref({
const dept = ref([])
//
const sortField = ref('')
const sortOrder = ref('')
@ -258,7 +257,6 @@ const reset = function () {
beanConsumeFan.value.endTime = ''
sortField.value = ''
sortOrder.value = ''
getTime.value = {}
@ -468,35 +466,52 @@ const getTagText = (state) => {
</script>
<template>
<el-card class="card1" style="margin-bottom: 1vh;">
<el-col style="margin-bottom: 10px">
<el-text>精网号</el-text>
<el-input v-model="beanConsumeFan.jwcode" placeholder="请输入精网号" style="width: 200px;margin-right: 20px"
<el-card class="card1" style="margin-bottom: 0.5vh;">
<el-col style="margin-bottom: 1vh">
<div class="select">
<div class="selectRow">
<el-text class="text">精网号</el-text>
<el-input class="selectContent" v-model="beanConsumeFan.jwcode" placeholder="请输入精网号"
clearable/>
<el-text>地区</el-text>
<el-select v-model="beanConsumeFan.dept" placeholder="请选择地区" style="width: 200px;margin-right: 20px" clearable>
</div>
<div class="selectRow">
<el-text class="text">地区</el-text>
<el-select class="selectContent" v-model="beanConsumeFan.dept" placeholder="请选择地区"
clearable>
<el-option v-for="(item, index) in dept" :key="index" :label="item" :value="item"/>
</el-select>
<el-text>频道</el-text>
<el-select v-model="beanConsumeFan.channel" placeholder="请选择频道" style="width: 200px" clearable filterable >
</div>
<div class="selectRow">
<el-text class="text">频道</el-text>
<el-select class="selectContent" v-model="beanConsumeFan.channel" placeholder="请选择频道"
clearable filterable>
<el-option v-for="(item, index) in channels" :key="index" :label="item" :value="item"/>
</el-select>
</div>
</div>
</el-col>
<el-col>
<el-text>消费时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 400px;margin-right:20px" @change="handleDatePickerChange"
<div class="select">
<div class="selectRow" style="width: 36vw;">
<el-text class="text" size="large">消费时间</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间"
end-placeholder="结束时间" style="margin-right:1vw;width:25vw"
@change="handleDatePickerChange"
value-format="YYYY-MM-DD HH:mm:ss" :default-time="defaultTime"/>
<div v-if="false">
<el-button @click="getToday()" :type="activeTimeRange === 'today' ? 'primary' : ''"></el-button>
<el-button @click="getYesterday()" :type="activeTimeRange === 'yesterday' ? 'primary' : ''"></el-button>
<el-button @click="get7Days()" :type="activeTimeRange === '7days' ? 'primary' : ''">近7天</el-button>
</div>
</div>
<div class="selectRow" style="justify-content: flex-start;">
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
<el-button type="primary" @click="exportExcel()">导出Excel</el-button>
<el-button type="primary" @click="openExportList">查看导出列表</el-button>
</div>
</div>
</el-col>
</el-card>
<el-card class="card2">
@ -621,4 +636,27 @@ const getTagText = (state) => {
display: flex;
margin-top: 20px;
}
/** 搜索的样式 */
.select {
display: flex;
.selectRow {
width: 17vw;
display: flex;
align-items: center;
justify-content: center;
padding: 0 0.5vw;
.text {
width: 5vw;
font-size: 15px;
}
.selectContent {
flex: 1;
}
}
}
</style>

80
src/views/consume/bean/liveStream.vue

@ -260,7 +260,6 @@ const selectLiveBy = async function (val) {
totalNum.value = Number(data.totalNum) || 0;
//
total.value = result.data.total
console.log('total', total.value)
@ -337,8 +336,6 @@ const get7Days = function () {
}
//
const handleSortChange = (column) => {
console.log('排序字段:', column.prop)
@ -502,53 +499,64 @@ const getTagText = (state) => {
</script>
<template>
<el-card class="card1" style="margin-bottom: 1vh;">
<div style="margin-bottom: 1vh;display: flex;">
<div style="width: 18vw;margin-right: 1vw;display: flex;align-items: center;">
<el-text>精网号</el-text>
<el-input v-model="beanConsumeLive.jwcode" style="width:10vw;" placeholder="请输入精网号" clearable />
<el-card class="card1" style="margin-bottom: 0.5vh;">
<el-col style="margin-bottom: 1vh">
<div class="select">
<div class="selectRow">
<el-text class="text">精网号</el-text>
<el-input class="selectContent" v-model="beanConsumeLive.jwcode" placeholder="请输入精网号" clearable/>
</div>
<div style="margin-bottom: 1vh;width:18vw;display: flex;align-items: center;">
<el-text>地区</el-text>
<el-select v-model="beanConsumeLive.dept" placeholder="请选择地区" style="width:10vw" clearable>
<div class="selectRow">
<el-text class="text">地区</el-text>
<el-select class="selectContent" v-model="beanConsumeLive.dept" placeholder="请选择地区" clearable>
<el-option v-for="(item, index) in dept" :key="index" :label="item" :value="item"/>
</el-select>
</div>
<div style="margin-bottom: 1vh;width:18vw;display: flex;align-items: center;">
<el-text>礼物名称</el-text>
<el-select v-model="beanConsumeLive.gift" placeholder="请选择礼物名称" style="width:10vw"
<div class="selectRow">
<el-text class="text">礼物名称</el-text>
<el-select class="selectContent" v-model="beanConsumeLive.gift" placeholder="请选择礼物名称"
clearable filterable allow-create default-first-option>
<el-option v-for="(item, index) in gifts" :key="index" :label="item" :value="item"/>
</el-select>
</div>
<div style="margin-bottom: 1vh;width:18vw;display: flex;align-items: center;">
<el-text>频道</el-text>
<el-select v-model="beanConsumeLive.liveChannel" placeholder="请选择频道" style="width:10vw"
<div class="selectRow">
<el-text class="text">频道</el-text>
<el-select class="selectContent" v-model="beanConsumeLive.liveChannel" placeholder="请选择频道"
clearable filterable allow-create default-first-option>
<el-option v-for="(item, index) in channels" :key="index" :label="item" :value="item"/>
</el-select>
</div>
<div style="margin-bottom: 1vh;width:18vw;display: flex;align-items: center;">
<el-text>直播间</el-text>
<el-input v-model="beanConsumeLive.liveName" placeholder="请输入直播间" style="width:10vw"
<div class="selectRow">
<el-text class="text">直播间</el-text>
<el-input class="selectContent" v-model="beanConsumeLive.liveName" placeholder="请输入直播间"
clearable/>
</div>
</div>
<div>
<el-text>消费时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 20vw;margin-right: 1vw;" @change="handleDatePickerChange"
</el-col>
<el-col>
<div class="select">
<div class="selectRow" style="width: 31.5vw;">
<el-text class="text">消费时间</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间"
end-placeholder="结束时间" style="margin-right:1vw;width:480px"
@change="handleDatePickerChange"
:default-time="defaultTime"/>
<div v-if="false">
<el-button @click="getToday()" :type="activeTimeRange === 'today' ? 'primary' : ''"> </el-button>
<el-button @click="getYesterday()" :type="activeTimeRange === 'yesterday' ? 'primary' : ''"> </el-button>
<el-button @click="get7Days()" :type="activeTimeRange === '7days' ? 'primary' : ''"> 近7天</el-button>
</div>
</div>
<div class="selectRow" style="justify-content: flex-start;">
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
<el-button type="primary" @click="exportExcel()">导出excel</el-button>
<el-button type="primary" @click="openExportList">查看导出列表</el-button>
</div>
</div>
</el-col>
</el-card>
<el-card class="card2">
<div class="goldStatistics">
@ -671,4 +679,26 @@ const getTagText = (state) => {
display: flex;
margin-top: 20px;
}
/** 搜索的样式 */
.select {
display: flex;
.selectRow {
width: 17vw;
display: flex;
align-items: center;
justify-content: center;
padding: 0 0.5vw;
.text {
width: 5vw;
font-size: 15px;
}
.selectContent {
flex: 1;
}
}
}
</style>

22
src/views/consume/gold/coinConsume.vue

@ -1,13 +1,23 @@
<template>
<div style="height:4vh;width:82vw;">
<el-button-group class="custom-button-group">
<el-button :type="activeTab === 'coinConsumeDetail' ? 'primary' : 'default'" class="custom-tab-button"
@click="navigateTo('coinConsumeDetail')" v-if="hasDetail">
<div class="fatherTop">
<el-button-group>
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'coinConsumeDetail' }"
@click="navigateTo('coinConsumeDetail')"
v-if="hasDetail"
>
金币消耗明细
</el-button>
<el-button :type="activeTab === 'addCoinConsume' ? 'primary' : 'default'" class="custom-tab-button"
@click="navigateTo('addCoinConsume')" v-if="hasAdd">
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'addCoinConsume' }"
@click="navigateTo('addCoinConsume')"
v-if="hasAdd"
>
新增消耗
</el-button>
</el-button-group>

86
src/views/consume/gold/coinConsumeDetail.vue

@ -563,47 +563,77 @@ const getMarket = async function () {
<template>
<el-card class="card1" style="margin-bottom: 0.5vh;">
<div style="width:82vw;margin-bottom: 1vh;">
<el-text>精网号</el-text>
<el-input v-model="consumeUser.jwcode" placeholder="请输入精网号" style="width: 10vw;margin-right: 1vw;" clearable />
<el-text size="large">商品名称</el-text>
<el-select v-model="consumeUser.goodsName" placeholder="请选择商品名称" style="width: 10vw;margin-right: 1vw;" clearable
<el-col style="margin-bottom: 1vh">
<div class="select">
<div class="selectRow">
<el-text class="text">精网号</el-text>
<el-input class="selectContent" v-model="consumeUser.jwcode" placeholder="请输入精网号"
clearable/>
</div>
<div class="selectRow">
<el-text class="text" size="large">商品名称</el-text>
<el-select class="selectContent" v-model="consumeUser.goodsName" placeholder="请选择商品名称"
clearable
filterable>
<el-option v-for="(item, index) in goods" :key="index" :label="item.label" :value="item"/>
</el-select>
</div>
<el-text size="large">所属地区</el-text>
<el-cascader v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区" clearable
style="width: 10vw;margin-right: 1vw;" @change="handleMarketChange" />
<div class="selectRow">
<el-text class="text" size="large">所属地区</el-text>
<el-cascader class="selectContent" v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区"
clearable
@change="handleMarketChange"/>
</div>
<div class="selectRow">
<el-text size="large">消耗平台</el-text>
<el-select v-model="consumeUser.payPlatform" placeholder="请选择消耗平台" style="width: 10vw;margin-right: 1vw;"
<el-select class="selectContent" v-model="consumeUser.payPlatform" placeholder="请选择消耗平台"
clearable>
<el-option v-for="item in consumePlatform" :key="item.id" :label="item.label" :value="item.value"/>
</el-select>
</div>
<el-checkbox v-model="showEmployeeData" @change="search()">员工数据</el-checkbox>
</div>
<div>
<el-text size="large">消耗时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 20vw" @change="handleDatePickerChange" :default-time="defaultTime"
</el-col>
<el-col>
<div class="select">
<div class="selectRow" style="width: 36vw;">
<el-text class="text" size="large">消耗时间</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间"
end-placeholder="结束时间"
style="margin-right:1vw;width:25vw"
@change="handleDatePickerChange"
:default-time="defaultTime"
:disabled-date="disabledDate"/>
<el-button @click="getToday()" style="margin-left: 1vw" :type="activeTimeRange === 'today' ? 'primary' : ''">
<div v-if="false">
<el-button @click="getToday()" style="margin-left: 1vw"
:type="activeTimeRange === 'today' ? 'primary' : ''">
</el-button>
<el-button @click="getYesterday()" style="margin-left: 1vw"
:type="activeTimeRange === 'yesterday' ? 'primary' : ''">
</el-button>
<el-button @click="get7Days()" style="margin-left: 1vw" :type="activeTimeRange === '7days' ? 'primary' : ''">
<el-button @click="get7Days()" style="margin-left: 1vw"
:type="activeTimeRange === '7days' ? 'primary' : ''">
近7天
</el-button>
</div>
</div>
<div class="selectRow" style="justify-content: flex-start;">
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
<el-button type="primary" @click="exportExcel()">导出excel</el-button>
<el-button type="primary" @click="openExportList">查看导出列表</el-button>
</div>
</div>
</el-col>
</el-card>
<el-card class="card2">
<div class="goldStatistics">
@ -736,7 +766,6 @@ const getMarket = async function () {
}
//
.card1 {
background: #F3FAFE;
@ -778,4 +807,25 @@ const getMarket = async function () {
background-color: #E5EBFE !important;
}
/** 搜索的样式 */
.select {
display: flex;
.selectRow {
width: 17vw;
display: flex;
align-items: center;
justify-content: center;
padding: 0 0.5vw;
.text {
width: 5vw;
font-size: 15px;
}
.selectContent {
flex: 1;
}
}
}
</style>

32
src/views/managerecharge/rate.vue

@ -252,7 +252,7 @@ onMounted(async function () {
</script>
<template>
<el-card class="card1" style="width:82vw;height:85vh" v-if="hasrateShow">
<el-card class="card2" style="width:82vw;height:85vh" v-if="hasrateShow">
<el-table :data="tableData" v-if="(tableData.flag = 1)">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
@ -277,11 +277,11 @@ onMounted(async function () {
</el-table-column>
<el-table-column v-if="hasrateEdit" label="操作" :span="3">
<template #default="scope">
<el-button type="text" @click="() => {
<el-link :underline="false" class="edit-btn" @click="() => {
regeEdit = true
getEditData(scope.row)
}">编辑
</el-button>
</el-link>
</template>
</el-table-column>
</el-table>
@ -367,4 +367,30 @@ onMounted(async function () {
.rate-tip {
hyphens: auto;
}
/**表单的卡片样式**/
.card2 {
background: #E7F4FD;
}
/**表头背景等**/
:deep(.el-table__header-wrapper),
:deep(.el-table__body-wrapper),
:deep(.el-table__cell),
/* 表格 */
:deep(.el-table__body td) {
background-color: #F3FAFE !important;
}
/* 表头 */
:deep(.el-table__header th) {
background-color: #F3FAFE !important;
}
/* 鼠标悬停 */
:deep(.el-table__row:hover > .el-table__cell) {
background-color: #E5EBFE !important;
}
</style>

441
src/views/moneyManage/receiveDetail/receiveDetail.vue

@ -96,11 +96,13 @@
<el-table-column prop="market" label="所属地区" width="80px" />
<el-table-column prop="activity" label="活动名称" width="120px" />
<el-table-column prop="rateName" label="产品名称" width="120px" />
<el-table-column prop="money" label="付款币种" width="100px">
<el-table-column prop="rateNum" label="产品数量" width="120px" />
<el-table-column prop="moneyType" label="付款币种" width="100px">
</el-table-column>
<el-table-column prop="permanentGold" label="付款金额" width="120px">
</el-table-column>
<el-table-column prop="moneyType" label="到账币种" v-if="caiwu && activeTab == 'pass'" width="150px" ></el-table-column>
<el-table-column prop="getMoneyType" label="到账币种" v-if="caiwu && activeTab == 'pass'"
width="150px"></el-table-column>
<el-table-column prop="getMoney" label="到账金额" v-if="caiwu && activeTab == 'pass'" width="150px">
<template #default="scope">
<div v-if="!scope.row.getMoney">
@ -127,24 +129,51 @@
</div>
<div v-else
style="display: flex; justify-content: center; align-items: center; height: 40px;">
--
</div>
</template>
</el-table-column>
<el-table-column prop="bankOrder" label="银行流水订单号" v-if="caiwu && activeTab == 'pass'" width="150px" show-overflow-tooltip></el-table-column>
<el-table-column prop="submiter" label="提交人" width="150px" show-overflow-tooltip></el-table-column>
<el-table-column prop="auditor" label="审核人" v-if="caiwu && activeTab == 'pass'" width="150px" show-overflow-tooltip></el-table-column>
<el-table-column prop="mask" label="备注" width="150px" show-overflow-tooltip></el-table-column>
<el-table-column prop="getMoneyTime" label="到账时间" v-if="caiwu && activeTab == 'pass'" width="150px" show-overflow-tooltip>
<el-table-column prop="bankOrder" label="银行流水订单号" v-if="caiwu && activeTab == 'pass'"
width="150px" show-overflow-tooltip></el-table-column>
<el-table-column prop="submiter" label="提交人" width="150px"
show-overflow-tooltip></el-table-column>
<el-table-column prop="auditor" label="审核人" v-if="caiwu && activeTab == 'pass' || 'reject'"
width="150px" show-overflow-tooltip></el-table-column>
<el-table-column prop="mask" label="备注" v-if="activeTab != 'reject'" width="150px"
show-overflow-tooltip></el-table-column>
<el-table-column prop="rejectTime" label="驳回时间" v-if="activeTab == 'reject' && !kefu"
width="150px" show-overflow-tooltip></el-table-column>
<el-table-column prop="rejectReason" label="驳回理由" v-if="activeTab == 'reject' && !kefu"
width="150px">
<template #default="scope">
<div class="ellipsis-container"
@mouseenter="handleMouseEnter($event, scope.row.rejectReason)"
@mouseleave="handleMouseLeave" @mousemove="handleMouseMove($event)">
<span class="ellipsis-text">
{{ scope.row.rejectReason || '—' }}
</span>
<!-- 自定义提示框 -->
<div v-if="showTooltip && tooltipContent" class="custom-tooltip" :style="{
left: `${tooltipLeft}px`,
top: `${tooltipTop}px`
}">
{{ tooltipContent }}
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="getMoneyTime" label="到账时间" v-if="caiwu && activeTab == 'pass'"
width="150px">
</el-table-column>
<el-table-column v-if="kefu" fixed="right" prop="orderStatus" label="订单状态" width="100px" />
<el-table-column fixed="right" label="操作" width="100px" v-if="activeTab != 'reject'">
<template #default=scope>
<span v-if="kefu && scope.row.orderStatus == '已通过'" style="color: #FA5A1E;">退款</span>
<span v-else-if="kefu && scope.row.orderStatus == '已撤回'"
style="color: #2741DE;">编辑</span>
<span v-else-if="kefu && scope.row.orderStatus == '待审核'"
style="color: #FA5A1E;">撤回</span>
<span v-if="kefu && scope.row.orderStatus == '已通过'" style="color: #FA5A1E;" @click="openRecall('refund')">退款</span>
<span v-else-if="kefu && scope.row.orderStatus == '已撤回'" style="color: #2741DE;"
@click="openAddForm(scope.row)">编辑</span>
<span v-else-if="kefu && scope.row.orderStatus == '待审核'" style="color: #FA5A1E;"
@click="openRecall('recall')">撤回</span>
<span v-else-if="activeTab == 'wait' && !kefu" style="color: #2741DE;"
@click="openAuditForm">审核</span>
<span v-else-if="activeTab == 'pass' && !kefu" style="color: #2741DE;"
@ -161,10 +190,24 @@
</div>
</el-card>
</div>
<div class="recallDialog" v-show="recallDialog">
<div class="close">
<button @click="closeRecall" class="Btn">关闭</button>
</div>
<div class="text">
<text class="txt">{{ textContent }}</text>
</div>
<div class="cancle">
<button @click="closeRecall" class="Btn">取消</button>
</div>
<div class="confirm">
<button class="Btn">确定</button>
</div>
</div>
<el-dialog class="adddialog" v-model="addFormisible" width="20vw" :before-close="closeAddForm">
<el-form class="addForm" label-width="4vw" label-position="left">
<el-form-item label="精网号" required>
<el-input v-model="addFormData.jwcode" placeholder="请输入驳回理由" />
<el-input v-model="addFormData.jwcode" placeholder="请输入精网号" />
</el-form-item>
<el-form-item label="客户姓名" required>
<el-input v-model="addFormData.userName" placeholder="请输入客户姓名" />
@ -176,10 +219,19 @@
<el-input v-model="addFormData.jwcode" placeholder="请输入活动名称" />
</el-form-item>
<el-form-item label="产品名称" required>
<el-select placeholder="请选择产品名称" clearable></el-select>
<el-select placeholder="请选择产品名称" v-model="addFormData.rateName" clearable>
</el-select>
</el-form-item>
<el-form-item label="产品数量" required>
<div style="padding-right: 50px; display: flex;">
<el-input style="padding-right: 10px;" v-model="addFormData.rateNum" placeholder="请输入产品数量" />
<span style="color: #999999;"></span>
</div>
</el-form-item>
<el-form-item label="付款币种" required>
<el-select placeholder="请选择付款币种" clearable></el-select>
<el-select placeholder="请选择付款币种" v-model="addFormData.moneyType" clearable>
<el-option v-for="item in payModel" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="付款金额" required>
<el-input v-model="addFormData.jwcode" placeholder="请输入付款金额" />
@ -188,9 +240,11 @@
<el-select placeholder="请选择支付方式" clearable></el-select>
</el-form-item>
<el-form-item label="付款时间" required>
<el-time-picker v-model="addFormData.time" placeholder="请选择付款时间" />
<el-date-picker type="datetime" placement="right" v-model="addFormData.time"
placeholder="请选择付款时间" />
</el-form-item>
<el-form-item label="转账凭证" required>
<div class="pic">
<el-upload ref="uploadRef" class="uploader" :show-file-list="false" list-type="picture-card"
:auto-upload="false" :before-upload="beforeUpload" :on-error="handelImgErr"
:on-change="handleImageChange" :http-request="customUpload">
@ -200,6 +254,7 @@
<Plus />
</el-icon>
</el-upload>
</div>
</el-form-item>
<el-form-item label="备注" required>
<el-input v-model="addFormData.mask" type="textarea" :rows="4" placeholder="请输入备注" maxlength="100"
@ -233,7 +288,9 @@
<el-select placeholder="请选择产品名称" clearable></el-select>
</el-form-item>
<el-form-item label="付款币种">
<el-select placeholder="请选择付款币种" clearable></el-select>
<el-select placeholder="请选择付款币种" v-model="auditFormData.moneyType" clearable>
<el-option v-for="item in payModel" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="付款金额">
<el-input v-model="auditFormData.jwcode" placeholder="请输入付款金额" />
@ -242,7 +299,7 @@
<el-select placeholder="请选择支付方式" clearable></el-select>
</el-form-item>
<el-form-item label="付款时间">
<el-time-picker v-model="auditFormData.time" placeholder="请选择付款时间" />
<el-date-picker type="datetime" v-model="auditFormData.time" placeholder="请选择付款时间" />
</el-form-item>
<el-form-item label="转账凭证">
<div class="pic">
@ -306,7 +363,10 @@
<el-select placeholder="请选择产品名称" clearable></el-select>
</el-form-item>
<el-form-item label="付款币种">
<el-select placeholder="请选择付款币种" clearable></el-select>
<el-select placeholder="请选择付款币种" clearable>
<el-option v-for="item in payModel" :key="item.value" :label="item.label"
:value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="付款金额">
<el-input v-model="editFormData.jwcode" placeholder="请输入付款金额" />
@ -315,7 +375,7 @@
<el-select placeholder="请选择支付方式" clearable></el-select>
</el-form-item>
<el-form-item label="付款时间">
<el-time-picker v-model="editFormData.time" placeholder="请选择付款时间" />
<el-date-picker type="datetime" v-model="editFormData.time" placeholder="请选择付款时间" />
</el-form-item>
<el-form-item label="转账凭证">
<div class="pic">
@ -359,12 +419,12 @@
</el-form-item>
</el-form>
<span class="editBtns">
<button class="editBtn1">
<button class="editBtn1" @click="closeEditForm">
<text class="txt">
取消
</text>
</button>
<button class="editBtn2">
<button class="editBtn2" @click="submitEditForm">
<text class="txt">
提交
</text>
@ -414,14 +474,35 @@ const addFormisible = ref(false)
const uploadRef = ref()
const openAddForm = () => {
const openAddForm = (row) => {
if (row) {
addFormData.value = row
}
addFormisible.value = true
}
const closeAddForm = () => {
addFormisible.value = false
addFormData.value = {}
}
//
const textContent = ref('')
const recallDialog = ref(false)
const openRecall = (val) => {
console.log('打开弹窗',val);
if(val == 'refund'){
textContent.value = '将要对该订单退款!'
}
if(val == 'recall'){
textContent.value = '将要撤回该信息!'
}
recallDialog.value = true
}
const closeRecall = () => {
recallDialog.value = false
textContent.value = ''
}
//
const handleImgSuccess = (response, uploadFile) => {
try {
console.log('11', response)
@ -492,6 +573,10 @@ const closeEditForm = () => {
editFormisible.value = false
editFormData.value = {}
}
//
const submitEditForm = () => {
}
//================== =========================
const auditFormData = ref({
@ -536,130 +621,192 @@ const pageInfo = ref({
pageSize: 10,
pageNum: 1
})
const total = ref(0)
// ============ ===========================
//
const showTooltip = ref(false);
const tooltipContent = ref('');
const tooltipLeft = ref(0);
const tooltipTop = ref(0);
const tooltipWidth = 200;
//
const handleMouseEnter = (e, content) => {
if (content) {
showTooltip.value = true;
tooltipContent.value = content;
handleMouseMove(e);
}
};
//
const handleMouseLeave = () => {
showTooltip.value = false;
tooltipContent.value = '';
};
//
const handleMouseMove = (e) => {
// X - -
tooltipLeft.value = e.clientX - tooltipWidth - 10;
// Y
tooltipTop.value = e.clientY - 10;
};
const tableData = [
{
"jwcode": "HM2024001",
"jwcode": "HM20240601",
"name": "张三",
"market": "华东区",
"activity": "2024春季促销活动",
"activity": "2024年中促销",
"rateName": "年度会员套餐A",
"money": "人民币",
"permanentGold": 2980.00,
"moneyType": "人民币",
"permanentGold": 2980.00,
"getMoneyType": "人民币",
"getMoney": 2980.00,
"shouxufei": 59.60,
"pastType": "支付宝转账",
"remark": "2024-05-10 09:23",
"voucher": "https://example.com/voucher/1.jpg",
"payModel": "https://example.com/icon/alipay.png",
"bankOrder": "ALIPAY2024051000001",
"remark": "2024-06-01 09:30",
"voucher": "https://mock-img.com/voucher/2024060101.jpg",
"payModel": "https://mock-img.com/icon/alipay.png",
"bankOrder": "ALIPAY202406010001",
"submiter": "李四(运营部)",
"auditor": "王五(财务部)",
"mask": "客户主动购买,无特殊备注",
"getMoneyTime": "2024-05-10 10:05",
"orderStatus": "已通过"
"mask": "客户主动购买,无特殊需求",
"rejectTime": null,
"rejectReason": null,
"getMoneyTime": "2024-06-01 10:15",
"orderStatus": "已撤回"
},
{
"jwcode": "HM2024002",
"jwcode": "HM20240602",
"name": "李四",
"market": "华北区",
"activity": "新客首单优惠",
"rateName": "季度体验套餐B",
"money": "美元",
"moneyType": "美元",
"permanentGold": 99.00,
"moneyType": "人民币",
"getMoney": 712.00,
"shouxufei": 14.24,
"getMoneyType": "人民币",
"getMoney": 712.50,
"shouxufei": 14.25,
"pastType": "PayPal",
"remark": "2024-05-11 14:56",
"voucher": "https://example.com/voucher/2.jpg",
"payModel": "https://example.com/icon/paypal.png",
"bankOrder": "PAYPAL2024051100002",
"remark": "2024-06-02 14:15",
"voucher": "https://mock-img.com/voucher/2024060201.jpg",
"payModel": "https://mock-img.com/icon/paypal.png",
"bankOrder": "PAYPAL202406020001",
"submiter": "赵六(国际部)",
"auditor": "孙七(财务部)",
"mask": "跨境支付,汇率按当日中间价计算",
"getMoneyTime": "2024-05-12 08:30",
"orderStatus": "待审核"
"rejectTime": null,
"rejectReason": null,
"getMoneyTime": "2024-06-02 16:40",
"orderStatus": "已通过"
},
{
"jwcode": "HM2024003",
"jwcode": "HM20240603",
"name": "王五",
"market": "华南区",
"activity": "老客召回活动",
"rateName": "月度续费套餐C",
"money": "人民币",
"permanentGold": 399.00,
"moneyType": "人民币",
"permanentGold": 399.00,
"getMoneyType": null,
"getMoney": null,
"shouxufei": null,
"pastType": "微信支付",
"remark": "2024-05-12 11:18",
"voucher": "https://example.com/voucher/3.jpg",
"payModel": "https://example.com/icon/wechat.png",
"bankOrder": "WECHAT2024051200003",
"remark": "2024-06-03 11:20",
"voucher": "https://mock-img.com/voucher/2024060301.jpg",
"payModel": "https://mock-img.com/icon/wechat.png",
"bankOrder": null,
"submiter": "钱八(客服部)",
"auditor": null,
"mask": "到账信息待财务补充",
"mask": "待财务补充到账信息",
"rejectTime": null,
"rejectReason": null,
"getMoneyTime": null,
"orderStatus": "已撤回"
"orderStatus": "待审核"
},
{
"jwcode": "HM2024004",
"jwcode": "HM20240604",
"name": "赵六",
"market": "西区",
"activity": "企业团购活动",
"rateName": "企业定制套餐D",
"money": "人民币",
"permanentGold": 15800.00,
"moneyType": "人民币",
"getMoney": 15800.00,
"shouxufei": 316.00,
"permanentGold": 15800.00,
"getMoneyType": null,
"getMoney": null,
"shouxufei": null,
"pastType": "银行对公转账",
"remark": "2024-05-13 09:45",
"voucher": "https://example.com/voucher/4.jpg",
"payModel": "https://example.com/icon/bank.png",
"bankOrder": "BANK2024051300004",
"remark": "2024-06-04 09:05",
"voucher": null,
"payModel": null,
"bankOrder": null,
"submiter": "周九(销售部)",
"auditor": "吴十(财务部)",
"mask": "10人企业团单,享受95折优惠",
"getMoneyTime": "2024-05-13 11:20",
"orderStatus": "已通过"
"mask": null,
"rejectTime": "2024-06-04 10:30",
"rejectReason": "未上传转账凭证,需补充后重新提交",
"getMoneyTime": null,
"orderStatus": "已驳回"
},
{
"jwcode": "HM2024005",
"jwcode": "HM20240605",
"name": "孙七",
"market": "东北区",
"activity": "节日特惠活动",
"rateName": "年度会员套餐A",
"money": "人民币",
"permanentGold": 2780.00,
"moneyType": "人民币",
"permanentGold": 2780.00,
"getMoneyType": "人民币",
"getMoney": 2780.00,
"shouxufei": 55.60,
"pastType": "银联支付",
"remark": "2024-05-14 15:30",
"voucher": null,
"payModel": null,
"bankOrder": "UNIONPAY2024051400005",
"remark": "2024-06-05 15:40",
"voucher": "https://mock-img.com/voucher/2024060501.jpg",
"payModel": "https://mock-img.com/icon/unionpay.png",
"bankOrder": "UNION202406050001",
"submiter": "郑一(市场部)",
"auditor": "王二(财务部)",
"mask": "凭证暂未上传,已提醒客户补充",
"getMoneyTime": "2024-05-14 16:45",
"orderStatus": "待审核"
"mask": "客户使用节日优惠券,已核减200元",
"rejectTime": null,
"rejectReason": null,
"getMoneyTime": "2024-06-05 16:25",
"orderStatus": "已通过"
},
{
"jwcode": "HM20240606",
"name": "周八",
"market": "华北区",
"activity": "新客首单优惠",
"rateName": "季度体验套餐B",
"moneyType": "人民币",
"permanentGold": 359.00,
"getMoneyType": null,
"getMoney": null,
"shouxufei": null,
"pastType": "微信支付",
"remark": "2024-06-06 13:10",
"voucher": "https://mock-img.com/voucher/2024060601.jpg",
"payModel": "https://mock-img.com/icon/wechat.png",
"bankOrder": null,
"submiter": "吴九(客服部)",
"auditor": "郑十(财务部)",
"mask": null,
"rejectTime": "2024-06-06 14:00",
"rejectReason": "付款金额与订单金额不符(订单359元,实付349元)",
"getMoneyTime": null,
"orderStatus": "已驳回"
}
]
</script>
<style scoped lang="scss">
.content { //
.content {
//
height: 100%;
width: 83vw;
.div-card1 { //
.card1 {
//
width: 100%;
.row {
@ -691,7 +838,8 @@ const tableData = [
margin-top: 2vh;
.btns { //
.btns {
//
display: flex;
align-items: center;
justify-content: space-between;
@ -708,7 +856,7 @@ const tableData = [
.btnAdd {
margin-right: 5vw;
padding-left: 10px;
padding-left: 50px;
}
}
@ -717,6 +865,41 @@ const tableData = [
.table {
margin: 10px 3vw;
border-radius: 20px;
.ellipsis-container {
//
position: relative;
width: 100%;
.ellipsis-text {
display: inline-block;
width: 100%;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
cursor: pointer;
}
.custom-tooltip {
position: fixed;
z-index: 9999;
padding: 8px 12px;
width: 200px;
/* 固定宽度 */
background-color: #E4F0FC;
color: #333333;
border: 1px solid #e5e7eb;
border-radius: 4px;
box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1);
/* 高度随内容自动适应 */
min-height: 30px;
max-height: 300px;
/* 限制最大高度,超出滚动 */
overflow-y: auto;
font-size: 14px;
line-height: 1.5;
}
}
}
.pagination {
@ -725,7 +908,84 @@ const tableData = [
}
}
:deep(.adddialog) { //
.recallDialog {
//
height: 392px;
width: 700px;
background-image: url('/src/assets/收款明细撤回背景.png');
position: fixed; //
top: 50%; // 50%
left: 50%; // 50%
transform: translate(-50%, -50%); // 50%
z-index: 1000; //
.close {
position: absolute;
left: 625px;
top: 20px;
height: 38px;
width: 38px;
opacity: 0;
.Btn {
height: 100%;
width: 100%;
border-radius: 10px;
}
}
.text {
position: absolute;
left: 185px;
top: 190px;
height: 67px;
width: 500px;
.txt {
height: 100%;
width: 100%;
color: #001a42;
font-family: "PingFang SC";
font-size: 48px;
font-style: normal;
font-weight: 900;
line-height: normal;
}
}
.cancle {
position: absolute;
left: 185px;
top: 304px;
height: 55px;
width: 150px;
opacity: 0;
.Btn {
height: 100%;
width: 100%;
border-radius: 20px;
}
}
.confirm {
position: absolute;
left: 375px;
top: 304px;
height: 55px;
width: 150px;
opacity: 0;
.Btn {
height: 100%;
width: 100%;
border-radius: 20px;
}
}
}
:deep(.adddialog) {
//
min-width: 500px;
background-color: #F3FAFE !important;
margin-top: 8vh;
@ -775,7 +1035,8 @@ const tableData = [
}
}
:deep(.editdialog) { //
:deep(.editdialog) {
//
min-width: 990px;
background-color: #F3FAFE !important;
margin-top: 8vh;
@ -817,7 +1078,8 @@ const tableData = [
}
.content { //
.content {
//
display: flex;
height: 100%;
width: 100%;
@ -912,7 +1174,8 @@ const tableData = [
}
:deep(.adddialog .el-form-item__label) { //
:deep(.adddialog .el-form-item__label) {
//
min-width: 80px;
width: auto;
font-weight: 800;

52
src/views/permissions/userPermission.vue

@ -8,6 +8,7 @@ import API from '@/util/http'
import {useAdminStore} from "@/store/index.js"
import {storeToRefs} from "pinia"
import {findMenuById, permissionMapping} from "@/utils/menuTreePermission.js"
const adminStore = useAdminStore()
const {adminData, menuTree} = storeToRefs(adminStore)
@ -918,7 +919,8 @@ onMounted(async function () {
</div>
<div class="head-card-element" style="margin-left: 50px">
<el-text class="mx-1" size="large">所属地区</el-text>
<el-cascader v-model="admin.market" :options="marketsTree" placeholder="请选择所属地区" clearable style="width:180px"
<el-cascader v-model="admin.market" :options="marketsTree" placeholder="请选择所属地区" clearable
style="width:180px"
@change="handleMarketChange"/>
</div>
@ -938,7 +940,9 @@ onMounted(async function () {
<el-card class="card2">
<!-- 展示表单 -->
<div class="add-item">
<el-button style="color: #048efb; border: 1px solid #048efb" :disabled="!canAdd" v-if="canAdd" @click="userAddInit()">新增用户</el-button>
<el-button style="color: #048efb; border: 1px solid #048efb" :disabled="!canAdd" v-if="canAdd"
@click="userAddInit()">新增用户
</el-button>
</div>
<div>
@ -985,7 +989,8 @@ onMounted(async function () {
</el-table-column>
<el-table-column prop="adminStatus" label="状态">
<template #default="scope">
<el-switch :model-value="scope.row.adminStatus" :active-value="1" :inactive-value="0" size="large" v-if="change"
<el-switch :model-value="scope.row.adminStatus" :active-value="1" :inactive-value="0" size="large"
v-if="change"
:disabled="!change || scope.row.account === adminData.account || statusLoading[scope.row.id]"
@change="(targetStatus) => showStatusConfirm(scope.row, targetStatus)" style="
--el-switch-on-color: #13ce66;
@ -996,7 +1001,8 @@ onMounted(async function () {
</el-table>
<div class="pagination" style="margin-top: 1vh;">
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"></el-pagination>
</div>
</div>
@ -1018,8 +1024,10 @@ onMounted(async function () {
</el-form-item>
<el-form-item prop="market" label="所属地区:" required clearable>
<el-cascader v-model="addAdmin.market" :options="marketsTree" placeholder="请选择所属地区" clearable collapse-tags
collapse-tags-tooltip style="width:220px" @change="handleMarketChangeAddUser" :max-collapse-tags="2"
<el-cascader v-model="addAdmin.market" :options="marketsTree" placeholder="请选择所属地区" clearable
collapse-tags
collapse-tags-tooltip style="width:220px" @change="handleMarketChangeAddUser"
:max-collapse-tags="2"
:props="addUserProps"/>
</el-form-item>
<el-form-item prop="permission" label="角色名称:" required>
@ -1075,7 +1083,8 @@ onMounted(async function () {
<el-input v-model="permissionEditObj.postiton" placeholder="请输入职位" style="width: 220px" clearable/>
</el-form-item>
<el-form-item prop="roleName" label="角色名称:">
<el-select v-model="permissionEditObj.roleId" placeholder="请选择角色" style="width: 220px" @change="getUserLists">
<el-select v-model="permissionEditObj.roleId" placeholder="请选择角色" style="width: 220px"
@change="getUserLists">
<el-option v-for="item in permissionList" :key="item.value" :label="item.label"
:value="item.value"></el-option>
</el-select>
@ -1090,7 +1099,8 @@ onMounted(async function () {
</el-form-item>
<el-form-item prop="permissionSelect" label="权限列表:">
<el-tree v-if="data.length > 0" :data="data" :disabled="true" show-checkbox node-key="id"
:props="{ label: 'menuName', children: 'children' }" :default-checked-keys="permissionEditObj.checkedKeys">
:props="{ label: 'menuName', children: 'children' }"
:default-checked-keys="permissionEditObj.checkedKeys">
</el-tree>
<div v-else style="display: flex; align-items: center; gap: 8px;">
<span style="color: #999;">暂无数据</span>
@ -1142,22 +1152,29 @@ onMounted(async function () {
</template>
</el-dialog>
<el-dialog v-model="ackVisible" :title="currentStatusRow?.adminStatus === 1 ? '确认禁用' : '确认启用'" width="300px"
<el-dialog v-model="ackVisible" width="700px"
:close-on-click-modal="false"
:style="{
backgroundImage: 'url(/src/assets/SvgIcons/背景.svg',
backgroundSize: 'cover',
backgroundPosition: 'center',
height:'400px'
}"
@close="() => { if (currentStatusRow) currentStatusRow.adminStatus = currentStatusRow.adminStatus === 1 ? 0 : 1 }">
<div class="status-confirm-content">
确定要{{ currentStatusRow?.adminStatus === 1 ? '禁用' : '启用' }}该用户吗
<div class="status-confirm-content"
>
将要{{ currentStatusRow?.adminStatus === 1 ? '禁用' : '启用' }}该用户
<br>
</div>
<template #footer>
<div style="display: flex;">
<el-button @click="() => {
<div style="display: flex; justify-content: center; gap: 10px;">
<el-button round size="large" @click="() => {
currentStatusRow.adminStatus = currentStatusRow.adminStatus === 1 ? 0 : 1
ackVisible = false
}">
取消
</el-button>
<el-button type="primary" @click="() => {
<el-button round size="large" type="primary" @click="() => {
editStatus(currentStatusRow)
ackVisible = false
}">
@ -1216,4 +1233,11 @@ onMounted(async function () {
.head-card-btn {
margin-left: auto;
}
.status-confirm-content {
text-align: center;
margin-top: 160px;
margin-bottom: 30px;
font-size: 48px;
}
</style>

83
src/views/recharge/bean/beanOnlineRecharge.vue

@ -350,40 +350,64 @@ onMounted(async function () {
</script>
<template>
<el-card class="card1" style="margin-bottom: 0.5vh;">
<div>
<el-text size="large">精网号</el-text>
<el-input v-model="selectData.jwcode" placeholder="请输入精网号" style="width: 10vw;margin-right: 1vw;" clearable />
<el-text size="large">所属地区</el-text>
<el-select v-model="selectData.market" placeholder="请选择所属地区" clearable style="width: 10vw;margin-right: 1vw;">
<el-col style="margin-bottom: 1vh">
<div class="select">
<div class="selectRow">
<el-text class="text" size="large">精网号</el-text>
<el-input class="selectContent" v-model="selectData.jwcode" placeholder="请输入精网号"
clearable/>
</div>
<div class="selectRow">
<el-text class="text" size="large">所属地区</el-text>
<el-select class="selectContent" v-model="selectData.market" placeholder="请选择所属地区" clearable
>
<el-option v-for="item in market" :key="item" :label="item" :value="item"/>
</el-select>
<el-text size="large">订单号</el-text>
<el-input v-model="selectData.orderNo" placeholder="请输入订单号" style="width: 10vw;margin-right: 1vw;" clearable />
<el-text size="large">充值平台</el-text>
<el-select v-model="selectData.platform" placeholder="请选择充值平台" clearable style="width: 10vw;margin-right: 1vw;">
</div>
<div class="selectRow">
<el-text class="text" size="large">订单号</el-text>
<el-input class="selectContent" v-model="selectData.orderNo" placeholder="请输入订单"
clearable/>
</div>
<div class="selectRow">
<el-text class="text" size="large">充值平台</el-text>
<el-select class="selectContent" v-model="selectData.platform" placeholder="请选择充值平台" clearable
>
<el-option v-for="item in platform" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</div>
<div style="margin-top: 0.5vh;">
<el-text size="large">充值时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 20vw" @change="handleDatePickerChange" :default-time="defaultTime" />
<el-button @click="getToday()" style="margin-left: 10px" :type="activeTimeRange === 'today' ? 'primary' : ''">
</div>
</el-col>
<el-col>
<div class="select">
<div class="selectRow" style="width: 36vw;">
<el-text class="text" size="large">充值时间</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间"
end-placeholder="结束时间" style="margin-right:1vw;width:25vw"
@change="handleDatePickerChange"
:default-time="defaultTime"/>
<div v-if="false">
<el-button @click="getToday()" style="margin-left: 10px"
:type="activeTimeRange === 'today' ? 'primary' : ''">
</el-button>
<el-button @click="getYesterday()" style="margin-left: 10px"
:type="activeTimeRange === 'yesterday' ? 'primary' : ''">
</el-button>
<el-button @click="get7Days()" style="margin-left: 10px" :type="activeTimeRange === '7days' ? 'primary' : ''"> 近7天
<el-button @click="get7Days()" style="margin-left: 10px"
:type="activeTimeRange === '7days' ? 'primary' : ''">
近7天
</el-button>
</div>
</div>
<div class="selectRow" style="justify-content: flex-start;">
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
<el-button type="primary" @click="exportExcel()">导出Excel</el-button>
<el-button type="primary" @click="openExportList">查看导出列表</el-button>
</div>
</div>
</el-col>
</el-card>
<el-card class="card2">
<div class="goldStatistics">
@ -503,4 +527,25 @@ onMounted(async function () {
background-color: #E5EBFE !important;
}
/** 搜索的样式 */
.select {
display: flex;
.selectRow {
width: 17vw;
display: flex;
align-items: center;
justify-content: center;
padding: 0 0.5vw;
.text {
width: 5vw;
font-size: 15px;
}
.selectContent {
flex: 1;
}
}
}
</style>

28
src/views/recharge/bean/beanRecharge.vue

@ -1,16 +1,28 @@
<template>
<div style="height: 4vh;">
<el-button-group class="custom-button-group">
<el-button :type="activeTab === 'addBeanRecharge' ? 'primary' : 'default'" class="custom-tab-button"
@click="navigateTo('addBeanRecharge')" v-if="hasAdd" style="width: 6.5vw">
<div class="father">
<el-button-group>
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'addBeanRecharge' }"
@click="navigateTo('addBeanRecharge')"
v-if="hasAdd"
style="width: 6.5vw">
新增充值
</el-button>
<el-button :type="activeTab === 'beanSystemRecharge' ? 'primary' : 'default'" class="custom-tab-button"
@click="navigateTo('beanSystemRecharge')" v-if="hasSystem" style="width: 6.5vw;">
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'beanSystemRecharge' }"
@click="navigateTo('beanSystemRecharge')"
v-if="hasSystem"
style="width: 6.5vw;">
系统充值
</el-button>
<el-button :type="activeTab === 'beanOnlineRecharge' ? 'primary' : 'default'" class="custom-tab-button"
@click="navigateTo('beanOnlineRecharge')" v-if="hasOnline" style="width: 6.5vw;">
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'beanOnlineRecharge' }"
@click="navigateTo('beanOnlineRecharge')"
v-if="hasOnline"
style="width: 6.5vw;">
线上充值
</el-button>
</el-button-group>

55
src/views/recharge/bean/beanSystemRecharge.vue

@ -6,6 +6,7 @@ import { AiFillRead } from 'vue-icons-plus/ai'
import axios from 'axios'
import moment from 'moment'
import API from '@/util/http.js'
const selectData = ref({
jwcode: '',
market: '',
@ -336,20 +337,30 @@ onMounted(async function () {
</script>
<template>
<el-card class="card1" style="margin-bottom: 0.5vh">
<div>
<el-text size="large">精网号</el-text>
<el-input v-model="selectData.jwcode" placeholder="请输入精网号" style="width: 9vw;margin-right:1vw" clearable />
<el-text size="large">所属地区</el-text>
<el-select v-model="selectData.market" placeholder="请选择所属地区" clearable style="width: 9vw;margin-right:1vw">
<el-col style="margin-bottom: 1vh">
<div class="select">
<div class="selectRow">
<el-text class="text" size="large">精网号</el-text>
<el-input class="selectContent" v-model="selectData.jwcode" placeholder="请输入精网号"
clearable/>
</div>
<div class="selectRow">
<el-text class="text" size="large">所属地区</el-text>
<el-select class="selectContent" v-model="selectData.market" placeholder="请选择所属地区" clearable>
<el-option v-for="item in market" :key="item" :label="item" :value="item"/>
</el-select>
</div>
<div style="margin-top: 1vh;">
<el-text size="large">充值时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 20vw" @change="handleDatePickerChange"
</div>
</el-col>
<el-col>
<div class="select">
<div class="selectRow" style="width: 36vw;">
<el-text class="text" size="large">充值时间</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间"
end-placeholder="结束时间" style="margin-right:1vw;width:25vw" @change="handleDatePickerChange"
:default-time="defaultTime"/>
<div v-if="false">
<el-button @click="getToday()" style="margin-left: 10px"
:type="activeTimeRange === 'today' ? 'primary' : ''">
</el-button>
@ -360,11 +371,14 @@ onMounted(async function () {
:type="activeTimeRange === '7days' ? 'primary' : ''">
近7天
</el-button>
</div>
</div>
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
<el-button type="primary" style="width: 80px;" @click="exportExcel()">导出Excel</el-button>
<el-button type="primary" style="width: 95px;" @click="openExportList">查看导出列表</el-button>
</div>
</el-col>
</el-card>
<el-card class="card2">
<div class="goldStatistics">
@ -485,5 +499,26 @@ onMounted(async function () {
background-color: #E5EBFE !important;
}
/** 搜索的样式 */
.select {
display: flex;
.selectRow {
width: 17vw;
display: flex;
align-items: center;
justify-content: center;
padding: 0 0.5vw;
.text {
width: 5vw;
font-size: 15px;
}
.selectContent {
flex: 1;
}
}
}
</style>

13
src/views/recharge/gold/coinRecharge.vue

@ -1,11 +1,16 @@
<template>
<div style="height:4vh;">
<el-button-group class="custom-button-group">
<el-button :type="activeTab === 'coinRechargeDetail' ? 'primary' : 'default'" class="custom-tab-button"
@click="navigateTo('coinRechargeDetail')" v-if="hasDetail">
<el-button-group>
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'coinRechargeDetail' }"
@click="navigateTo('coinRechargeDetail')"
v-if="hasDetail">
金币充值明细
</el-button>
<el-button :type="activeTab === 'addCoinRecharge' ? 'primary' : 'default'" class="custom-tab-button" @click="navigateTo('addCoinRecharge')"
<el-button class="no-active-btn"
:class="{ 'active-btn': activeTab === 'addCoinRecharge' }"
@click="navigateTo('addCoinRecharge')"
v-if="hasAdd">
新增充值
</el-button>

84
src/views/recharge/gold/coinRechargeDetail.vue

@ -49,8 +49,6 @@ const rechargeUser = ref({
})
/*//处理地区选择变化
const handleMarketChange = (value) => {
if (Array.isArray(value) && value.length > 0) {
@ -587,45 +585,68 @@ const getTagText = (state) => {
<template>
<el-card class="card1" style="margin-bottom: 0.5vh">
<div style="margin-bottom: 0.5vh;">
<el-text size="large">精网号</el-text>
<el-input v-model="rechargeUser.jwcode" placeholder="请输入精网号" style="width: 10vw;margin-right: 1vw;" clearable />
<el-text size="large">活动名称</el-text>
<el-select v-model="rechargeUser.activity" placeholder="请选择活动名称" style="width: 10vw;margin-right: 1vw;" clearable>
<el-col style="margin-bottom: 1vh">
<div class="select">
<div class="selectRow">
<el-text class="text" size="large">精网号</el-text>
<el-input class="selectContent" v-model="rechargeUser.jwcode" placeholder="请输入精网号"
clearable/>
</div>
<div class="selectRow">
<el-text class="text" size="large">活动名称</el-text>
<el-select class="selectContent" v-model="rechargeUser.activity" placeholder="请选择活动名称"
clearable>
<el-option v-for="item in activity" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
<el-text size="large">所属地区</el-text>
<el-cascader v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区" clearable style="width: 10vw;margin-right: 1vw;"
</div>
<div class="selectRow">
<el-text class="text" size="large">所属地区</el-text>
<el-cascader class="selectContent" v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区"
clearable
@change="handleMarketChange"/>
<el-text size="large">充值平台</el-text>
<el-select v-model="rechargeUser.payPlatform" placeholder="请选择充值平台" style="width: 10vw;margin-right: 1vw;" clearable>
</div>
<div class="selectRow">
<el-text class="text" size="large">充值平台</el-text>
<el-select class="selectContent" v-model="rechargeUser.payPlatform" placeholder="请选择充值平台" clearable>
<el-option v-for="item in platform" :key="item.value" :label="item.label" :value="item.value"/>
</el-select>
</div>
<el-checkbox v-model="showEmployeeData" @change="search()">员工数据</el-checkbox>
</div>
<div>
<el-text size="large">充值时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 20vw" @change="handleDatePickerChange" :default-time="defaultTime"
</el-col>
<el-col>
<div class="select">
<div class="selectRow" style="width: 36vw;">
<el-text class="text" size="large">充值时间</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间"
end-placeholder="结束时间" style="margin-right:1vw;width:25vw"
@change="handleDatePickerChange"
:default-time="defaultTime"
:disabled-date="disabledDate"/>
<el-button @click="getToday()" style="margin-left: 1vw" :type="activeTimeRange === 'today' ? 'primary' : ''">
<div v-if="false">
<el-button @click="getToday()" style="margin-left: 1vw"
:type="activeTimeRange === 'today' ? 'primary' : ''">
</el-button>
<el-button @click="getYesterday()" style="margin-left: 1vw"
:type="activeTimeRange === 'yesterday' ? 'primary' : ''">
</el-button>
<el-button @click="get7Days()" style="margin-left: 1vw" :type="activeTimeRange === '7days' ? 'primary' : ''">
<el-button @click="get7Days()" style="margin-left: 1vw"
:type="activeTimeRange === '7days' ? 'primary' : ''">
近7天
</el-button>
</div>
</div>
<div class="selectRow" style="justify-content: flex-start;">
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
<el-button type="primary" @click="exportExcel()">导出Excel</el-button>
<el-button type="primary" @click="openExportList">查看导出列表</el-button>
</div>
</div>
</el-col>
</el-card>
<el-card class="card2">
@ -755,4 +776,25 @@ const getTagText = (state) => {
background-color: #E5EBFE !important;
}
/** 上面搜索的布局 **/
.select {
display: flex;
.selectRow {
width: 17vw;
display: flex;
align-items: center;
justify-content: center;
padding: 0 0.5vw;
.text {
width: 5vw;
font-size: 15px;
}
.selectContent {
flex: 1;
}
}
}
</style>

18
src/views/refund/gold/coinRefund.vue

@ -1,14 +1,22 @@
<template>
<div style="height: 4vh;">
<!-- 这里放置标签切换的按钮 -->
<el-button-group class="custom-button-group">
<el-button :type="activeTab === 'coinRefundDetail' ? 'primary' : 'default'" class="custom-tab-button"
@click="navigateTo('coinRefundDetail')" :disabled="!hasDetail" v-if="hasDetail">
<el-button-group>
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'coinRefundDetail' }"
@click="navigateTo('coinRefundDetail')"
:disabled="!hasDetail"
v-if="hasDetail">
金币退款明细
</el-button>
<!-- 切换后状态显示 primary 样式否则是默认样式 -->
<el-button :type="activeTab === 'addCoinRefund' ? 'primary' : 'default'" class="custom-tab-button" @click="navigateTo('addCoinRefund')"
:disabled="!hasAdd" v-if="hasAdd">
<el-button
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'addCoinRefund' }"
@click="navigateTo('addCoinRefund')"
:disabled="!hasAdd"
v-if="hasAdd">
新增退款
</el-button>
</el-button-group>

36
src/views/usergold/gold/clientCount.vue

@ -4,16 +4,17 @@
<el-button-group class="custom-button-group">
<!-- 切换后状态显示 primary 样式否则是默认样式 -->
<el-button
:type="activeTab === 'clientCountDetail' ? 'primary' : 'default'"
class="custom-tab-button"
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'clientCountDetail' }"
@click="navigateTo('clientCountDetail')"
:disabled="!hasDetail" v-if="hasDetail"
:disabled="!hasDetail"
v-if="hasDetail"
>
金币明细
</el-button>
<el-button
:type="activeTab === 'clientCountBalance' ? 'primary' : 'default'"
class="custom-tab-button"
class="no-active-btn"
:class="{ 'active-btn': activeTab === 'clientCountBalance' }"
@click="navigateTo('clientCountBalance')"
:disabled="!hasBalance" v-if="hasBalance"
>
@ -91,27 +92,10 @@ onMounted(() => {
}
});
</script>
<style scoped lang="scss">
/* 自定义按钮组布局 */
.custom-button-group {
display: flex;
margin-bottom: 16px;
gap: 8px;
}
:deep(.el-button.custom-tab-button) {
border-radius: 4px;
transition: all 0.3s ease;
}
// tab
:deep(.el-button.custom-tab-button.el-button--primary) {
background-color: #2741DE !important;
border-color: #2741DE !important;
color: #F3FAFE !important;
}
/* 鼠标悬停效果 */
:deep(.el-button.custom-tab-button:hover:not(.is-disabled)) {
opacity: 0.8;
<style>
.father {
width: 82vw;
height: 4vh;
}

4
src/views/workspace/index.vue

@ -64,5 +64,7 @@ import GoldGraph from "@/components/workspace/GoldGraph.vue"
text-align: center;
}
.graphs {
padding-bottom: 10px;
}
</style>
Loading…
Cancel
Save