diff --git a/.env.development b/.env.development
new file mode 100644
index 0000000..8fa72ce
--- /dev/null
+++ b/.env.development
@@ -0,0 +1,20 @@
+VITE_API_BASE='https://hwjb.homilychart.com/dev/admin'
+# 测试环境
+# VITE_API_BASE='http://54.255.212.181:10704/'
+# 正式环境
+# VITE_API_BASE='http://54.255.212.181:10705/'
+VITE_UPLOAD_URL=http://39.101.133.168:8828/hljw/api/aws/upload
+# VITE_API_BASE='http://192.168.9.28:8081/'
+# sunjiabei
+# VITE_API_BASE='http://192.168.9.28:8081/'
+# VITE_API_BASE='http://192.168.5.92:8081/'
+# 张勇
+# VITE_API_BASE='http://192.168.3.83:8081/'
+# 本地
+# VITE_API_BASE='http://localhost:8081/'
+# 孙加倍
+# VITE_API_BASE='http://192.168.40.12:8081'
+
+# Lijianlin
+# VITE_API_BASE='http://192.168.9.41:8081/'
+# VITE_API_BASE='http://localhost:8081/'
diff --git a/src/components/MoneyManage/CurrencySelect.vue b/src/components/MoneyManage/CurrencySelect.vue
index d10bbb4..0f4281f 100644
--- a/src/components/MoneyManage/CurrencySelect.vue
+++ b/src/components/MoneyManage/CurrencySelect.vue
@@ -124,7 +124,7 @@ watch(() => props.modelValue, (newVal) => {
// 下拉容器
.dropdown {
position: relative;
- width: 268px;
+ width: 100%;
font-family: 'Arial', sans-serif;
}
@@ -154,30 +154,32 @@ watch(() => props.modelValue, (newVal) => {
width: 100%;
height: 100%;
position: sticky;
- }
- // 搜索输入框
- .search-input {
- width: 100%;
- height: 90%;
- /* 左侧留出图标空间 */
- box-sizing: border-box;
- border: none;
- border-radius: 6px;
- padding-left: 11px;
- outline: none;
- font-size: 14px;
- transition: border-color 0.3s ease;
-
- &::placeholder {
- color: #999999;
- opacity: 1;
- font-style: normal;
- font-weight: 350;
- line-height: 22px;
+ // 搜索输入框
+ .search-input {
+ width: 100%;
+ height: 90%;
+ /* 左侧留出图标空间 */
+ box-sizing: border-box;
+ border: none;
+ border-radius: 6px;
+ padding-left: 11px;
+ outline: none;
+ font-size: 14px;
+ transition: border-color 0.3s ease;
+
+ &::placeholder {
+ color: #999999;
+ opacity: 1;
+ font-style: normal;
+ font-weight: 350;
+ line-height: 22px;
+ }
}
-
}
+ .arrow {
+ color: #9ca3af;
+ }
.clear-icon {
position: absolute;
@@ -211,9 +213,6 @@ watch(() => props.modelValue, (newVal) => {
display: none;
}
- .arrow {
- color: #9ca3af;
- }
&:hover {
border-color: #d1d5db;
@@ -250,7 +249,7 @@ watch(() => props.modelValue, (newVal) => {
position: absolute;
top: 100%; // 紧贴触发器下方
left: 0;
- width: 100%;
+ width: 120%;
border: 1px solid #678BFF;
min-height: 50px;
max-height: 300px;
@@ -313,6 +312,7 @@ watch(() => props.modelValue, (newVal) => {
border: none;
border-radius: 10px;
background-color: #fff;
+ box-shadow: 0 0 0 1px rgba(200, 200, 200, 0.3);
font-size: 12px;
font-style: normal;
font-weight: 700;
diff --git a/src/router/index.js b/src/router/index.js
index 3b6ff6c..7176533 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -296,6 +296,7 @@ const routes = [
}
]
},
+ // 现金管理
{
path: '/moneyManage',
name: 'moneyManage',
@@ -318,7 +319,7 @@ const routes = [
{
path: 'receiveManager',
name: "receiveManager",
- component: () => import("../views/moneyManage/receiveDetail/receiveManage.vue"),
+ component: () => import("../views/moneyManage/receiveDetail/receiveFinance.vue"),
meta: { permissionId: [67, 79] }
},
{//地区财务
@@ -382,6 +383,36 @@ const routes = [
},
]
},
+ // 频道管理
+ {
+ path: 'channelManage',
+ name: 'channelManage',
+ meta: { permissionId: 124 },
+ children: [
+ // 打赏
+ {
+ path: 'reward',
+ name: "reward",
+ component: () => import("../views/channelManage/reward/reward.vue"),
+ meta: { permissionId: 125 }
+ },
+ // 铁粉
+ {
+ path: 'fans',
+ name: "fans",
+ component: () => import("../views/channelManage/fans/fans.vue"),
+ meta: { permissionId: 126 }
+ },
+ // 购物车
+ {
+ path: 'cart',
+ name: "cart",
+ component: () => import("../views/channelManage/cart/cart.vue"),
+ meta: { permissionId: 127 }
+ }
+ ]
+ },
+ // 活动管理
{
path: 'activityManage',
name: "activityManage",
diff --git a/src/utils/menuTreePermission.js b/src/utils/menuTreePermission.js
index 99dc1b9..a502085 100644
--- a/src/utils/menuTreePermission.js
+++ b/src/utils/menuTreePermission.js
@@ -187,7 +187,7 @@ export const findMenuById = (menuList, targetId) => {
// 递归判断某个 menuId 是否存在
export const hasMenuPermission = (tree, targetId) => {
for (const node of tree) {
- console.log(node.id)
+ // console.log(node.id)
if (node.id === targetId) return true;
if (node.children && hasMenuPermission(node.children, targetId)) return true;
}
diff --git a/src/utils/menuUtils.js b/src/utils/menuUtils.js
index aec0e4e..b8ba460 100644
--- a/src/utils/menuUtils.js
+++ b/src/utils/menuUtils.js
@@ -91,8 +91,13 @@ export const getRoutePath = (menu) => {
'退款-总部财务':'/moneyManage/refundDetail/refundHeader',
'执行明细': '/moneyManage/executor',
- };
+ '频道管理': '/channelManage',
+ '打赏管理': '/channelManage/reward',
+ '铁粉管理': '/channelManage/fans',
+ '小黄车管理': '/channelManage/cart',
+ };
+ // console.log('1111',menu.menuName)
// 未匹配的菜单默认使用id作为路由(可根据实际需求调整)
return routeMap[menu.menuName] || '/noPermission'
diff --git a/src/views/audit/bean/beanAudit.vue b/src/views/audit/bean/beanAudit.vue
index fa421d2..8bc7e23 100644
--- a/src/views/audit/bean/beanAudit.vue
+++ b/src/views/audit/bean/beanAudit.vue
@@ -102,7 +102,7 @@
@@ -173,6 +173,9 @@ const reason = ref('')
const rejectRow = ref({
id: null
})// 驳回行数据
+const passRow = ref({
+ id: null
+})// 通过行数据
const popconfirmRef = ref(null)
// 操作权限(金豆审核相关,与充值权限格式对齐)
@@ -337,6 +340,7 @@ const showApproveDialog = (row) => {
ElMessage.error('暂无权限')
return
}
+ passRow.value.id = row.id
approveDialogVisible.value = true
}
@@ -351,7 +355,7 @@ const handleApproveConfirm = async (row) => {
clicked.value = true
try {
const params = {
- id: row.id,
+ id: passRow.value.id,
auditName: adminData.value.adminName
}
await API({ url: '/beanAudit/status1', data: params })
@@ -472,9 +476,12 @@ const resetSearch = async function () {
auditStartTime: '',
auditEndTime: ''
}
+ // 重置页码
+ pagination.value.pageNum = 1
selectedMarkets.value = []
dateRange.value = []
activeTimeRange.value = ''
+
await get()
await getStats()
}
diff --git a/src/views/audit/gold/rechargeAudit.vue b/src/views/audit/gold/rechargeAudit.vue
index 2262ce6..959a267 100644
--- a/src/views/audit/gold/rechargeAudit.vue
+++ b/src/views/audit/gold/rechargeAudit.vue
@@ -160,7 +160,7 @@
@@ -447,6 +447,8 @@ const resetSearch = function () {
market: "",
auditStatus: rechargeAudit.value.auditStatus
}
+ // 重置页码
+ getObj.value.pageNum = 1
selectedMarketPath.value = []
getTime.value = []
activeTimeRange.value = '' // 清除激活状态
diff --git a/src/views/audit/gold/refundAudit.vue b/src/views/audit/gold/refundAudit.vue
index 73f5a2c..f1255df 100644
--- a/src/views/audit/gold/refundAudit.vue
+++ b/src/views/audit/gold/refundAudit.vue
@@ -148,7 +148,7 @@
-
@@ -520,6 +520,8 @@ const resetSearch = function () {
sortOrder: '',
auditStatus: auditStatus
}
+ // 重置页码
+ pagination.value.pageNum = 1
dateRange.value = []
activeTimeRange.value = '' // 清除激活状态
selectedMarketPath.value = []
diff --git a/src/views/channelManage/cart/cart.vue b/src/views/channelManage/cart/cart.vue
new file mode 100644
index 0000000..9695aed
--- /dev/null
+++ b/src/views/channelManage/cart/cart.vue
@@ -0,0 +1,676 @@
+
+
+
+
+
+
+
+ 精网号:
+
+
+
+ 所属地区:
+
+
+
+
+
+ 商品名称:
+
+
+
+
+
+
+
+ 频道名称:
+
+
+
+
+
+
+
+
+
+
+
+
+
下单时间:
+
+
+ 今
+ 昨
+ 近7天
+
+
+
+ 直播间名称:
+
+
+
+
+
+
+
+ 查询
+ 导出Excel
+ 查看导出列表
+ 重置
+
+
+
+
+
+ 金豆总数:{{ format3(Math.abs(permanentBean + freeBean)) }}
+ 付费金豆数:{{ format3(Math.abs(permanentBean)) }}
+ 免费金豆数:{{ format3(Math.abs(freeBean)) }}
+
+
+
+
+
+ {{
+ scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ formatTime(scope.row.consumeTime) }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getTagText(scope.row.state) }}
+
+
+
+
+
+ {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
+
+
+
+
+
+ 下载
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/views/channelManage/fans/fans.vue b/src/views/channelManage/fans/fans.vue
new file mode 100644
index 0000000..b2c8733
--- /dev/null
+++ b/src/views/channelManage/fans/fans.vue
@@ -0,0 +1,657 @@
+
+
+
+
+
+
+
+ 精网号:
+
+
+
+ 地区:
+
+
+
+
+
+ 频道:
+
+
+
+
+
+
+
+
+
+
消费时间:
+
+
+ 今
+ 昨
+ 近7天
+
+
+
+ 查询
+ 导出Excel
+ 查看导出列表
+ 重置
+
+
+
+
+
+
+ 金豆总数:{{ format3(Math.abs(permanentBean + freeBean)) }}
+ 付费金豆数:{{ format3(Math.abs(permanentBean)) }}
+ 免费金豆数:{{ format3(Math.abs(freeBean)) }}
+
+
+
+
+
+ {{
+ scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{consumeTypes.find(item => item.value === Number(scope.row.type))?.label || '未知类型'}}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getTagText(scope.row.state) }}
+
+
+
+
+
+ {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
+
+
+
+
+
+ 下载
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/channelManage/reward/reward.vue b/src/views/channelManage/reward/reward.vue
new file mode 100644
index 0000000..aff62ee
--- /dev/null
+++ b/src/views/channelManage/reward/reward.vue
@@ -0,0 +1,700 @@
+
+
+
+
+
+
+
+ 精网号:
+
+
+
+ 地区:
+
+
+
+
+
+ 礼物名称:
+
+
+
+
+
+ 频道:
+
+
+
+
+
+ 直播间:
+
+
+
+
+
+
+
+
消费时间:
+
+
+ 今
+ 昨
+ 近7天
+
+
+
+ 查询
+ 导出excel
+ 查看导出列表
+ 重置
+
+
+
+
+
+
+ 金豆总数:{{ format3(Math.abs(permanentBean + freeBean)) }}
+ 付费金豆数:{{ format3(Math.abs(permanentBean)) }}
+ 免费金豆数:{{ format3(Math.abs(freeBean)) }}
+
+
+
+
+
+ {{
+ scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
+ }}
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.isBackpack == 1 ? '是' : '否' }}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ getTagText(scope.row.state) }}
+
+
+
+
+
+ {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
+
+
+
+
+
+ 下载
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/views/consume/bean/articleVideo.vue b/src/views/consume/bean/articleVideo.vue
index d2fec45..2cf820b 100644
--- a/src/views/consume/bean/articleVideo.vue
+++ b/src/views/consume/bean/articleVideo.vue
@@ -276,6 +276,10 @@ const reset = function () {
getTime.value = {}
activeTimeRange.value = '' // 清除激活状态
+ // 重置页码
+ getObj.value.pageNum = 1
+
+ console.log('重置页码=======', getObj.value.pageNum)
// 点完重置后,重新请求数据
ConsumeSelectBy()
@@ -569,7 +573,7 @@ const getTagText = (state) => {
diff --git a/src/views/consume/bean/dieHardFan.vue b/src/views/consume/bean/dieHardFan.vue
index 1aaefad..21e08e8 100644
--- a/src/views/consume/bean/dieHardFan.vue
+++ b/src/views/consume/bean/dieHardFan.vue
@@ -262,6 +262,8 @@ const reset = function () {
getTime.value = {}
activeTimeRange.value = '' // 清除激活状态
+ // 重置页码
+ getObj.value.pageNum = 1
// 点完重置后,重新请求数据
ConsumeSelectBy()
@@ -545,7 +547,7 @@ const getTagText = (state) => {
diff --git a/src/views/consume/bean/liveStream.vue b/src/views/consume/bean/liveStream.vue
index 0e46f17..d604525 100644
--- a/src/views/consume/bean/liveStream.vue
+++ b/src/views/consume/bean/liveStream.vue
@@ -296,6 +296,8 @@ const reset = function () {
getTime.value = {}
activeTimeRange.value = '' // 清除激活状态
+ // 重置页码
+ getObj.value.pageNum = 1
// 点完重置后,重新请求数据
selectLiveBy()
@@ -590,7 +592,7 @@ const getTagText = (state) => {
-
diff --git a/src/views/consume/gold/coinConsumeDetail.vue b/src/views/consume/gold/coinConsumeDetail.vue
index 7d3aa98..4ca5ffc 100644
--- a/src/views/consume/gold/coinConsumeDetail.vue
+++ b/src/views/consume/gold/coinConsumeDetail.vue
@@ -334,6 +334,8 @@ const reset = function () {
activeTimeRange.value = '' // 清除激活状态
selectedMarketPath.value = []
+ // 重置页码
+ getObj.value.pageNum = 1
// 点完重置后,重新请求数据
ConsumeSelectBy()
@@ -708,7 +710,7 @@ const getMarket = async function () {
diff --git a/src/views/history/newHistory.vue b/src/views/history/newHistory.vue
index a0626fa..083e545 100644
--- a/src/views/history/newHistory.vue
+++ b/src/views/history/newHistory.vue
@@ -34,8 +34,8 @@
-
@@ -108,6 +108,8 @@ const resetSearch = function () {
name: '',
jwcode: ''
}
+ // 重置页码
+ pagination.value.pageNum = 1
dateRange.value = []
}
const handlePageSizeChange = function (val) {
diff --git a/src/views/history/oldHistory.vue b/src/views/history/oldHistory.vue
index ed34232..981f17a 100644
--- a/src/views/history/oldHistory.vue
+++ b/src/views/history/oldHistory.vue
@@ -31,8 +31,8 @@
-
@@ -106,6 +106,8 @@ const resetSearch = function () {
name: '',
jwcode: ''
}
+ // 重置页码
+ pagination.value.pageNum = 1
dateRange.value = []
}
const handlePageSizeChange = function (val) {
diff --git a/src/views/moneyManage/executor/executor.vue b/src/views/moneyManage/executor/executor.vue
index e95f1f0..ac6defa 100644
--- a/src/views/moneyManage/executor/executor.vue
+++ b/src/views/moneyManage/executor/executor.vue
@@ -1,253 +1,254 @@
-
-
-
- 姓名
-
-
-
- 精网号
-
-
-
- 所属地区
-
-
-
- 产品名称
-
-
-
- 退款币种
-
-
-
-
-
-
-
- 退款途径
-
-
-
-
-
- 订单状态
-
-
-
-
-
- 退款时间
-
-
-
- 查询
- 重置
-
-
-
-
+
+
+
+ 姓名
+
+
+
+ 精网号
+
+
+
+ 所属地区
+
+
+
+ 产品名称
+
+
+
+ 退款币种
+
+
+
+
+
+
+
+ 退款途径
+
+
+
+
+
+ 订单状态
+
+
+
+
+
+ 退款时间
+
+
+
+ 查询
+ 重置
+
+
+
+
-
-
-
-
-
-
-
-
-
-
- {{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }}
-
-
-
-
-
- 待补充
-
-
-
-
-
-
- 待补充
-
-
-
-
-
-
- 待补充
-
-
-
-
-
-
- 待补充
-
-
-
-
-
- 待补充
-
-
-
-
-
- {{ scope.row.status === 41 ? '退款成功' : '待处理' }}
-
-
-
-
-
-
- 提交
-
-
- 编辑
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+ {{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }}
+
+
+
+
+
+ 待补充
+
+
+
+
+
+
+ 待补充
+
+
+
+
+
+
+ 待补充
+
+
+
+
+
+
+ 待补充
+
+
+
+
+
+ 待补充
+
+
+
+
+
+ {{ scope.row.status === 41 ? '退款成功' : '待处理' }}
+
+
+
+
+
+
+ 提交
+
+
+ 编辑
+
+
+
+
+
+
+
-
-
-
-
- 精网号
-
-
-
- 客户姓名
-
-
-
- 所属地区
-
-
-
- 产品名称
-
-
-
- 退款类型
-
-
-
-
-
-
- 付款币种
-
-
-
- 付款金额
-
-
-
- 支付方式
-
-
-
- 付款时间
-
-
-
- 提交人
-
-
-
-
转账凭证
-
-
- 无转账凭证
-
-
-
- 备注
-
-
-
-
-
- 退款币种
-
-
-
-
-
- 退款金额
-
-
-
- 退款途径
-
-
-
-
-
- 退款时间
-
-
-
-
支付凭证
-
-
-
-
-
-
-
-
-
-
- 备注
-
-
-
- 取消
- 提交
-
-
+
+
+
+
+ 精网号
+
+
+
+ 客户姓名
+
+
+
+ 所属地区
+
+
+
+ 产品名称
+
+
+
+ 退款类型
+
+
+
+
+
+
+ 付款币种
+
+
+
+ 付款金额
+
+
+
+ 支付方式
+
+
+
+ 付款时间
+
+
+
+ 提交人
+
+
+
+
转账凭证
+
+
+ 无转账凭证
+
+
+
+ 备注
+
+
+
+
+
+ 退款币种
+
+
+
+
+
+ 退款金额
+
+
+
+ 退款途径
+
+
+
+
+
+ 退款时间
+
+
+
+
支付凭证
+
+
+
+
+
+
+
+
-
+
+ 备注
+
+
+
+ 取消
+ 提交
+
+
+
+
\ No newline at end of file
diff --git a/src/views/moneyManage/receiveDetail/receiveDetail1.vue b/src/views/moneyManage/receiveDetail/receiveDetail1.vue
index f24f2ac..9cf9d02 100644
--- a/src/views/moneyManage/receiveDetail/receiveDetail1.vue
+++ b/src/views/moneyManage/receiveDetail/receiveDetail1.vue
@@ -251,7 +251,7 @@
+
+
+
+ 关闭
+
+
+ {{ textContent }}
+
+
+ 取消
+
+
+ 确定
+
+
@@ -406,6 +424,108 @@
+
+
+
+
+
+
+ 精网号
+
+
+
+ 客户姓名
+
+
+
+ 所属地区
+
+
+
+ 活动名称
+
+
+
+ 产品名称
+
+
+
+ 产品数量
+
+
+
+
+ 永久金币:
+
+
+
+ 免费金币:
+
+
+
+
+ 付款币种
+
+
+
+ 付款金额
+
+
+
+ 支付方式
+
+
+
+ 付款时间
+
+
+
+
转账凭证
+
+
+
+
+
+
+
+
+
+
+
+
+ 备注
+
+
+
+
+
+ 退款模式
+
+ 全部退款
+ 部分退款
+
+
+
+ 退款理由
+
+
+
ps:请在退款理由表明用户的退款需求。
+
+ 重置
+ 提交
+
+
+
+
@@ -419,6 +539,7 @@ import request from '@/util/http.js';
import moment from 'moment';
import _ from 'lodash';
import { Plus } from '@element-plus/icons-vue';
+import { startsWith } from './utils/util.js'
// 地区财务专属组件
import CurrencySelect from '@/components/MoneyManage/CurrencySelect.vue';
@@ -474,7 +595,38 @@ const tooltipContent = ref('');
const tooltipLeft = ref(0);
const tooltipTop = ref(0);
-// 基础数据(地区财务专用)
+// 退款确认弹窗
+const refundConfirmDialog = ref(false)
+const textContent = ref('')
+
+
+//退款弹窗
+const refundDialog = ref(false)
+const refundFormData = ref({})
+
+const openRefundDialog = () => {
+ refundDialog.value = true
+ closeConfirmRefund()
+
+}
+const closeRefundForm = () => {
+ refundDialog.value = false
+ refundFormData.value = {}
+}
+
+const isRefundGold = ref(false)
+const ifRefundGold = () => {
+ if (refundFormData.value.goodsName === '金币充值') {
+ isRefundGold.value = true
+ refundFormData.value.goodNum = 0
+ } else {
+ isRefundGold.value = false
+ }
+}
+
+
+
+// 基础数据
const adminData = ref({});
const activityList = ref([]);
const customOptions = ref(['美元(USD)', '港币(HKD)', '新币(SGD)', '马币(MYR)', '泰铢(THB)', '加币(CAD)', '越南盾(VDN)', '韩元(KRW)']);
@@ -482,6 +634,23 @@ const paytypeList = ["Stripe-链接收款", "PaymentAsia-链接收款", "Ipay88-
const paytypeOptions = ref([...paytypeList]);
// ===================== 2. 核心功能函数(仅地区财务) =====================
+
+//确认退款弹窗
+const openRefundConfirm = (row) => {
+ textContent.value = '将要对该订单退款!'
+ refundConfirmDialog.value = true
+ refundFormData.value = { ...row }
+ ifRefundGold()
+ console.log(row);
+
+}
+
+const closeConfirmRefund = () => {
+ refundConfirmDialog.value = false
+ textContent.value = ''
+}
+
+
// 2.1 数据加载:获取地区财务订单列表
const getlist = async () => {
try {
@@ -544,6 +713,54 @@ const getlist = async () => {
}
};
+//提交退款
+const submitRefund = async () => {
+ try {
+ const result = await request({
+ url: '/Money/add',
+ data: {
+ jwcode: refundFormData.value.jwcode, // 精网号(必填)
+ name: refundFormData.value.name, // 姓名(必填)
+ market: refundFormData.value.marketName, // 所属地区(必填)
+ activity: refundFormData.value.activity, // 活动名称(可选)
+ bankCode: refundFormData.value.bankCode, // 银行流水订单号(必填)
+ goodsName: refundFormData.value.goodsName, // 商品名称(必填)
+ goodNum: refundFormData.value.goodNum, // 商品数量(必填,默认0)
+ paymentCurrency: refundFormData.value.paymentCurrency, // 付款币种(必填)
+ paymentAmount: (refundFormData.value.paymentAmount) * 100, // 付款金额(必填)
+ receivedCurrency: refundFormData.value.receivedCurrency, // 到账币种(必填)
+ receivedAmount: (refundFormData.value.receivedAmount) * 100, // 到账金额(必填)
+ handlingCharge: (refundFormData.value.handlingCharge) * 100, // 手续费(可选)
+ receivedMarket: refundFormData.value.receivedMarket, // 到账地区(可选)
+ payType: refundFormData.value.payType, // 支付方式(必填)
+ payTime: refundFormData.value.payTime, // 付款时间,格式:yyyy-MM-dd HH:mm:ss(可选)
+ receivedTime: refundFormData.value.receivedTime, // 到账时间,格式:yyyy-MM-dd HH:mm:ss(可选)
+ areaServise: adminData.value.adminName, // 提交人(可选)
+ submitterId: adminData.value.id,
+ voucher: refundFormData.value.voucher, // 转账凭证URL(可选)
+ remark: refundFormData.value.remark, // 备注信息(可选)
+ refundReason: refundFormData.value.refundReason, // 退款备注-客服填写(可选)
+ refundModel: refundFormData.value.refundModel, // 退款方式:0-全额,1-部分(可选)
+ id: refundFormData.value.id, //订单id
+ orderCode: refundFormData.value.orderCode,
+ permanentGold: (refundFormData.value.permanentGold) * 100 || 0,
+ freeGold: (refundFormData.value.freeGold) * 100 || 0
+ }
+ })
+ if (result.code == 200) {
+ ElMessage.success('新增退款成功')
+ getlist()
+ closeRefundForm()
+ } else {
+ ElMessage.error(result.msg)
+ getlist()
+ }
+ console.log('返回参数:', result);
+ } catch (error) {
+ console.log(error);
+ }
+}
+
// 2.2 搜索与重置
const search = () => {
getlist();
@@ -552,6 +769,8 @@ const search = () => {
const reset = () => {
searchData.value = {};
+ // 重置页码
+ pageInfo.value.pageNum = 1;
getlist();
};
@@ -821,6 +1040,9 @@ onMounted(async () => {
window.history.back();
});
}
+ //背景预加载
+ const bgImg = new Image();
+ bgImg.src = '/src/assets/收款明细撤回背景.png';
});
// 2.10 未使用函数占位(避免报错)
@@ -840,328 +1062,399 @@ const handlePagination = (type, val) => {
\ No newline at end of file
diff --git a/src/views/moneyManage/receiveDetail/receiveHead.vue b/src/views/moneyManage/receiveDetail/receiveHead.vue
index dec431c..b411c83 100644
--- a/src/views/moneyManage/receiveDetail/receiveHead.vue
+++ b/src/views/moneyManage/receiveDetail/receiveHead.vue
@@ -168,7 +168,7 @@
-
订单状态
@@ -55,7 +54,6 @@
@change="handleDatePickerChange" :default-time="defaultTime"
:disabled-date="disabledDate" />
-
查询
重置
@@ -124,7 +122,6 @@
-
-
-
@@ -194,19 +189,24 @@
-
+
-
+
+
+
-
-
-
{{ productUnit }}
+
+
+
@@ -235,7 +235,7 @@
@change="ifGroup">
-
+
@@ -244,7 +244,7 @@
-
+
-
+
@@ -402,7 +402,7 @@ import { hasMenuPermission } from '@/utils/menuTreePermission.js'
import _ from 'lodash'
// 导入客服相关规则和静态数据
import { addFormRule } from './utils/recriveFormRules.js'
-import { productList, MarketNameForId, CurrencyForId, marketList, statusList } from './utils/staticData.js'
+import { productList, MarketNameForId, CurrencyForId, marketList, statusList, numUnitList } from './utils/staticData.js'
// ===================== 基础状态管理(仅保留客服相关) =====================
const adminStore = useAdminStore();
@@ -433,6 +433,8 @@ const search = () => {
const reset = () => {
searchData.value = {}
getTime.value = []
+ // 重置页码
+ pageInfo.value.pageNum = 1
getlist()
}
@@ -514,7 +516,6 @@ const addFormData = ref({ name: '', market: '', permanentGold: 0, freeGold: 0, g
const addFormRef = ref(null) // 表单引用
const addOrEdit = ref(0) // 1=新增,2=编辑
const isGold = ref(false) // 是否为金币充值产品
-const productUnit = ref('个') // 产品单位
const productSelectRef = ref(null) // 产品选择器引用
const uploadRef = ref(null) // 上传组件引用
@@ -525,9 +526,14 @@ const ifGold = () => {
addFormData.value.goodNum = 0
} else {
isGold.value = false
- // 特殊产品单位为“年”
- const selectItems = ["AI机构追踪", "AI机构出击", "AI机构资金", "AI机活跃度", "超级机构透视", "超级机构伏击", "超级机构猎杀", "超级机构脉搏", "超级机构罗盘", "静态信息费", "博股会员"]
- productUnit.value = selectItems.includes(addFormData.value.goodsName) ? '年' : '个'
+ const selectItems = ["AI机构追踪", "AI机构出击", "AI机构资金", "AI机活跃度", "超级机构透视", "超级机构伏击", "超级机构猎杀", "超级机构脉搏", "超级机构罗盘", 'HC信息费']
+ if (selectItems.includes(addFormData.value.goodsName)) {
+ addFormData.value.numUnit = ''
+ } else if (addFormData.value.goodsName == '静态信息费') {
+ addFormData.value.numUnit = '年'
+ }else{
+ addFormData.value.numUnit = '个'
+ }
}
}
@@ -750,8 +756,6 @@ const ifRefundGold = () => {
refundFormData.value.goodNum = 0
} else {
isRefundGold.value = false
- const selectItems = ["AI机构追踪", "AI机构出击", "AI机构资金", "AI机活跃度", "超级机构透视", "超级机构伏击", "超级机构猎杀", "超级机构脉搏", "超级机构罗盘", "静态信息费", "博股会员"]
- productUnit.value = selectItems.includes(refundFormData.value.goodsName) ? '年' : '个'
}
}
diff --git a/src/views/moneyManage/receiveDetail/utils/recriveFormRules.js b/src/views/moneyManage/receiveDetail/utils/recriveFormRules.js
index 7cda280..7f1bb2d 100644
--- a/src/views/moneyManage/receiveDetail/utils/recriveFormRules.js
+++ b/src/views/moneyManage/receiveDetail/utils/recriveFormRules.js
@@ -9,13 +9,12 @@ export const addFormRule = {
{ required: true, message: '请输入客户姓名', trigger: 'blur' }
],
// 所属地区:必填
- marketName: [
+ market: [
{ required: true, message: '请选择所属地区', trigger: 'blur' }
],
// 活动名称:必填 + 长度小于30
activity: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
- { max: 30, message: '活动名称长度不能超过30个字符', trigger: 'blur' }
],
// 产品名称:必填
goodsName: [
@@ -81,14 +80,6 @@ export const addFormRule = {
// 付款时间:必填
payTime: [
{ required: true, message: '请选择付款时间', trigger: 'change' }
- ],
- // 转账凭证:必填
- voucher: [
- { required: true, message: '请上传转账凭证', trigger: 'change' }
- ],
- // 备注:必填
- remark: [
- { required: true, message: '请输入备注', trigger: 'blur' }
]
};
diff --git a/src/views/moneyManage/receiveDetail/utils/staticData.js b/src/views/moneyManage/receiveDetail/utils/staticData.js
index 12acd6a..35dce6c 100644
--- a/src/views/moneyManage/receiveDetail/utils/staticData.js
+++ b/src/views/moneyManage/receiveDetail/utils/staticData.js
@@ -256,4 +256,6 @@ export const statusList = [
name: '已驳回',
value: 2
},
-]
\ No newline at end of file
+]
+
+export const numUnitList = ['个', '年', '月']
\ No newline at end of file
diff --git a/src/views/moneyManage/receiveDetail/utils/util.js b/src/views/moneyManage/receiveDetail/utils/util.js
new file mode 100644
index 0000000..0419a75
--- /dev/null
+++ b/src/views/moneyManage/receiveDetail/utils/util.js
@@ -0,0 +1,13 @@
+//判断是否为线上订单
+export const startsWith = (mainStr, prefix) => {
+ // 处理前缀为空字符串的情况(空字符串是所有字符串的前缀)
+ if (prefix === '') {
+ return true;
+ }
+ // 处理主字符串长度小于前缀长度的情况
+ if (mainStr.length < prefix.length) {
+ return false;
+ }
+ // 比较主字符串开头与前缀相同长度的部分
+ return mainStr.substring(0, prefix.length) === prefix;
+}
\ No newline at end of file
diff --git a/src/views/moneyManage/refundDetail/refundCharge.vue b/src/views/moneyManage/refundDetail/refundCharge.vue
index 34989d2..87be811 100644
--- a/src/views/moneyManage/refundDetail/refundCharge.vue
+++ b/src/views/moneyManage/refundDetail/refundCharge.vue
@@ -95,7 +95,7 @@
-
@@ -714,6 +714,8 @@ const reset = function () {
markets: [],
statuses: []
}
+ // 重置页码
+ pagination.value.pageNum = 1
dateRange.value = []
getRefund()
}
diff --git a/src/views/moneyManage/refundDetail/refundFinance.vue b/src/views/moneyManage/refundDetail/refundFinance.vue
index 24e46b4..9dc55ef 100644
--- a/src/views/moneyManage/refundDetail/refundFinance.vue
+++ b/src/views/moneyManage/refundDetail/refundFinance.vue
@@ -777,6 +777,8 @@ const reset = function () {
markets: [],
statuses: []
}
+ // 重置页码
+ pagination.value.pageNum = 1
dateRange.value = []
getRefund()
}
diff --git a/src/views/moneyManage/refundDetail/refundHeader.vue b/src/views/moneyManage/refundDetail/refundHeader.vue
index 37140ed..7a48350 100644
--- a/src/views/moneyManage/refundDetail/refundHeader.vue
+++ b/src/views/moneyManage/refundDetail/refundHeader.vue
@@ -610,6 +610,9 @@ const reset = function () {
markets: [],
statuses: []
}
+ // 重置页码
+ pagination.value.pageNum = 1
+
dateRange.value = []
getRefund()
}
diff --git a/src/views/moneyManage/refundDetail/refundService.vue b/src/views/moneyManage/refundDetail/refundService.vue
index 9c2ca93..d5375b9 100644
--- a/src/views/moneyManage/refundDetail/refundService.vue
+++ b/src/views/moneyManage/refundDetail/refundService.vue
@@ -627,6 +627,8 @@ const reset = function () {
market: [],
statuses: []
}
+ // 重置页码
+ pagination.value.pageNum = 1
dateRange.value = []
getRefund()
}
diff --git a/src/views/permissions/rolePermission.vue b/src/views/permissions/rolePermission.vue
index 8ba8384..341a6b0 100644
--- a/src/views/permissions/rolePermission.vue
+++ b/src/views/permissions/rolePermission.vue
@@ -9,6 +9,7 @@ import { storeToRefs } from "pinia"
const adminStore = useAdminStore();
const { adminData, menuTree } = storeToRefs(adminStore);
import { permissionMapping, findMenuById } from "@/utils/menuTreePermission.js"
+import { tr } from 'element-plus/es/locales.mjs'
// 表单验证ref
const Ref = ref(null)
@@ -35,7 +36,7 @@ const addRole = ref({
market: ''
})
const addRoleMarket = ref([])
-
+const channelList = ref(['美股', '港股', 'hc第一频道'])
const getRoleList = async function (val) {
if (!findMenuById(menuTree.value, permissionMapping.view_role_information)) {
ElMessage.error('无此权限')
@@ -96,6 +97,8 @@ const searchRole = function () {
const reset = function () {
admin.value = {}
role.value.name = ''
+ // 重置页码
+ getRoleObj.value.pageNum = 1
getRoleList()
}
const RoleArea = ref([])
@@ -194,7 +197,8 @@ const handleAddRole = async function () {
"roleName": addRole.value.roleName,
"menuIds": finalCheckedKeys,
"fatherId": addRole.value.parentId,
- "market": addRole.value.market
+ "market": addRole.value.market,
+ channel: addRole.value.channel
}
})
if (res.code === 200) {
@@ -315,6 +319,7 @@ const handleEditRolePermissionCheck = (checkedNodes, checkedInfo) => {
// 判断是否有选中的节点
if (allCheckedNodes.length === 0) {
permissionEditRoleObj.value.checkedKeys = []
+ ifHasChannel.value = false
return
}
@@ -324,13 +329,22 @@ const handleEditRolePermissionCheck = (checkedNodes, checkedInfo) => {
console.log('编辑角色选中的权限ID:', checkedKeys)
console.log('选中的节点数量:', allCheckedNodes.length)
+ if (checkedKeys.includes(124) || checkedKeys.includes(125) || checkedKeys.includes(126) || checkedKeys.includes(127)) {
+ ifHasChannel.value = true
+ } else {
+ ifHasChannel.value = false
+ }
};
+
+//用于标记是否勾选频道管理
+const ifHasChannel = ref(false)
const handleCheckChange = async (checkedNodes, checkedInfo) => {
const { checkedKeys, checkedNodes: allCheckedNodes } = checkedInfo
// 判断是否有选中的节点
if (allCheckedNodes.length === 0) {
addRole.value.checkedKeys = []
+ ifHasChannel.value = false
return
}
@@ -346,6 +360,12 @@ const handleCheckChange = async (checkedNodes, checkedInfo) => {
// 将Set转换为数组并更新
addRole.value.checkedKeys = Array.from(allKeys)
console.log('新增角色包含所有父级的选中项:', addRole.value.checkedKeys)
+ if (addRole.value.checkedKeys.includes(124)) {
+ ifHasChannel.value = true
+ console.log('勾选了频道');
+ } else {
+ ifHasChannel.value = false
+ }
}
const selectParentNodes = (treeData, nodeId, checkedKeys) => {
if (!Array.isArray(treeData)) return false
@@ -411,18 +431,38 @@ const collectIds2 = (tree) => {
return ids
}
+const collectIdsAll = (tree) => {
+ let ids = []
+ tree.forEach((node) => {
+ ids.push(node.id)
+ // 如果当前节点没有 children 或 children 为空,说明是叶子节点
+ if (node.children || node.children.length === 0) {
+ ids = ids.concat(collectIdsAll(node.children))
+ }
+ })
+ return ids
+}
+
// 编辑角色初始化
const permissionEditRoleInit = async function (row) {
console.log('row', row)
console.log('row.tree', row.tree)
+ let EditIds = collectIdsAll(row.tree)
+ console.log(EditIds);
+
permissionEditRoleObj.value = {}
permissionEditRoleObj.value.id = row.id
permissionEditRoleObj.value.roleName = row.roleName
permissionEditRoleObj.value.market = row.market
permissionEditRoleObj.value.parentId = row.fatherId
permissionEditRoleObj.value.parentName = row.fatherName
-
+ permissionEditRoleObj.value.channel = row.channel
+ if (EditIds.includes(124)) {
+ ifHasChannel.value = true
+ } else {
+ ifHasChannel.value = false
+ }
try {
let roleId = permissionEditRoleObj.value.parentId;
// 如果没有上级角色,设置为管理员的id
@@ -634,9 +674,9 @@ onMounted(async function () {
-
+
@@ -684,6 +724,11 @@ onMounted(async function () {
暂无数据
+
+
+
+
+
@@ -727,6 +772,12 @@ onMounted(async function () {
暂无数据
+
+
+
+
+
+
diff --git a/src/views/permissions/userPermission.vue b/src/views/permissions/userPermission.vue
index d087f1f..3a9455c 100644
--- a/src/views/permissions/userPermission.vue
+++ b/src/views/permissions/userPermission.vue
@@ -185,7 +185,8 @@ const search = function () {
// 重置
const reset = function () {
admin.value = {}
-
+ // 重置页码
+ getObj.value.pageNum = 1
getPermission()
}
const RoleArea = ref([])
@@ -1003,7 +1004,7 @@ onMounted(async function () {
diff --git a/src/views/recharge/bean/beanOnlineRecharge.vue b/src/views/recharge/bean/beanOnlineRecharge.vue
index ac9c786..53ae57d 100644
--- a/src/views/recharge/bean/beanOnlineRecharge.vue
+++ b/src/views/recharge/bean/beanOnlineRecharge.vue
@@ -141,6 +141,8 @@ const reset = () => {
startTime: '',
endTime: '',
}
+ // 重置页码
+ getObj.value.pageNum = 1
getTime.value = []
activeTimeRange.value = ''
search()
@@ -441,7 +443,7 @@ onMounted(async function () {
diff --git a/src/views/recharge/bean/beanSystemRecharge.vue b/src/views/recharge/bean/beanSystemRecharge.vue
index 1d985a8..1068ec6 100644
--- a/src/views/recharge/bean/beanSystemRecharge.vue
+++ b/src/views/recharge/bean/beanSystemRecharge.vue
@@ -139,6 +139,8 @@ const reset = () => {
startTime: '',
endTime: '',
}
+ // 重置页码
+ getObj.value.pageNum = 1
getTime.value = []
activeTimeRange.value = ''
search()
@@ -410,7 +412,7 @@ onMounted(async function () {
diff --git a/src/views/recharge/gold/coinRechargeDetail.vue b/src/views/recharge/gold/coinRechargeDetail.vue
index 3ba566b..e9ca93a 100644
--- a/src/views/recharge/gold/coinRechargeDetail.vue
+++ b/src/views/recharge/gold/coinRechargeDetail.vue
@@ -413,6 +413,8 @@ const reset = function () {
delete sortOrder.value
getTime.value = {}
activeTimeRange.value = '' // 清除激活状态
+ // 重置页码
+ getObj.value.pageNum = 1
get()
}
@@ -700,7 +702,7 @@ const getTagText = (state) => {
-
diff --git a/src/views/refund/gold/coinRefundDetail.vue b/src/views/refund/gold/coinRefundDetail.vue
index c8358e0..f20e46d 100644
--- a/src/views/refund/gold/coinRefundDetail.vue
+++ b/src/views/refund/gold/coinRefundDetail.vue
@@ -231,6 +231,8 @@ const reset = function () {
getTime.value = {}
activeTimeRange.value = '' // 清除激活状态
selectedMarketPath.value = []
+ // 重置页码
+ getObj.value.pageNum = 1
getSelectBy()
}
// 今天
@@ -614,7 +616,7 @@ const getMarket = async function () {
diff --git a/src/views/usergold/bean/userbean.vue b/src/views/usergold/bean/userbean.vue
index d33c9c9..bc120f4 100644
--- a/src/views/usergold/bean/userbean.vue
+++ b/src/views/usergold/bean/userbean.vue
@@ -169,6 +169,8 @@ const trim = () => {
const reset = function () {
searchObj.value.jwcode = ''
searchObj.value.dept = ''
+ // 重置页码
+ pagination.value.pageNum = 1
search()
}
const handlePageSizeChange = function (val) {
diff --git a/src/views/usergold/gold/clientCountBalance.vue b/src/views/usergold/gold/clientCountBalance.vue
index 53c84f0..93e483d 100644
--- a/src/views/usergold/gold/clientCountBalance.vue
+++ b/src/views/usergold/gold/clientCountBalance.vue
@@ -203,8 +203,10 @@ const reset = function () {
}
sortField.value = ''
sortOrder.value = ''
- get()
selectedMarketPath.value = []
+ // 重置页码
+ getObj.value.pageNum = 1
+ get()
}
const cellClick = function (row, column) {
console.log('cellClick', column.label)
@@ -513,7 +515,7 @@ const format3 = (num) => {
diff --git a/src/views/usergold/gold/clientCountDetail.vue b/src/views/usergold/gold/clientCountDetail.vue
index 9e0e670..6c8be1f 100644
--- a/src/views/usergold/gold/clientCountDetail.vue
+++ b/src/views/usergold/gold/clientCountDetail.vue
@@ -233,6 +233,8 @@ const reset = function () {
getTime.value = []
activeTimeRange.value = '' // 清除激活状态
+ //重置页码
+ getObj.value.pageNum = 1
search()
}
@@ -599,7 +601,7 @@ const format3 = (num) => {