Browse Source

Merge branch 'milestone-20250728-金币前端三期' into zhangrenyuan/feature-20250728113353-金币前端三期

zhangrenyuan/feature-20250728113353-金币前端三期
zhangrenyuan 1 week ago
parent
commit
dd42ba3211
  1. 8
      src/views/audit/beanAudit.vue
  2. 30
      src/views/audit/gold/rechargeAudit.vue
  3. 32
      src/views/audit/gold/refundAudit.vue
  4. 14
      src/views/consume/bean/articleVideo.vue
  5. 7
      src/views/consume/bean/dieHardFan.vue
  6. 7
      src/views/consume/bean/liveStream.vue
  7. 4
      src/views/consume/gold/addCoinConsume.vue
  8. 17
      src/views/consume/gold/coinConsumeDetail.vue
  9. 34
      src/views/home.vue
  10. 11
      src/views/permissions/userPermission.vue
  11. 27
      src/views/recharge/beanOnlineRecharge.vue
  12. 22
      src/views/recharge/beanSystemRecharge.vue
  13. 13
      src/views/recharge/gold/addCoinRecharge.vue
  14. 19
      src/views/recharge/gold/coinRechargeDetail.vue
  15. 19
      src/views/refund/gold/addCoinRefund.vue
  16. 12
      src/views/refund/gold/coinRefundDetail.vue
  17. 11
      src/views/usergold/gold/clientCountBalance.vue
  18. 11
      src/views/usergold/gold/clientCountDetail.vue
  19. 7
      src/views/usergold/userbean.vue
  20. 2
      stats.html

8
src/views/audit/beanAudit.vue

@ -199,6 +199,13 @@ const handleSortChange = (column) => {
get()
}
const handleSearch = function () {
if(searchForm.value.jwcode){
const numRef = /^\d{1,9}$/;
if(!numRef.test(searchForm.value.jwcode)){
ElMessage.error('请检查精网号格式')
return
}
}
get()
getStats()
}
@ -363,6 +370,7 @@ const resetSearch = function () {
}
const handleClick = function (tab) {
resetSearch()
activeName.value = tab.props.name
if (tab.props.name === 'wait') {
adminWait()

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

@ -201,7 +201,7 @@ const formatTime = (val) => val ? moment(val).format('YYYY-MM-DD HH:mm:ss') : ''
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1,23 , 59, 59),
new Date(2000, 2, 1, 23, 59, 59),
]
//
@ -321,6 +321,18 @@ const getRecharge = async function (val) {
if (rechargeAudit.value.market === '总部' || rechargeAudit.value.market === '研发部') {
rechargeAudit.value.market = '';
}
//
if (rechargeAudit.value.jwcode) {
//
const numberRegex = /^\d{1,9}$/;
//
if (!numberRegex.test(rechargeAudit.value.jwcode)) {
ElMessage.error('请检查精网号格式')
return
}
}
const result = await request({
url: '/audit/selectRecharge',
data: {
@ -349,6 +361,18 @@ const getStats = async () => {
pageSize: getObj.value.pageSize,
rechargeAudit: rechargeAudit.value
}
//
if (rechargeAudit.value.jwcode) {
//
const numberRegex = /^\d{1,9}$/;
//
if (!numberRegex.test(rechargeAudit.value.jwcode)) {
// ElMessage.error('')
//
return
}
}
const res = await API({
url: '/audit/sumRechargeGold',
data: params
@ -394,7 +418,7 @@ const resetSearch = function () {
const getToday = function () {
const today = dayjs()
const startTime = today.startOf('day').format('YYYY-MM-DD HH:mm:ss')
const endTime =today.endOf('day').format('YYYY-MM-DD HH:mm:ss')
const endTime = today.endOf('day').format('YYYY-MM-DD HH:mm:ss')
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value)
@ -527,7 +551,7 @@ const showRejectDialog = (row) => {
if (findMenuById(menuTree.value, permissionMapping.Recharge_Approval)) {
rejectDialogVisible.value = true
}else {
} else {
ElMessage.error('无权限')
}
}

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

@ -173,7 +173,11 @@ import {useAdminStore} from "@/store/index.js";
import {storeToRefs} from "pinia";
import {findMenuById, permissionMapping} from "@/utils/menuTreePermission.js"
import dayjs from "dayjs";
const trimJwCode = () => {
if (searchForm.value.jwcode) {
searchForm.value.jwcode = searchForm.value.jwcode.replace(/\s/g, '');
}
}
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1,23 , 59, 59),
@ -328,7 +332,18 @@ const get = async function (val) {
}
}
console.log('看看传给后端的参数:', params)
//
if (searchForm.value.jwcode) {
//
const numberRegex = /^\d{1,9}$/;
//
if (!numberRegex.test(searchForm.value.jwcode)) {
ElMessage.error('请检查精网号格式')
//
return
}
}
const res = await API({url: '/audit/selectRefund', data: params})
tableData.value = res.list || []
pagination.value.total = res.total || 0
@ -405,6 +420,17 @@ const getStats = async () => {
...searchForm.value
}
}
if (searchForm.value.jwcode) {
//
const numberRegex = /^\d{1,9}$/;
//
if (!numberRegex.test(searchForm.value.jwcode)) {
// ElMessage.error('')
//
return
}
}
const res = await API({
url: '/audit/sumRefundGold',
data: params
@ -423,6 +449,8 @@ const getStats = async () => {
//
const handleSearch = function () {
// pagination.value.pageNum = 1
trimJwCode()
get()
getStats()
console.log('aaaaaaaaaa这是搜索按钮调用')

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

@ -239,6 +239,20 @@ const ConsumeSelectBy = async function (val) {
//
const search = function () {
getObj.value.pageNum = 1
if(beanConsumeArticle.value.jwcode){
const numRef = /^\d{1,9}$/;
if(!numRef.test(beanConsumeArticle.value.jwcode)){
ElMessage.error('请检查精网号格式')
return
}
}
if(beanConsumeArticle.value.articleId){
const numRef = /^\d{1,9}$/;
if(!numRef.test(beanConsumeArticle.value.articleId)){
ElMessage.error('请检查文章ID格式')
return
}
}
ConsumeSelectBy()
}
//

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

@ -228,6 +228,13 @@ const ConsumeSelectBy = async function (val) {
//
const search = function () {
getObj.value.pageNum = 1
if(beanConsumeFan.value.jwcode){
const numRef = /^\d{1,9}$/;
if(!numRef.test(beanConsumeFan.value.jwcode)){
ElMessage.error('请检查精网号格式')
return
}
}
ConsumeSelectBy()
}
//

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

@ -266,6 +266,13 @@ const selectLiveBy = async function (val) {
//
const search = function () {
getObj.value.pageNum = 1
if(beanConsumeLive.value.jwcode){
const numRef = /^\d{1,9}$/;
if(!numRef.test(beanConsumeLive.value.jwcode)){
ElMessage.error('请检查精网号格式')
return
}
}
selectLiveBy()
}
//

4
src/views/consume/gold/addCoinConsume.vue

@ -351,8 +351,8 @@ const getUser = async function (jwcode) {
}
//
if (!/^\d+$/.test(jwcode)) {
ElMessage.warning('精网号必须为数字');
if (!/^\d{1,9}$/.test(jwcode)) {
ElMessage.warning('精网号必须为数字且不超过九位');
resetForm()
return;
}

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

@ -10,7 +10,11 @@ import {reverseMarketMapping} from "@/utils/marketMap.js";
/*
====================工具方法==============================
*/
const trimJwCode = () => {
if (consumeUser.value.jwcode) {
consumeUser.value.jwcode = consumeUser.value.jwcode.replace(/\s/g, '');
}
}
//
const formatTime = (val) => val ? dayjs(val).format('YYYY-MM-DD HH:mm:ss') : ''
const defaultTime = [
@ -170,6 +174,16 @@ const ConsumeSelectBy = async function (val) {
if (consumeUser.value.market === '9' || consumeUser.value.market === '9999') {
consumeUser.value.market = '';
}
if (consumeUser.value.jwcode) {
//
const numberRegex = /^\d{1,9}$/;
//
if (!numberRegex.test(consumeUser.value.jwcode)) {
ElMessage.error('请检查精网号格式')
return
}
}
const result = await request({
url: '/consume/selectBy',
@ -261,6 +275,7 @@ const ConsumeSelectBy = async function (val) {
}
//
const search = function () {
trimJwCode()
getObj.value.pageNum = 1
ConsumeSelectBy()
}

34
src/views/home.vue

@ -1,7 +1,7 @@
<script setup>
//
import {ref} from 'vue'
import {useRouter} from 'vue-router'
import {computed, ref} from 'vue'
import {useRoute, useRouter} from 'vue-router'
import {ElMessage} from 'element-plus'
import dmmn from '../assets/link.png'
import ChangePassword from '@/components/changePassword.vue'
@ -21,7 +21,35 @@ const {adminData, menuTree} = storeToRefs(adminStore)
menuList.value = filterMenu(menuTree.value)
console.log("menuList", menuList.value)
//
const route = useRoute()
// index
function findBestMatch(menuList, path) {
let bestMatch = ''
function traverse(menus) {
for (const item of menus) {
const itemPath = getRoutePath(item)
// path
if (path.startsWith(itemPath) && itemPath.length > bestMatch.length) {
bestMatch = itemPath
}
if (item.children && item.children.length > 0) {
traverse(item.children)
}
}
}
traverse(menuList)
return bestMatch || path // fallback
}
//
const activeMenu = computed(() => {
return findBestMatch(menuList.value, route.path)
})
const router = useRouter()
const imgrule1 = dmmn
const messageVisible = ref(false)
@ -81,7 +109,7 @@ function logout() {
<el-menu
:router="true"
class="el-menu-vertical-demo"
:default-active="$route.path"
:default-active="activeMenu"
>
<!-- 递归渲染菜单层级 -->
<template v-for="menu in menuList" :key="menu.id">

11
src/views/permissions/userPermission.vue

@ -134,6 +134,17 @@ const getPermission = async function (val) {
if (admin.value.market === '总部' || admin.value.market === '研发部') {
admin.value.market = '';
}
if (admin.value.account) {
//
const numberRegex = /^\d{1,20}$/;
//
if (!numberRegex.test(admin.value.account)) {
ElMessage.error('请检查OA号格式')
//
return
}
}
const result = await request({
url: '/permission/getPermission',
data: {

27
src/views/recharge/beanOnlineRecharge.vue

@ -7,8 +7,8 @@ import axios from 'axios'
import moment from 'moment'
import API from '@/util/http'
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1,23 , 59, 59),
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1, 23, 59, 59),
]
const selectData = ref({
jwcode: '',
@ -141,6 +141,15 @@ const reset = () => {
//
const search = () => {
getObj.value.pageNum = 1
//
getObj.value.pageNum = 1
if (selectData.value.jwcode) {
const numRef = /^\d{1,9}$/;
if (!numRef.test(selectData.value.jwcode)) {
ElMessage.error('请检查精网号格式')
return
}
}
get()
getTotalBeans()
}
@ -372,7 +381,7 @@ onMounted(async function () {
<el-text class="mx-1" size="large">充值时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间" end-placeholder="结束时间" style="width: 350px"
@change="handleDatePickerChange" :default-time="defaultTime"/>
@change="handleDatePickerChange" :default-time="defaultTime" />
<el-button @click="getToday()" style="margin-left: 10px"
:type="activeTimeRange === 'today' ? 'primary' : ''">
</el-button>
@ -401,7 +410,13 @@ onMounted(async function () {
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 520px; overflow-y: auto;margin-top: 10px;">
<el-table :data="tableData" style="width: 100%" height="520px" @sort-change="handleSortChange">
<el-table-column type="id" prop='id' label="ID" min-width="80px" fixed="left"></el-table-column>
<el-table-column type="index" label="序号" width="80px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column fixed="left" prop="name" label="姓名" min-width="120" />
<el-table-column fixed="left" prop="jwcode" label="精网号" min-width="110px" />
<el-table-column prop="market" label="所属地区" min-width="100px" />
@ -466,6 +481,4 @@ onMounted(async function () {
</template>
</el-dialog>
</template>
<style scoped>
</style>
<style scoped></style>

22
src/views/recharge/beanSystemRecharge.vue

@ -19,8 +19,8 @@ const freeBean = ref(0)
const beanNum = ref(0)
const money = ref(0)
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1,23 , 59, 59),
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1, 23, 59, 59),
]
//
const formatTime = (val) => val ? moment(val).format('YYYY-MM-DD HH:mm:ss') : ''
@ -139,7 +139,15 @@ const reset = () => {
//
const search = () => {
//
getObj.value.pageNum = 1
if (selectData.value.jwcode) {
const numRef = /^\d{1,9}$/;
if (!numRef.test(selectData.value.jwcode)) {
ElMessage.error('请检查精网号格式')
return
}
}
get()
getTotalBeans()
}
@ -340,7 +348,7 @@ onMounted(async function () {
<el-text class="mx-1" size="large">充值时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间" end-placeholder="结束时间" style="width: 350px"
@change="handleDatePickerChange" :default-time="defaultTime"/>
@change="handleDatePickerChange" :default-time="defaultTime" />
<el-button @click="getToday()" style="margin-left: 10px"
:type="activeTimeRange === 'today' ? 'primary' : ''">
</el-button>
@ -375,7 +383,13 @@ onMounted(async function () {
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 520px; overflow-y: auto;margin-top: 10px;">
<el-table :data="tableData" style="width: 100%" height="520px" @sort-change="handleSortChange">
<el-table-column type="id" prop="id" label="ID" min-width="80px" fixed="left"></el-table-column>
<el-table-column type="index" label="序号" width="80px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
</template>
</el-table-column>
<el-table-column fixed="left" prop="name" label="姓名" min-width="100" />
<el-table-column fixed="left" prop="jwcode" label="精网号" min-width="110px" />
<el-table-column prop="market" label="所属地区" min-width="100px" />

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

@ -330,6 +330,19 @@ const rules = reactive({
const user = ref({})
const getUser = async function (jwcode) {
trimJwCode();
//
if (!jwcode) {
ElMessage.warning('精网号不能为空');
return;
}
//
if (!/^\d{1,9}$/.test(jwcode)) {
ElMessage.warning('精网号必须为数字且不超过九位');
deleteRecharge()
return;
}
try {
const result = await API({
url: '/user/selectUser',

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

@ -5,6 +5,12 @@ import moment from 'moment'
import API from '@/util/http.js'
import {reverseMarketMapping} from '@/utils/marketMap.js';
import dayjs from "dayjs";
const trimJwCode = () => {
if (rechargeUser.value.jwcode) {
rechargeUser.value.jwcode = rechargeUser.value.jwcode.replace(/\s/g, '');
}
}
//
const adminData = ref({})
const getAdminData = async function () {
@ -307,6 +313,18 @@ const get = async function (val) {
if (rechargeUser.value.market === '9' || rechargeUser.value.market === '9999') {
rechargeUser.value.market = '';
}
if (rechargeUser.value.jwcode) {
//
const numberRegex = /^\d{1,9}$/;
//
if (!numberRegex.test(rechargeUser.value.jwcode)) {
ElMessage.error('请检查精网号格式')
//
return
}
}
const result = await API({
url: '/recharge/selectBy',
data: {
@ -366,6 +384,7 @@ const get = async function (val) {
}
//
const search = function () {
trimJwCode()
getObj.value.pageNum = 1
get()
}

19
src/views/refund/gold/addCoinRefund.vue

@ -200,6 +200,17 @@ const user = ref({
const getUser = async function (jwcode) {
trimJwCode();
// cancelExceptJwcode();
//
if (!jwcode) {
ElMessage.warning('精网号不能为空');
return;
}
//
if (!/^\d{1,9}$/.test(jwcode)) {
cancel()
return;
}
try {
// POST
const result = await API({
@ -267,6 +278,14 @@ const refundType = ref([{value: '商品退款', label: '商品退款'}]);
const goodsName = ref([])
const getGoods = async function (jwcode) {
trimJwCode();
//
//
if (!/^\d{1,9}$/.test(jwcode)) {
ElMessage.warning('精网号必须为数字且不超过九位');
return;
}
//
if (!addRefund.value.jwcode) {

12
src/views/refund/gold/coinRefundDetail.vue

@ -133,6 +133,17 @@ const getSelectBy = async function (val) {
if (refundUser.value.market === '9' || refundUser.value.market === '9999') {
refundUser.value.market = '';
}
if (refundUser.value.jwcode) {
//
const numberRegex = /^\d{1,9}$/;
//
if (!numberRegex.test(refundUser.value.jwcode)) {
ElMessage.error('请检查精网号格式')
//
return
}
}
const result = await API({
url: '/refund/selectBy',
data: {
@ -186,6 +197,7 @@ const getSelectBy = async function (val) {
}
//
const search = function () {
trimJwCode()
getObj.value.pageNum = 1
getSelectBy()
}

11
src/views/usergold/gold/clientCountBalance.vue

@ -90,6 +90,17 @@ const get = async function (val) {
if (user.value.markets.includes('9') || user.value.markets.includes('9999')) {
user.value.markets = [];
}
if (user.value.jwcode) {
//
const numberRegex = /^\d{1,9}$/;
//
if (!numberRegex.test(user.value.jwcode)) {
ElMessage.error('请检查精网号格式')
//
return
}
}
const result = await API({
url: '/goldDetail/getGold',
method: 'post',

11
src/views/usergold/gold/clientCountDetail.vue

@ -152,6 +152,17 @@ const get = async function (val) {
if (goldDetail.value.markets.includes('9') || goldDetail.value.markets.includes('9999')) {
goldDetail.value.markets = [];
}
if (goldDetail.value.jwcode) {
//
const numberRegex = /^\d{1,9}$/;
//
if (!numberRegex.test(goldDetail.value.jwcode)) {
ElMessage.error('请检查精网号格式')
//
return
}
}
const result = await API({
url: '/goldDetail/getGoldDetail',
method: 'post',

7
src/views/usergold/userbean.vue

@ -71,6 +71,13 @@ const get = async function () {
if(findMenuById(menuTree.value, permissionMapping.View_Golden_Bean_Balance)){
try {
trim()
if(searchObj.value.jwcode){
const numRef = /^\d{1,9}$/;
if(!numRef.test(searchObj.value.jwcode)){
ElMessage.error('请检查精网号格式')
return
}
}
const params = {
beanUser: { //
jwcode: searchObj.value.jwcode, //

2
stats.html
File diff suppressed because it is too large
View File

Loading…
Cancel
Save