Browse Source

it's a pull operation

dev
lihuilin 1 day ago
parent
commit
6670e77167
  1. 4
      .env.development
  2. 272
      src/views/audit/gold/rechargeAudit.vue
  3. 100
      src/views/audit/gold/refundAudit.vue
  4. 16
      src/views/consume/gold/coinConsumeDetail.vue
  5. 21
      src/views/permissions/rolePermission.vue
  6. 27
      src/views/permissions/userPermission.vue
  7. 21
      src/views/recharge/gold/coinRechargeDetail.vue
  8. 18
      src/views/refund/gold/coinRefundDetail.vue
  9. 61
      src/views/usergold/gold/clientCountBalance.vue
  10. 31
      src/views/usergold/gold/clientCountDetail.vue

4
.env.development

@ -1,4 +1,4 @@
# VITE_API_BASE='https://hwjb.homilychart.com/dev/admin'
VITE_API_BASE='https://hwjb.homilychart.com/dev/admin'
# 测试环境
# VITE_API_BASE='http://54.255.212.181:10704/'
# 正式环境
@ -11,6 +11,6 @@ VITE_UPLOAD_URL=http://39.101.133.168:8828/hljw/api/aws/upload
# zhangyong
# VITE_API_BASE='http://192.168.3.83:8081/'
# 本地
VITE_API_BASE='http://localhost:8081/'
# VITE_API_BASE='http://localhost:8081/'
# sunjiabei
# VITE_API_BASE='http://192.168.0.113:8081/'

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

@ -1,127 +1,146 @@
<template>
<el-card style="margin-bottom: 0.5vh;margin-top: 0.5vh">
<el-col style="margin-bottom: 0.5vh">
<el-text size="large">精网号</el-text>
<el-input v-model="rechargeAudit.jwcode" placeholder="请输入精网号" style="width: 12vw;margin-right:1vw" clearable />
<el-col style="margin-bottom: 0.5vh">
<el-text size="large">精网号</el-text>
<el-input v-model="rechargeAudit.jwcode" placeholder="请输入精网号" style="width: 12vw;margin-right:1vw"
clearable/>
<el-text size="large">活动名称</el-text>
<el-select v-model="rechargeAudit.activity" placeholder="请选择活动名称" style="width: 12vw;margin-right:1vw" clearable>
<el-option v-for="item in activity" :key="item" :label="item" :value="item" />
</el-select>
<el-text size="large">活动名称</el-text>
<el-select v-model="rechargeAudit.activity" placeholder="请选择活动名称" style="width: 12vw;margin-right:1vw"
clearable>
<el-option v-for="item in activity" :key="item" :label="item" :value="item"/>
</el-select>
<el-text size="large">支付方式</el-text>
<el-select v-model="rechargeAudit.payModel" placeholder="请选择支付方式" style="width: 12vw;margin-right:1vw" clearable>
<el-option v-for="item in payModel" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
<el-text size="large">支付方式</el-text>
<el-select v-model="rechargeAudit.payModel" placeholder="请选择支付方式" style="width: 12vw;margin-right:1vw"
clearable>
<el-option v-for="item in payModel" :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:12vw"
@change="handleMarketChange" />
</el-col>
<el-col>
<el-text size="large">充值时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" class="time-controls" style="margin-right:1vw;width:25vw"
@change="handleDatePickerChange" />
<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="resetSearch" type="success">重置</el-button>
<el-button @click="handleSearch"type="primary" >查询</el-button>
</el-col>
<el-text size="large">所属地区</el-text>
<el-cascader v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区" clearable
style="width:12vw"
@change="handleMarketChange"/>
</el-col>
<el-col>
<el-text size="large">
{{ activeName === 'wait' ? '提交时间:' : '审核时间:' }}
</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" class="time-controls" style="margin-right:1vw;width:25vw"
@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="resetSearch" type="success">重置</el-button>
<el-button @click="handleSearch" type="primary">查询</el-button>
</el-col>
</el-card>
<el-card>
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="待审核" name="wait"></el-tab-pane>
<el-tab-pane label="已通过" name="pass"></el-tab-pane>
<el-tab-pane label="已驳回" name="reject"></el-tab-pane>
<div>
总条数{{ format3(stats.totalNum) }}&nbsp;&nbsp;&nbsp;&nbsp;
总金币数{{ format3(stats.permanentGolds + stats.freeGolds + stats.taskGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(stats.permanentGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(stats.freeGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
<el-card>
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="待审核" name="wait"></el-tab-pane>
<el-tab-pane label="已通过" name="pass"></el-tab-pane>
<el-tab-pane label="已驳回" name="reject"></el-tab-pane>
<div>
总条数{{ format3(stats.totalNum) }}&nbsp;&nbsp;&nbsp;&nbsp;
充值新币{{ format3(stats.permanentGolds) }}新币&nbsp;&nbsp;&nbsp;&nbsp;
总金币数{{ format3(stats.permanentGolds + stats.freeGolds + stats.taskGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(stats.permanentGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(stats.freeGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
</div>
</el-tabs>
<el-table :data="tableData" style="width: 100vw;height:55vh" @sort-change="handleSortChange"
:row-style="{ height: '50px' }">
<el-table-column type="index" label="序号" width="100px" 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="姓名" width="150px"/>
<el-table-column fixed="left" prop="jwcode" label="精网号" width="110px"/>
<el-table-column prop="market" label="所属地区" width="100px"/>
<el-table-column prop="activity" label="活动名称" width="100px" show-overflow-tooltip/>
<el-table-column prop="rateName" label="货币名称" width="110px"/>
<el-table-column prop="money" sortable="custom" label="充值金额" width="110px"/>
<el-table-column prop="money" label="充值金额" sortable="custom" width="110px">
<template #default="scope">{{ scope.row.permanentGold / 100 }}</template>
</el-table-column>
<el-table-column prop="permanentGold" label="永久金币" width="110px" sortable="custom">
<template #default="scope">{{ scope.row.permanentGold / 100 }}</template>
</el-table-column>
<el-table-column prop="freeGold" label="免费金币" sortable="custom" width="110px">
<template #default="scope">{{ (scope.row.freeGold) / 100 }}</template>
</el-table-column>
<el-table-column prop="remark" label="备注" width="200px" show-overflow-tooltip/>
<el-table-column prop="payModel" label="支付方式" width="110px"/>
<el-table-column prop="voucher" label="支付凭证" width="110px">
<template #default="scope">
<div v-if="scope.row.voucher"
style="display: flex; justify-content: center; align-items: center; cursor: pointer;"
@click="previewImage(scope.row.voucher)">
<img :src="scope.row.voucher" alt="支付凭证" style="width: auto; height: 40px;">
</div>
</el-tabs>
<el-table :data="tableData" style="width: 100vw;height:55vh" @sort-change="handleSortChange"
:row-style="{ height: '50px' }">
<el-table-column type="index" label="序号" width="100px" 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="姓名" width="150px" />
<el-table-column fixed="left" prop="jwcode" label="精网号" width="110px" />
<el-table-column prop="market" label="所属地区" width="100px" />
<el-table-column prop="activity" label="活动名称" width="100px" show-overflow-tooltip />
<el-table-column prop="money" label="充值金额" sortable="custom" width="110px">
<template #default="scope">{{ scope.row.permanentGold / 100 }}</template>
</el-table-column>
<el-table-column prop="permanentGold" label="永久金币" width="110px" sortable="custom">
<template #default="scope">{{ scope.row.permanentGold / 100 }}</template>
</el-table-column>
<el-table-column prop="freeGold" label="免费金币" sortable="custom" width="110px">
<template #default="scope">{{ (scope.row.freeGold) / 100 }}</template>
</el-table-column>
<el-table-column prop="remark" label="备注" width="200px" show-overflow-tooltip />
<el-table-column prop="payModel" label="支付方式" width="110px" />
<el-table-column prop="voucher" label="支付凭证" width="110px">
<template #default="scope">
<div v-if="scope.row.voucher"
style="display: flex; justify-content: center; align-items: center; cursor: pointer;"
@click="previewImage(scope.row.voucher)">
<img :src="scope.row.voucher" alt="支付凭证" style="width: auto; height: 40px;">
</div>
<div v-else style="display: flex; justify-content: center; align-items: center; height: 40px;">--</div>
</template>
</el-table-column>
<el-table-column prop="adminName" label="提交人" width="100px" />
<el-table-column prop="rejectReason" v-if="activeName === 'reject'" label="驳回理由" width="200px"
show-overflow-tooltip />
<el-table-column v-if="activeName !== 'wait'" prop="auditName" label="审核人" width="100px" />
<el-table-column prop="payTime" sortable="custom" label="付款时间" width="200px">
<template #default="scope">
{{ moment(scope.row.payTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column prop="createTime" sortable="custom" label="提交时间" width="200px">
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column v-if="activeName !== 'wait'" prop="auditTime" label="审核时间" width="200px">
<template #default="scope">
{{ moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') }}
<div v-else style="display: flex; justify-content: center; align-items: center; height: 40px;">--</div>
</template>
</el-table-column>
<el-table-column prop="adminName" label="提交人" width="100px"/>
<el-table-column prop="rejectReason" v-if="activeName === 'reject'" label="驳回理由" width="200px"
show-overflow-tooltip/>
<el-table-column v-if="activeName !== 'wait'" prop="auditName" label="审核人" width="100px"/>
<el-table-column prop="payTime" sortable="custom" label="付款时间" width="200px">
<template #default="scope">
{{ moment(scope.row.payTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column prop="createTime" sortable="custom" label="提交时间" width="200px">
<template #default="scope">
<!-- {{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}-->
{{
activeName === 'wait'
? moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss')
: moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss')
}}
</template>
</el-table-column>
<el-table-column v-if="activeName !== 'wait'" prop="auditTime" label="审核时间" width="200px">
<template #default="scope">
{{ moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column v-if="activeName === 'wait'" fixed="right" prop="operation" label="操作" width="150px">
<template #default="scope">
<div class="operation">
<el-popconfirm title="确定要通过此条记录吗?" @confirm="handleApprove(scope.row)">
<template #reference>
<el-button :disabled="scope.row.auditStatus === 1 || scope.row.auditStatus === 2" type="primary" text>
通过
</el-button>
</template>
</el-table-column>
<el-table-column v-if="activeName === 'wait'" fixed="right" prop="operation" label="操作" width="150px">
<template #default="scope">
<div class="operation">
<el-popconfirm title="确定要通过此条记录吗?" @confirm="handleApprove(scope.row)">
<template #reference>
<el-button :disabled="scope.row.auditStatus === 1 || scope.row.auditStatus === 2" type="primary" text>
通过
</el-button>
</template>
</el-popconfirm>
<el-button :disabled="scope.row.auditStatus === 1 || scope.row.auditStatus === 2" type="primary" text @click="showRejectDialog(scope.row)">
驳回
</el-button>
</div>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handlePagination('size', $event)"
@current-change="handlePagination('page', $event)"></el-pagination>
</div>
</el-card>
</el-popconfirm>
<el-button :disabled="scope.row.auditStatus === 1 || scope.row.auditStatus === 2" type="primary" text
@click="showRejectDialog(scope.row)">
驳回
</el-button>
</div>
</template>
</el-table-column>
</el-table>
<div class="pagination">
<el-pagination :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handlePagination('size', $event)"
@current-change="handlePagination('page', $event)"></el-pagination>
</div>
</el-card>
<el-dialog v-model="rejectDialogVisible" title="驳回理由" width="500px">
<el-form>
<el-form-item label="驳回理由" required>
<el-input v-model="rejectReason" type="textarea" :rows="4" placeholder="请输入驳回理由" maxlength="200" show-word-limit />
<el-input v-model="rejectReason" type="textarea" :rows="4" placeholder="请输入驳回理由" maxlength="200"
show-word-limit/>
</el-form-item>
</el-form>
<template #footer>
@ -134,18 +153,23 @@
</template>
<script setup>
import { onMounted, reactive, ref } from 'vue'
import { ElMessage } from 'element-plus'
import {onMounted, reactive, ref} from 'vue'
import {ElMessage} from 'element-plus'
import request from '@/util/http.js'
import API from '@/util/http.js'
import moment from 'moment'
import { useAdminStore } from "@/store/index.js";
import { storeToRefs } from "pinia";
import {useAdminStore} from "@/store/index.js";
import {storeToRefs} from "pinia";
const adminStore = useAdminStore();
const { adminData, menuTree } = storeToRefs(adminStore);
import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js"
const {adminData, menuTree} = storeToRefs(adminStore);
import {findMenuById, permissionMapping} from "@/utils/menuTreePermission.js"
import dayjs from "dayjs";
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1, 23, 59, 59),
]
const tableData = ref([])
//
const activeTimeRange = ref('')
@ -208,7 +232,7 @@ const stats = ref({
})
//
const rules = reactive({
rejectReason: [{ required: true, message: '请输入驳回理由', trigger: 'blur' }]
rejectReason: [{required: true, message: '请输入驳回理由', trigger: 'blur'}]
})
//
const getRecharge = async function (val) {
@ -414,7 +438,7 @@ const handleApprove = async (row) => {
action: 1,
rejectReason: ''
}
await request({ url: '/audit/audit', data: params })
await request({url: '/audit/audit', data: params})
ElMessage.success('审核通过成功')
await getRecharge()
await getStats()
@ -452,7 +476,7 @@ const handleReject = async () => {
rejectReason: rejectReason.value
}
await request({ url: '/audit/audit', data: params })
await request({url: '/audit/audit', data: params})
ElMessage.success('驳回操作成功')
rejectDialogVisible.value = false
await getRecharge()
@ -523,7 +547,7 @@ const handleMarketChange = (value) => {
}
}
const props = { multiple: true }
const props = {multiple: true}
//
const getMarket = async function () {
try {
@ -537,8 +561,8 @@ const getMarket = async function () {
const allChildren = nodes.flatMap(node => node.children || []);
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
? transformTree([child]) //
: null;
return {
value: child.name,
label: child.name,

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

@ -2,27 +2,33 @@
<el-card style="margin-bottom: 0.5vh;margin-top:0.5vh;width:82.5vw">
<el-col style="margin-bottom: 0.5vh">
<el-text size="large">精网号</el-text>
<el-input v-model="searchForm.jwcode" placeholder="请输入精网号" style="width: 12vw;margin-right:1vw" clearable />
<el-input v-model="searchForm.jwcode" placeholder="请输入精网号" style="width: 12vw;margin-right:1vw" clearable/>
<el-text size="large">商品名</el-text>
<el-select v-model="searchForm.goodsName" placeholder="请输入商品名" style="width: 12vw;margin-right:1vw" clearable>
<el-select v-model="searchForm.goodsName" placeholder="请输入商品名" style="width: 12vw;margin-right:1vw"
clearable>
<el-option v-for="item in refundGoodsOptions" :key="item" :label="item" :value="item"></el-option>
</el-select>
<el-text size="large">退款方式</el-text>
<el-select v-model="searchForm.refundModel" placeholder="请选择" style="width: 12vw;margin-right:1vw" clearable>
<el-option label="全部退款" value="0" />
<el-option label="部分退款" value="1" />
<el-option label="全部退款" value="0"/>
<el-option label="部分退款" value="1"/>
</el-select>
<el-text size="large">所属地区</el-text>
<el-cascader v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区" clearable style="width:12vw"
@change="handleMarketChange" />
<el-cascader v-model="selectedMarketPath" :options="market" placeholder="请选择所属地区" clearable
style="width:12vw"
@change="handleMarketChange"/>
</el-col>
<el-col>
<el-text size="large">提交时间</el-text>
<el-date-picker v-model="dateRange" type="datetimerange" range-separator="" start-placeholder="开始时间" class="time-controls"
end-placeholder="结束时间" style="margin-right:1vw;width:25vw" @change="handleDatePickerChange" />
<el-text size="large">
{{ activeName === 'wait' ? '提交时间:' : '审核时间:' }}
</el-text>
<el-date-picker v-model="dateRange" type="datetimerange" range-separator="" start-placeholder="开始时间"
class="time-controls"
end-placeholder="结束时间" style="margin-right:1vw;width:25vw" @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>
@ -47,18 +53,18 @@
</div>
<el-table :data="tableData" style="height:55vh" @sort-change="handleSortChange">
<el-table-column type="index" label="序号" width="60" />
<el-table-column prop="name" label="姓名" width="120" />
<el-table-column prop="jwcode" label="精网号" width="120" />
<el-table-column prop="market" label="所属地区" width="120" />
<el-table-column type="index" label="序号" width="60"/>
<el-table-column prop="name" label="姓名" width="120"/>
<el-table-column prop="jwcode" label="精网号" width="120"/>
<el-table-column prop="market" label="所属地区" width="120"/>
<el-table-column prop="refundType" label="退款类型" width="120" />
<el-table-column prop="refundType" label="退款类型" width="120"/>
<el-table-column prop="refundModel" label="退款方式" width="120">
<template #default="{ row }">
{{ row.refundModel === 0 ? '全部退款' : '部分退款' }}
</template>
</el-table-column>
<el-table-column prop="goodsName" label="退款商品" width="120" show-overflow-tooltip />
<el-table-column prop="goodsName" label="退款商品" width="120" show-overflow-tooltip/>
<el-table-column prop="sumGold" label="退款金额" width="120" sortable="custom">
<template #default="{ row }">
{{ row.sumGold / 100 }}
@ -79,14 +85,20 @@
{{ row.taskGold / 100 }}
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" width="150" show-overflow-tooltip />
<el-table-column prop="adminName" label="提交人" width="120" />
<el-table-column prop="remark" label="备注" width="150" show-overflow-tooltip/>
<el-table-column prop="adminName" label="提交人" width="120"/>
<el-table-column v-if="checkTab === 'reject'" prop="rejectReason" label="驳回理由" width="150"
show-overflow-tooltip />
<el-table-column v-if="checkTab !== 'pending'" prop="auditName" label="审核人" width="120" />
show-overflow-tooltip/>
<el-table-column v-if="checkTab !== 'pending'" prop="auditName" label="审核人" width="120"/>
<el-table-column prop="createTime" label="提交时间" width="180" sortable="custom">
<template #default="{ row }">
{{ moment(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
<!-- {{ moment(row.createTime).format('YYYY-MM-DD HH:mm:ss') }}-->
{{
checkTab === 'pending'
? moment(row.auditTime).format('YYYY-MM-DD HH:mm:ss')
: moment(row.createTime).format('YYYY-MM-DD HH:mm:ss')
}}
</template>
</el-table-column>
<el-table-column v-if="checkTab !== 'pending'" prop="auditTime" label="审核时间" width="180" sortable="custom">
@ -105,7 +117,7 @@
</template>
</el-popconfirm>
<el-button :disabled="scope.row.auditStatus === 1 || scope.row.auditStatus === 2" type="primary" text
@click="showRejectDialog(scope.row)">
@click="showRejectDialog(scope.row)">
驳回
</el-button>
</div>
@ -113,15 +125,16 @@
</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"
@current-change="handleCurrentChange"></el-pagination>
layout="total, sizes, prev, pager, next, jumper" :total="pagination.total"
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"></el-pagination>
</el-card>
<el-dialog v-model="rejectDialogVisible" title="驳回理由" width="500px">
<el-form>
<el-form-item label="驳回理由" required>
<el-input v-model="rejectReason" type="textarea" :rows="4" placeholder="请输入驳回理由" maxlength="200"
show-word-limit />
show-word-limit/>
</el-form-item>
</el-form>
<template #footer>
@ -134,17 +147,21 @@
</template>
<script setup>
import { onMounted, reactive, ref } from 'vue'
import { ElMessage } from 'element-plus'
import {onMounted, reactive, ref} from 'vue'
import {ElMessage} from 'element-plus'
import API from '@/util/http.js'
import moment from 'moment'
import { useAdminStore } from "@/store/index.js";
import { storeToRefs } from "pinia";
import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js"
import {useAdminStore} from "@/store/index.js";
import {storeToRefs} from "pinia";
import {findMenuById, permissionMapping} from "@/utils/menuTreePermission.js"
import dayjs from "dayjs";
const adminStore = useAdminStore();
const { adminData, menuTree } = storeToRefs(adminStore);
const adminStore = useAdminStore();
const {adminData, menuTree} = storeToRefs(adminStore);
const defaultTime = [
new Date(2000, 1, 1, 0, 0, 0),
new Date(2000, 2, 1, 23, 59, 59),
]
//
const activeTimeRange = ref('')
const scopeValue = ref(null) //
@ -177,6 +194,7 @@ const tableData = ref([])
const marketOptions = ref([])
const refundGoodsOptions = ref([])
const adminInfo = ref({})
//
const stats = ref({
totalNum: 0,
@ -224,7 +242,7 @@ const showRejectDialog = (row) => {
//
const getRefundGoods = async () => {
try {
const res = await API({ url: '/general/goods' })
const res = await API({url: '/general/goods'})
refundGoodsOptions.value = res.data || []
} catch (error) {
console.error('获取商品列表失败', error)
@ -269,7 +287,7 @@ const get = async function (val) {
return
}
}
const res = await API({ url: '/audit/selectRefund', data: params })
const res = await API({url: '/audit/selectRefund', data: params})
tableData.value = res.list || []
pagination.value.total = res.total || 0
console.log('查全部的total', pagination.value.total, res.total)
@ -284,11 +302,11 @@ const handleApprove = async (row) => {
try {
const params = {
orderCode: row.orderCode,
auditId: adminInfo.value.id,
auditId: adminData.value.id,
action: 1,// action1,2
rejectReason: ''
}
await API({ url: '/audit/audit', data: params })
await API({url: '/audit/audit', data: params})
ElMessage.success('审核通过成功')
get()
getStats()
@ -312,11 +330,11 @@ const handleReject = async () => {
try {
const params = {
orderCode: scopeValue.value.orderCode,
auditId: adminInfo.value.id,
auditId: adminData.value.id,
action: 2,
rejectReason: rejectReason.value
}
await API({ url: '/audit/audit', data: params })
await API({url: '/audit/audit', data: params})
ElMessage.success('驳回成功')
rejectDialogVisible.value = false
get()
@ -492,8 +510,8 @@ const getMarket = async function () {
return allChildren.map(child => {
const grandchildren = child.children && child.children.length
? transformTree([child]) //
: null;
? transformTree([child]) //
: null;
return {
value: child.name,
@ -523,7 +541,7 @@ const format3 = (num) => {
}
//
const rules = reactive({
reason: [{ required: true, message: '请输入驳回理由', trigger: 'blur' }]
reason: [{required: true, message: '请输入驳回理由', trigger: 'blur'}]
})
const handlePageSizeChange = function (val) {
pagination.value.pageSize = val
@ -544,7 +562,7 @@ onMounted(async () => {
<style scoped>
.pagination {
display: flex;
margin-top:0.5vh;
margin-top: 0.5vh;
}
.operation {

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

@ -633,10 +633,10 @@ const getMarket = async function () {
<el-col>
<el-card>
<div>
消耗总金额{{ format3(Math.abs(permanentGolds) / 100) }}新币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(Math.abs(permanentGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(Math.abs(freeGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(Math.abs(taskGolds) / 100) }}
消耗新币{{ format3(Math.abs(permanentGolds) ) }}新币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(Math.abs(permanentGolds) ) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(Math.abs(freeGolds) ) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(Math.abs(taskGolds) ) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 576px; overflow-y: auto">
@ -672,24 +672,24 @@ const getMarket = async function () {
{{
(scope.row.taskGold +
scope.row.freeGold +
scope.row.permanentGold) / 100
scope.row.permanentGold)
}}
</template>
</el-table-column>
<el-table-column prop="permanentGold" label="永久金币" sortable="“custom”" width="110px">
<template #default="scope">
{{ scope.row.permanentGold / 100 }}
{{ scope.row.permanentGold}}
</template>
</el-table-column>
<el-table-column prop="freeGold" label="免费金币" sortable="“custom”" width="110px">
<template #default="scope">
{{ scope.row.freeGold / 100 }}
{{ scope.row.freeGold }}
</template>
</el-table-column>
<el-table-column prop="taskGold" label="任务金币" sortable="“custom”" width="110px">
<template #default="scope">
{{ scope.row.taskGold / 100 }}
{{ scope.row.taskGold }}
</template>
</el-table-column>

21
src/views/permissions/rolePermission.vue

@ -189,19 +189,13 @@ const getStore = async function () {
}
//
const openPermissionAddVisible = function () {
permissionAddVisible.value = true
getRoles()
getLists()
}
const closePermissionAddVisible = function () {
addRole.value = {
roleName: '',
parentId: null,
checkedKeys: [],
grade: '',
market: ''
}
permissionAddVisible.value = false
Ref.value.resetFields();
getRoleList()
@ -211,7 +205,10 @@ const closePermissionAddVisible = function () {
const permissionAddInit = function () {
openPermissionAddVisible()
}
const handleDialogClose = function(){
closePermissionAddVisible()
console.log('hhh');
}
// ref
const Ref = ref(null)
@ -388,9 +385,7 @@ const filterGoldenBeanMenus = (tree) => {
});
};
const handleMarketChange = () => {
getLists(); //
};
const treeRef = ref(null)
//
@ -759,7 +754,7 @@ onMounted(async function () {
</el-dialog>
<!-- 新增角色 -->
<el-dialog v-model="permissionAddVisible" title="新增角色" width="800px" :close-on-click-modal="false">
<el-dialog v-model="permissionAddVisible" title="新增角色" width="800px" :close-on-click-modal="false" @close="handleDialogClose ">
<template #footer>
<el-form ref="Ref" :rules="Rolerules" :model="addRole" label-width="auto"
style="max-width: 600px; align-items: center">
@ -774,7 +769,7 @@ onMounted(async function () {
</el-select>
</el-form-item>
<el-form-item prop="market" label="所属地区:" required>
<el-select v-model="addRole.market" placeholder="请选择所属地区" style="width: 220px" clearable @change="handleMarketChange" >
<el-select v-model="addRole.market" placeholder="请选择所属地区" style="width: 220px" clearable >
<el-option v-for="item in addRoleMarket" :key="item" :label="item" :value="item"/>
</el-select>
</el-form-item>

27
src/views/permissions/userPermission.vue

@ -8,7 +8,10 @@ import API from '@/util/http'
//
const tableData = ref([])
const total = ref(100)
const handleDialogClose = function(){
closeUserAddVisible()
console.log('hhh');
}
const propsAdduser = {
multiple: true, //
}
@ -246,30 +249,10 @@ const getStore = async function () {
//
const openUserAddVisible = function () {
userAddVisible.value = true
addAdmin.value = {
account: '',
name: '',
market: '',
permission: '',
postiton: '',
machineId: '',
machineIds: [''],
remark: ''
};
}
//
const closeUserAddVisible = function () {
addAdmin.value = {
account: '',
name: '',
market: '',
permission: '',
postiton: '',
machineId: '',
machineIds: [''],
remark: ''
};
userAddVisible.value = false;
//
Ref.value.resetFields();
@ -1009,7 +992,7 @@ onMounted(async function () {
</div>
<!-- 新增用户权限 -->
<el-dialog v-model="userAddVisible" title="新增用户权限" width="800px" :close-on-click-modal="false">
<el-dialog v-model="userAddVisible" title="新增用户权限" width="800px" :close-on-click-modal="false" @close="handleDialogClose">
<template #footer>
<!-- 居中显示 -->

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

@ -367,11 +367,11 @@ const get = async function (val) {
tableData.value = tableData.value.map(item => ({
...item,
//
permanentGold: (Number(item.permanentGold) || 0) / 100,
permanentGold: (Number(item.permanentGold) || 0) ,
//
freeGold: (Number(item.freeGold) || 0) / 100,
freeGold: (Number(item.freeGold) || 0) ,
//
money: (Number(item.money) || 0) / 100
money: (Number(item.money) || 0)
}))
console.log('tableData', tableData.value)
//
@ -433,6 +433,7 @@ const getYesterday = function () {
get()
}
// 7
const get7Days = function () {
const today = dayjs()
@ -469,8 +470,8 @@ const handleSortChange = (column) => {
sortField.value = 'money'
} else if (column.prop === 'freeGold') {
sortField.value = 'freeGold'
} else if (column.prop === 'payTime') {
sortField.value = 'payTime'
} else if (column.prop === 'auditTime') {
sortField.value = 'auditTime'
} else if (column.prop === 'createTime') {
sortField.value = 'createTime'
} else if (column.prop === 'permanentGold') {
@ -651,9 +652,9 @@ const getTagText = (state) => {
<el-col>
<el-card>
<div>
充值金额{{ format3(permanentGolds / 100) }}新币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(permanentGolds / 100) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(freeGolds / 100) }}金币
充值新币{{ format3(permanentGolds) }}新币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(permanentGolds) }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(freeGolds ) }}金币
</div>
<!-- 设置表格容器的高度和滚动样式 -->
@ -678,9 +679,9 @@ const getTagText = (state) => {
<el-table-column prop="payModel" label="支付方式" width="100px" />
<el-table-column prop="remark" label="备注" width="150px" show-overflow-tooltip />
<el-table-column prop="adminName" label="提交人" width="100px" />
<el-table-column prop="payTime" sortable label="充值时间" width="200px">
<el-table-column prop="auditTime" sortable label="充值时间" width="200px">
<template #default="scope">
{{ moment(scope.row.payTime).format('YYYY-MM-DD HH:mm:ss') }}
{{ moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
</el-table>

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

@ -180,13 +180,13 @@ const getSelectBy = async function (val) {
//
tableData.value = result.data.list
// 100
tableData.value = tableData.value.map(item => ({
...item,
sumGold: (Number(item.sumGold) || 0) / 100,
permanentGold: (Number(item.permanentGold) || 0) / 100,
freeGold: (Number(item.freeGold) || 0) / 100,
taskGold: (Number(item.taskGold) || 0) / 100
sumGold: (Number(item.sumGold) || 0) ,
permanentGold: (Number(item.permanentGold) || 0) ,
freeGold: (Number(item.freeGold) || 0) ,
taskGold: (Number(item.taskGold) || 0)
}))
console.log('tableData', tableData.value)
//
@ -569,10 +569,10 @@ const getMarket = async function () {
<el-col>
<el-card>
<div>
退款金币总数{{ format3(Math.abs(sumGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(Math.abs(permanentGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(Math.abs(freeGolds) / 100) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(Math.abs(taskGolds) / 100) }}
退款金币总数{{ format3(Math.abs(sumGolds)) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(Math.abs(permanentGolds) ) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(Math.abs(freeGolds) ) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(Math.abs(taskGolds) ) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 520px; overflow-y: auto;margin-top:10px">

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

@ -137,7 +137,20 @@ const get = async function (val) {
// 0
total.value = 0
// ElMessage.warning('')
} else {
}
// , result.data.list
else if(resultGoldTotal.data===0){
//
tableData.value = []
// 0
permanentGold.value = 0
freeJuneGold.value = 0
freeDecemberGold.value = 0
taskGold.value = 0
goldtotal.value = 0
freeGold.value = 0
}
else {
//
console.log('总数据请求成功', result)
//
@ -403,10 +416,10 @@ const format3 = (num) => {
<el-col>
<el-card>
<div>
金币总数{{ format3(goldtotal/100 || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(permanentGold/100 || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(freeGold/100 || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(taskGold /100 || 0) }}
金币总数{{ format3(goldtotal || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(permanentGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(freeGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(taskGold || 0) }}
</div>
<!-- 设置表格容器的高度和滚动样式 -->
<div style="height: 626px; overflow-y: auto">
@ -428,28 +441,28 @@ const format3 = (num) => {
((scope.row.currentPermanentGold || 0) +
(scope.row.currentFreeJune || 0) +
(scope.row.currentFreeDecember || 0) +
(scope.row.currentTaskGold || 0)) / 100
(scope.row.currentTaskGold || 0))
}}</span>
</template>
</el-table-column>
<el-table-column prop="currentPermanentGold" label="永久金币" sortable="custom" width="110">
<template #default="scope">
<span>{{ (scope.row.currentPermanentGold || 0) / 100 }}</span>
<span>{{ (scope.row.currentPermanentGold || 0) }}</span>
</template>
</el-table-column>
<el-table-column prop="currentFreeJune" label="6月份到期免费金币" sortable="custom" width="110">
<template #default="scope">
<span>{{ (scope.row.currentFreeJune || 0) / 100 }}</span>
<span>{{ (scope.row.currentFreeJune || 0) }}</span>
</template>
</el-table-column>
<el-table-column prop="currentFreeDecember" label="12月份到期免费金币" sortable="custom" width="110">
<template #default="scope">
<span>{{ (scope.row.currentFreeDecember || 0) / 100 }}</span>
<span>{{ (scope.row.currentFreeDecember || 0) }}</span>
</template>
</el-table-column>
<el-table-column prop="currentTaskGold" label="任务金币" sortable="custom" width="130">
<template #default="scope">
<span>{{ (scope.row.currentTaskGold || 0) / 100 }}</span>
<span>{{ (scope.row.currentTaskGold || 0) }}</span>
</template>
</el-table-column>
@ -458,18 +471,18 @@ const format3 = (num) => {
<el-popover trigger="hover" placement="left" width="150">
<template #default>
<div>
<div>永久金币{{ (scope.row.sumPermanentGold || 0) / 100 }}</div>
<div>免费金币{{ ((scope.row.sumFreeJune || 0) + (scope.row.sumFreeDecember || 0)) / 100 }}</div>
<div>任务金币{{ (scope.row.sumTaskGold || 0) / 100 }}</div>
<div>永久金币{{ (scope.row.sumPermanentGold || 0) }}</div>
<div>免费金币{{ ((scope.row.sumFreeJune || 0) + (scope.row.sumFreeDecember || 0)) }}</div>
<div>任务金币{{ (scope.row.sumTaskGold || 0) }}</div>
</div>
</template>
<template #reference>
<span>
{{
(scope.row.sumPermanentGold || 0) / 100 +
(scope.row.sumFreeJune || 0) / 100 +
(scope.row.sumFreeDecember || 0) / 100 +
(scope.row.sumTaskGold || 0) / 100
(scope.row.sumPermanentGold || 0) +
(scope.row.sumFreeJune || 0) +
(scope.row.sumFreeDecember || 0) +
(scope.row.sumTaskGold || 0)
}}</span>
</template>
</el-popover>
@ -480,21 +493,21 @@ const format3 = (num) => {
<el-popover trigger="hover" placement="left" width="150">
<template #default>
<div>
<div>永久金币{{ (scope.row.sumConsumeGold || 0) / 100 }}</div>
<div>永久金币{{ (scope.row.sumConsumeGold || 0) }}</div>
<div>免费金币{{
((scope.row.sumConsumeJune || 0) + (scope.row.sumConsumeDecember || 0)) / 100
((scope.row.sumConsumeJune || 0) + (scope.row.sumConsumeDecember || 0))
}}
</div>
<div>任务金币{{ (scope.row.sumConsumeJune || 0) / 100 }}</div>
<div>任务金币{{ (scope.row.sumConsumeJune || 0) }}</div>
</div>
</template>
<template #reference>
<span>
{{
(scope.row.sumConsumeGold || 0) / 100 +
(scope.row.sumConsumeTaskGold || 0) / 100 +
(scope.row.sumConsumeJune || 0) / 100 +
(scope.row.sumConsumeDecember || 0) / 100
(scope.row.sumConsumeGold || 0) +
(scope.row.sumConsumeTaskGold || 0) +
(scope.row.sumConsumeJune || 0) +
(scope.row.sumConsumeDecember || 0)
}}</span>
</template>
</el-popover>

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

@ -203,6 +203,13 @@ const get = async function (val) {
totalFreeGold.value = data.freeGolds
totalTaskGold.value = data.taskGolds
totalGoldTotal.value = data.sumGolds
} else if (totalResult.code === 0) {
//
tableData.value = []
totalPermanentGold.value = 0
totalFreeGold.value = 0
totalTaskGold.value = 0
totalGoldTotal.value = 0
} else {
ElMessage.error('获取合计数据失败')
}
@ -216,9 +223,7 @@ const get = async function (val) {
//
const reset = function () {
goldDetail.value ={
}
goldDetail.value = {}
goldDetail.value.markets = []
selectedMarketPath.value = []
delete sortField.value
@ -478,8 +483,8 @@ const getMarket = async function () {
}
}
const format3 = (num) => {
//
return num.toLocaleString('en-US')
//
return num.toLocaleString('en-US')
}
</script>
<template>
@ -554,10 +559,10 @@ const format3 = (num) => {
<el-col>
<el-card>
<div>
金币总数{{ format3(totalGoldTotal/100 || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(totalPermanentGold/100 || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(totalFreeGold/100 || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(totalTaskGold /100|| 0) }}
金币总数{{ format3(totalGoldTotal || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ format3(totalPermanentGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ format3(totalFreeGold || 0) }}&nbsp;&nbsp;&nbsp;&nbsp;
任务金币{{ format3(totalTaskGold || 0) }}
</div>
<div style="height: 584px; overflow-y: auto">
<el-table :data="tableData" style="width: 100%" @sort-change="handleSortChange" height="584px">
@ -594,23 +599,23 @@ const format3 = (num) => {
: scope.row.sumGold / 100
}}
</span> -->
<span>{{ (scope.row.sumGold || 0) / 100 }}</span>
<span>{{ (scope.row.sumGold || 0) }}</span>
</template>
</el-table-column>
<el-table-column prop="permanentGold" sortable="custom" label="永久金币" width="110">
<template #default="scope">
<span>{{ (scope.row.permanentGold || 0) / 100 }}</span>
<span>{{ (scope.row.permanentGold || 0) }}</span>
</template>
</el-table-column>
<el-table-column prop="freeGold" sortable="custom" label="免费金币" width="110">
<template #default="scope">
<span>{{ (calculateFreeGold(scope.row) || 0) / 100 }}</span>
<span>{{ (calculateFreeGold(scope.row) || 0) }}</span>
</template>
</el-table-column>
<el-table-column prop="taskGold" sortable="custom" label="任务金币" width="110">
<template #default="scope">
<span>{{ (scope.row.taskGold || 0) / 100 }}</span>
<span>{{ (scope.row.taskGold || 0) }}</span>
</template>
</el-table-column>
<el-table-column prop="adminName" label="提交人" width="110"/>

Loading…
Cancel
Save