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

10576
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> </div>
</n-col> </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"> <n-col :span="24">
<div mt-10> <div mt-10>
<n-button type="primary" @click="get_list">搜索</n-button> <n-button type="primary" @click="get_list">搜索</n-button>
@@ -109,6 +120,7 @@ const queryData = ref({
hall_id: null, hall_id: null,
status: null, status: null,
time: null, time: null,
time1: null,
}) })
const options = ref([]) const options = ref([])
@@ -199,6 +211,8 @@ const get_list = async () => {
pageSize: pagination.value.pageSize, pageSize: pagination.value.pageSize,
StartTime: queryData.value.time ? queryData.value.time[0] : '', StartTime: queryData.value.time ? queryData.value.time[0] : '',
EndTime: queryData.value.time ? queryData.value.time[1] : '', 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') Reflect.deleteProperty(obj, 'time')
const res = await api.getData(obj) const res = await api.getData(obj)

View File

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

View File

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

View File

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

View File

@@ -20,7 +20,7 @@
</n-card> </n-card>
<n-card ml-10 w-200 rounded-5> <n-card ml-10 w-200 rounded-5>
<n-statistic label="总佣金" tabular-nums> <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-statistic>
</n-card> </n-card>
</div> </div>
@@ -99,6 +99,7 @@
:data="data" :data="data"
:pagination="pagination" :pagination="pagination"
:bordered="false" :bordered="false"
:scroll-x="2000"
remote remote
/> />
</CommonPage> </CommonPage>
@@ -106,6 +107,7 @@
<script setup> <script setup>
import api from './api' import api from './api'
import { NButton, NPopconfirm } from 'naive-ui'
const loading = ref(false) const loading = ref(false)
@@ -164,11 +166,15 @@ const columns = ref([
title: '订单号', title: '订单号',
align: 'center', align: 'center',
key: 'oid', key: 'oid',
width: 200,
fixed: 'left',
}, },
{ {
title: '用户', title: '用户',
align: 'center', align: 'center',
slot: 'user', slot: 'user',
width: 100,
fixed: 'left',
render: (row) => { render: (row) => {
return [ return [
h( h(
@@ -301,14 +307,47 @@ const columns = ref([
align: 'center', align: 'center',
key: 'cancel_time', key: 'cancel_time',
}, },
// { {
// title: '操作', title: '操作',
// align: 'center', align: 'center',
// slot: 'action', slot: 'action',
// render() { fixed: 'right',
// // console.log(row) 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([]) const data = ref([])

View File

@@ -31,5 +31,15 @@ export default {
order: 10, 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'), component: () => import('./index.vue'),
meta: { meta: {
title: '工作台', title: '工作台',
icon: 'mdi:home', icon: 'mdi:index',
order: 0, order: 0,
}, },
}, },