Merge branch 'test'
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2024-05-17 18:16:09 +08:00
14 changed files with 6671 additions and 4478 deletions

BIN
.DS_Store vendored Normal file

Binary file not shown.

BIN
build/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -33,50 +33,50 @@
},
"dependencies": {
"@unocss/eslint-config": "^0.55.7",
"@vueuse/core": "^10.6.1",
"@vueuse/core": "^10.9.0",
"@wangeditor/editor": "^5.1.23",
"@wangeditor/editor-for-vue": "5.1.12",
"axios": "^1.6.2",
"axios": "^1.6.8",
"dayjs": "^1.11.10",
"echarts": "^5.5.0",
"lodash-es": "^4.17.21",
"md-editor-v3": "^4.9.0",
"md-editor-v3": "^4.13.0",
"mockjs": "^1.1.0",
"pinia": "^2.1.7",
"vite": "^4.5.0",
"vite": "^4.5.3",
"vue": "3.3.4",
"vue-echarts": "^6.6.9",
"vue-router": "^4.2.5",
"vue-router": "^4.3.0",
"xlsx": "^0.18.5"
},
"devDependencies": {
"@commitlint/cli": "^17.8.1",
"@commitlint/config-conventional": "^17.8.1",
"@iconify/json": "^2.2.150",
"@iconify/json": "^2.2.199",
"@iconify/vue": "^4.1.1",
"@unocss/preset-rem-to-px": "^0.55.7",
"@vitejs/plugin-vue": "^4.5.1",
"@vue/compiler-sfc": "^3.3.9",
"@vitejs/plugin-vue": "^4.6.2",
"@vue/compiler-sfc": "^3.4.21",
"@zclzone/eslint-config": "^0.0.4",
"chalk": "^5.3.0",
"commitizen": "^4.3.0",
"cz-conventional-changelog": "^3.3.0",
"cz-customizable": "^7.0.0",
"dotenv": "^16.3.1",
"dotenv": "^16.4.5",
"esno": "^0.17.0",
"fs-extra": "^11.2.0",
"husky": "^8.0.3",
"lint-staged": "^14.0.1",
"naive-ui": "^2.35.0",
"rollup-plugin-visualizer": "^5.9.3",
"sass": "^1.69.5",
"naive-ui": "^2.38.1",
"rollup-plugin-visualizer": "^5.12.0",
"sass": "^1.75.0",
"unocss": "0.55.3",
"unplugin-auto-import": "^0.16.7",
"unplugin-icons": "^0.16.6",
"unplugin-vue-components": "^0.25.2",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-html": "^3.2.0",
"vite-plugin-mkcert": "^1.17.1",
"vite-plugin-html": "^3.2.2",
"vite-plugin-mkcert": "^1.17.5",
"vite-plugin-mock": "2.9.6",
"vite-plugin-svg-icons": "^2.0.1"
}

10768
pnpm-lock.yaml generated

File diff suppressed because it is too large Load Diff

BIN
src/.DS_Store vendored Normal file

Binary file not shown.

View File

@@ -58,6 +58,17 @@
/>
</div>
</n-col>
<n-col :span="24">
<div mt-10 flex items-center>
<span w-100>投注时间</span>
<n-date-picker
v-model:formatted-value="queryData.time1"
value-format="yyyy-MM-dd HH:mm:ss"
type="datetimerange"
clearable
/>
</div>
</n-col>
<n-col :span="24">
<div mt-10>
<n-button type="primary" @click="get_list">搜索</n-button>
@@ -109,6 +120,7 @@ const queryData = ref({
hall_id: null,
status: null,
time: null,
time1: null,
})
const options = ref([])
@@ -199,6 +211,8 @@ const get_list = async () => {
pageSize: pagination.value.pageSize,
StartTime: queryData.value.time ? queryData.value.time[0] : '',
EndTime: queryData.value.time ? queryData.value.time[1] : '',
UseStartTime: queryData.value.time1 ? queryData.value.time1[0] : '',
UseEndTime: queryData.value.time1 ? queryData.value.time1[1] : '',
}
Reflect.deleteProperty(obj, 'time')
const res = await api.getData(obj)

View File

@@ -7,7 +7,7 @@ export default {
redirect: '/game_jl',
meta: {
title: '游戏统计',
icon: 'mdi:home',
icon: 'mdi:index',
order: 100,
},
children: [
@@ -17,7 +17,7 @@ export default {
component: () => import('./jl/index.vue'),
meta: {
title: '豆子记录',
icon: 'mdi:home',
icon: 'mdi:index',
},
},
],

View File

@@ -82,6 +82,7 @@
:data="data"
:pagination="pagination"
:bordered="false"
:scroll-x="1800"
remote
/>
</CommonPage>
@@ -89,6 +90,7 @@
<script setup>
import api from './api'
import { NEllipsis } from 'naive-ui'
const loading = ref(false)
@@ -101,15 +103,15 @@ const queryData = ref({
const songs = ref([
{
value: 0,
value: 1,
label: '未付款',
},
{
value: 1,
value: 2,
label: '已付款',
},
{
value: 2,
value: 3,
label: '挂帐中',
},
])
@@ -159,8 +161,10 @@ const columns = ref([
row.OrderGoods.forEach((item) => {
el.push(
h(
'div',
{},
NEllipsis,
{
style: 'max-width: 100px',
},
{
default: () => `${item.Goods.name}|${item.pay_price}元|X${item.number}`,
}

View File

@@ -2,4 +2,6 @@ import { request } from '@/utils'
export default {
getOrder: (data) => request.post('/order', data),
// 核销订单
verifyOrder: (data) => request.post('/order/verify', data),
}

View File

@@ -20,7 +20,7 @@
</n-card>
<n-card ml-10 w-200 rounded-5>
<n-statistic label="总佣金" tabular-nums>
<n-number-animation :from="0" :to="cardData.commission" />
<n-number-animation :from="0" :to="cardData.commission" :precision="2" />
</n-statistic>
</n-card>
</div>
@@ -99,6 +99,7 @@
:data="data"
:pagination="pagination"
:bordered="false"
:scroll-x="2000"
remote
/>
</CommonPage>
@@ -106,6 +107,7 @@
<script setup>
import api from './api'
import { NButton, NPopconfirm } from 'naive-ui'
const loading = ref(false)
@@ -164,11 +166,15 @@ const columns = ref([
title: '订单号',
align: 'center',
key: 'oid',
width: 200,
fixed: 'left',
},
{
title: '用户',
align: 'center',
slot: 'user',
width: 100,
fixed: 'left',
render: (row) => {
return [
h(
@@ -301,14 +307,47 @@ const columns = ref([
align: 'center',
key: 'cancel_time',
},
// {
// title: '操作',
// align: 'center',
// slot: 'action',
// render() {
// // console.log(row)
// },
// },
{
title: '操作',
align: 'center',
slot: 'action',
fixed: 'right',
render(row) {
const el = []
if (row.status === 1) {
el.push(
h(
NPopconfirm,
{
onPositiveClick: async () => {
await api.verifyOrder({
oids: [row.oid],
})
getList()
},
onNegativeClick: () => $message.info('已取消'),
},
{
default: () => `确定核销此${row.oid}订单吗?`,
trigger: () =>
h(
NButton,
{
type: 'primary',
size: 'small',
text: true,
},
{
default: () => '核销',
}
),
}
)
)
}
return el
},
},
])
const data = ref([])

View File

@@ -31,5 +31,15 @@ export default {
order: 10,
},
},
{
name: 'Ylist',
path: 'y_list',
component: () => import('./y_list/index.vue'),
meta: {
title: '后结提现',
icon: 'mdi:account-multiple',
order: 10,
},
},
],
}

View File

@@ -0,0 +1,7 @@
import { request } from '@/utils'
export default {
getList: (data) => request.post('/amount/withdraw', data),
// 申请提现
apply: (data) => request.post('/amount/withdraw/set', data),
}

View File

@@ -0,0 +1,243 @@
<template>
<!-- <div> -->
<CommonPage show-footer :title="$route.title">
<div w-1200 flex items-center justify-between>
<n-card class="w-300">
<n-statistic label="可提现余额">
<n-number-animation
ref="numberAnimationInstRef"
:precision="2"
:from="0"
:to="userInfo.integral"
/>
</n-statistic>
</n-card>
<div w-100 text-center text-25>/</div>
<n-card class="w-300">
<n-statistic label="兑换比例">
<n-number-animation ref="numberAnimationInstRef" :precision="2" :from="0" :to="100" />
</n-statistic>
</n-card>
<div w-100 text-center text-25>=</div>
<n-card class="w-300">
<n-statistic label="CNY">
<n-number-animation
ref="numberAnimationInstRef"
:precision="2"
:from="0"
:to="userInfo.integral / 100"
/>
</n-statistic>
</n-card>
<div ml-10 w-300 flex flex-col items-center justify-center>
<n-input-number v-model:value="formData.integral" clearable placeholder="请输入提现积分" />
<n-button mt-10 w-full type="primary" @click="ok">立即提现</n-button>
</div>
</div>
<n-data-table
class="mt-10"
:loading="loading"
:columns="columns"
:data="data"
:pagination="pagination"
:bordered="false"
remote
/>
</CommonPage>
<!-- </div> -->
</template>
<script setup>
import api from './api'
import comm from '@/api'
import { NTag, NImage } from 'naive-ui'
const loading = ref(false)
const columns = ref([
{
title: 'ID',
key: 'ID',
align: 'center',
},
{
title: '提现金额',
key: 'integral',
align: 'center',
},
{
title: '上次留存余额',
key: 'balance',
align: 'center',
},
{
title: '服务费',
key: 'commission',
align: 'center',
},
{
title: '实际到账',
key: 'number',
align: 'center',
},
{
title: '剩余余额',
key: 'residue',
align: 'center',
},
{
title: '手续费比例',
slot: 'commission_number',
align: 'center',
render: (row) => {
return h(
'span',
{},
{
default: () => `${row.commission_number}%`,
}
)
},
},
{
title: '手续费类型',
key: 'commission_type',
align: 'center',
render: (row) => {
return h(
NTag,
{
type: row.commission_type === 1 ? 'success' : 'warning',
},
{
default: () => (row.commission_type === 1 ? '百分比' : '固定值'),
}
)
},
},
{
title: '银行名称',
key: 'bank',
align: 'center',
},
{
title: '银行卡号',
key: 'bank_card',
align: 'center',
},
{
title: '账户名称',
key: 'bank_name',
align: 'center',
},
{
title: '法人',
key: 'bank_user',
align: 'center',
},
{
title: '提现状态',
slot: 'status',
align: 'center',
render: (row) => {
return h(
NTag,
{
type: row.status === 1 ? 'success' : row.status === 2 ? 'error' : 'warning',
},
{
default: () => (row.status === 1 ? '已审核' : row.status === 2 ? '已拒绝' : '待审核'),
}
)
},
},
{
title: '提现时间',
slot: 'add_time',
align: 'center',
render: (row) => {
return h(
'span',
{},
{
default: () => row.add_time,
}
)
},
},
{
title: '打款截图',
slot: 'img',
render: (row) => {
return h(NImage, {
src: row.status_img,
width: '50',
})
},
},
])
const data = ref([])
const formData = ref({
integral: null,
})
const pagination = ref({
page: 1,
pageSize: 10,
itemCount: 0,
onChange: (page) => {
pagination.value.page = page
getList()
},
onUpdatePageSize: (pageSize) => {
pagination.value.pageSize = pageSize
pagination.value.page = 1
getList()
},
})
onMounted(() => {
getList()
getData()
})
const userInfo = ref({})
const getData = async () => {
const res = await comm.getMerchantInfo()
userInfo.value = res.data.data
}
const getList = async () => {
loading.value = true
try {
const res = await api.getList({
pageNum: pagination.value.page,
pageSize: pagination.value.pageSize,
})
data.value = res.data.data || []
pagination.value.itemCount = res.data.total
} catch (error) {
$message.error(error.msg)
}
loading.value = false
}
const ok = async () => {
// if (formData.value.integral < 1000) return $message.warning('提现积分不能小于10000')
const res = await api.apply({
number: formData.value.integral,
})
$message.success(res.msg)
clear()
}
const clear = () => {
formData.value.integral = null
getList()
getData()
}
</script>
<style lang="scss" scoped></style>

View File

@@ -12,7 +12,7 @@ export default {
component: () => import('./index.vue'),
meta: {
title: '工作台',
icon: 'mdi:home',
icon: 'mdi:index',
order: 0,
},
},