Merge branch 'dev' into test
This commit is contained in:
62
.idea/codeStyles/Project.xml
generated
62
.idea/codeStyles/Project.xml
generated
@@ -1,62 +0,0 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<code_scheme name="Project" version="173">
|
||||
<option name="LINE_SEPARATOR" value=" " />
|
||||
<HTMLCodeStyleSettings>
|
||||
<option name="HTML_SPACE_INSIDE_EMPTY_TAG" value="true" />
|
||||
</HTMLCodeStyleSettings>
|
||||
<JSCodeStyleSettings version="0">
|
||||
<option name="USE_SEMICOLON_AFTER_STATEMENT" value="false" />
|
||||
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
||||
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
||||
<option name="USE_DOUBLE_QUOTES" value="false" />
|
||||
<option name="FORCE_QUOTE_STYlE" value="true" />
|
||||
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
|
||||
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
||||
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
||||
</JSCodeStyleSettings>
|
||||
<TypeScriptCodeStyleSettings version="0">
|
||||
<option name="USE_SEMICOLON_AFTER_STATEMENT" value="false" />
|
||||
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
||||
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
||||
<option name="USE_DOUBLE_QUOTES" value="false" />
|
||||
<option name="FORCE_QUOTE_STYlE" value="true" />
|
||||
<option name="ENFORCE_TRAILING_COMMA" value="Remove" />
|
||||
<option name="SPACES_WITHIN_OBJECT_LITERAL_BRACES" value="true" />
|
||||
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
||||
</TypeScriptCodeStyleSettings>
|
||||
<VueCodeStyleSettings>
|
||||
<option name="INTERPOLATION_NEW_LINE_AFTER_START_DELIMITER" value="false" />
|
||||
<option name="INTERPOLATION_NEW_LINE_BEFORE_END_DELIMITER" value="false" />
|
||||
</VueCodeStyleSettings>
|
||||
<codeStyleSettings language="HTML">
|
||||
<option name="SOFT_MARGINS" value="100" />
|
||||
<indentOptions>
|
||||
<option name="INDENT_SIZE" value="2" />
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||
<option name="TAB_SIZE" value="2" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="JavaScript">
|
||||
<option name="SOFT_MARGINS" value="100" />
|
||||
<indentOptions>
|
||||
<option name="INDENT_SIZE" value="2" />
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||
<option name="TAB_SIZE" value="2" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="TypeScript">
|
||||
<option name="SOFT_MARGINS" value="100" />
|
||||
<indentOptions>
|
||||
<option name="INDENT_SIZE" value="2" />
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||
<option name="TAB_SIZE" value="2" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
<codeStyleSettings language="Vue">
|
||||
<option name="SOFT_MARGINS" value="100" />
|
||||
<indentOptions>
|
||||
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
||||
</indentOptions>
|
||||
</codeStyleSettings>
|
||||
</code_scheme>
|
||||
</component>
|
||||
5
.idea/codeStyles/codeStyleConfig.xml
generated
5
.idea/codeStyles/codeStyleConfig.xml
generated
@@ -1,5 +0,0 @@
|
||||
<component name="ProjectCodeStyleConfiguration">
|
||||
<state>
|
||||
<option name="USE_PER_PROJECT_SETTINGS" value="true" />
|
||||
</state>
|
||||
</component>
|
||||
6
.idea/git_toolbox_blame.xml
generated
6
.idea/git_toolbox_blame.xml
generated
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="GitToolBoxBlameSettings">
|
||||
<option name="version" value="2" />
|
||||
</component>
|
||||
</project>
|
||||
8
.idea/modules.xml
generated
8
.idea/modules.xml
generated
@@ -1,8 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="ProjectModuleManager">
|
||||
<modules>
|
||||
<module fileurl="file://$PROJECT_DIR$/.idea/jdt-admin.iml" filepath="$PROJECT_DIR$/.idea/jdt-admin.iml" />
|
||||
</modules>
|
||||
</component>
|
||||
</project>
|
||||
6
.idea/vcs.xml
generated
6
.idea/vcs.xml
generated
@@ -1,6 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="VcsDirectoryMappings">
|
||||
<mapping directory="" vcs="Git" />
|
||||
</component>
|
||||
</project>
|
||||
127
.idea/workspace.xml
generated
127
.idea/workspace.xml
generated
@@ -1,127 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<project version="4">
|
||||
<component name="AutoImportSettings">
|
||||
<option name="autoReloadType" value="SELECTIVE" />
|
||||
</component>
|
||||
<component name="ChangeListManager">
|
||||
<list default="true" id="b019f168-135d-4524-8d1f-fa42f9f9b7b0" name="更改" comment="">
|
||||
<change afterPath="$PROJECT_DIR$/src/views/finance/suyuan.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/.husky/_/husky.sh" beforeDir="false" afterPath="$PROJECT_DIR$/.husky/_/husky.sh" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/views/commodity/hot_list/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/commodity/hot_list/index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/views/finance/api.js" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/finance/api.js" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/views/finance/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/finance/index.vue" afterDir="false" />
|
||||
<change beforePath="$PROJECT_DIR$/src/views/order/index/index.vue" beforeDir="false" afterPath="$PROJECT_DIR$/src/views/order/index/index.vue" afterDir="false" />
|
||||
</list>
|
||||
<option name="SHOW_DIALOG" value="false" />
|
||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
|
||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||
</component>
|
||||
<component name="FileTemplateManagerImpl">
|
||||
<option name="RECENT_TEMPLATES">
|
||||
<list>
|
||||
<option value="Vue Options API Component" />
|
||||
</list>
|
||||
</option>
|
||||
</component>
|
||||
<component name="Git.Settings">
|
||||
<option name="RECENT_BRANCH_BY_REPOSITORY">
|
||||
<map>
|
||||
<entry key="$PROJECT_DIR$" value="main" />
|
||||
</map>
|
||||
</option>
|
||||
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
|
||||
</component>
|
||||
<component name="GitToolBoxStore">
|
||||
<option name="recentBranches">
|
||||
<RecentBranches>
|
||||
<option name="branchesForRepo">
|
||||
<list>
|
||||
<RecentBranchesForRepo>
|
||||
<option name="branches">
|
||||
<list>
|
||||
<RecentBranch>
|
||||
<option name="branchName" value="dev" />
|
||||
<option name="lastUsedInstant" value="1723221039" />
|
||||
</RecentBranch>
|
||||
<RecentBranch>
|
||||
<option name="branchName" value="main" />
|
||||
<option name="lastUsedInstant" value="1723221038" />
|
||||
</RecentBranch>
|
||||
</list>
|
||||
</option>
|
||||
<option name="repositoryRootUrl" value="file://$PROJECT_DIR$" />
|
||||
</RecentBranchesForRepo>
|
||||
</list>
|
||||
</option>
|
||||
</RecentBranches>
|
||||
</option>
|
||||
</component>
|
||||
<component name="HighlightingSettingsPerFile">
|
||||
<setting file="file://$PROJECT_DIR$/src/views/order/index/index.vue" root0="FORCE_HIGHLIGHTING" />
|
||||
</component>
|
||||
<component name="ProjectColorInfo">{
|
||||
"associatedIndex": 2
|
||||
}</component>
|
||||
<component name="ProjectId" id="2kQfzo3ApXRrBNGBRkYhmvHyd37" />
|
||||
<component name="ProjectViewState">
|
||||
<option name="hideEmptyMiddlePackages" value="true" />
|
||||
<option name="showLibraryContents" value="true" />
|
||||
</component>
|
||||
<component name="PropertiesComponent"><![CDATA[{
|
||||
"keyToString": {
|
||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||
"git-widget-placeholder": "dev",
|
||||
"last_opened_file_path": "E:/ProjectCode/jdt-admin",
|
||||
"node.js.detected.package.eslint": "true",
|
||||
"node.js.detected.package.tslint": "true",
|
||||
"node.js.selected.package.eslint": "(autodetect)",
|
||||
"node.js.selected.package.tslint": "(autodetect)",
|
||||
"nodejs_package_manager_path": "pnpm",
|
||||
"npm.dev.executor": "Run",
|
||||
"settings.editor.selected.configurable": "preferences.lookFeel",
|
||||
"vue.rearranger.settings.migration": "true"
|
||||
},
|
||||
"keyToStringList": {
|
||||
"vue.recent.templates": [
|
||||
"Vue Options API Component"
|
||||
]
|
||||
}
|
||||
}]]></component>
|
||||
<component name="RunManager">
|
||||
<configuration name="dev" type="js.build_tools.npm" nameIsGenerated="true">
|
||||
<package-json value="$PROJECT_DIR$/package.json" />
|
||||
<command value="run" />
|
||||
<scripts>
|
||||
<script value="dev" />
|
||||
</scripts>
|
||||
<node-interpreter value="project" />
|
||||
<envs />
|
||||
<method v="2" />
|
||||
</configuration>
|
||||
</component>
|
||||
<component name="SharedIndexes">
|
||||
<attachedChunks>
|
||||
<set>
|
||||
<option value="bundled-js-predefined-1d06a55b98c1-0b3e54e931b4-JavaScript-WS-241.19072.23" />
|
||||
</set>
|
||||
</attachedChunks>
|
||||
</component>
|
||||
<component name="SpellCheckerSettings" RuntimeDictionaries="0" Folders="0" CustomDictionaries="0" DefaultDictionary="应用程序级" UseSingleDictionary="true" transferred="true" />
|
||||
<component name="TaskManager">
|
||||
<task active="true" id="Default" summary="默认任务">
|
||||
<changelist id="b019f168-135d-4524-8d1f-fa42f9f9b7b0" name="更改" comment="" />
|
||||
<created>1723220985918</created>
|
||||
<option name="number" value="Default" />
|
||||
<option name="presentableId" value="Default" />
|
||||
<updated>1723220985918</updated>
|
||||
<workItem from="1723220987623" duration="121000" />
|
||||
<workItem from="1723221113870" duration="110000" />
|
||||
<workItem from="1725368890652" duration="3893000" />
|
||||
</task>
|
||||
<servers />
|
||||
</component>
|
||||
<component name="TypeScriptGeneratedFilesManager">
|
||||
<option name="version" value="3" />
|
||||
</component>
|
||||
</project>
|
||||
@@ -290,7 +290,7 @@ const columns = ref([
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '积分',
|
||||
title: '余额',
|
||||
align: 'center',
|
||||
key: 'integral',
|
||||
},
|
||||
|
||||
@@ -173,11 +173,11 @@
|
||||
:min="0"
|
||||
/>
|
||||
</n-form-item-gi>
|
||||
<n-form-item-gi :span="20" label="商品折扣比例" path="discount">
|
||||
<n-form-item-gi :span="20" label="商品抵扣比例" path="discount">
|
||||
<n-input-number
|
||||
v-model:value="nowRow.discount"
|
||||
clearable
|
||||
placeholder="请输入折扣比例...."
|
||||
placeholder="请输入抵扣比例...."
|
||||
:min="0"
|
||||
:precision="0"
|
||||
>
|
||||
@@ -337,7 +337,7 @@ const rules = {
|
||||
discount: {
|
||||
required: true,
|
||||
type: 'number',
|
||||
message: '请输入折扣比例',
|
||||
message: '请输入抵扣比例',
|
||||
trigger: 'blur',
|
||||
},
|
||||
}
|
||||
@@ -444,32 +444,19 @@ const columns = ref([
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '积分抵扣',
|
||||
slot: 'exchange',
|
||||
title: '抵扣后价格(元)',
|
||||
key: 'discount_price',
|
||||
align: 'center',
|
||||
render: (row) => {
|
||||
return h(
|
||||
'span',
|
||||
{},
|
||||
{
|
||||
default: () => (row.exchange ? `${(row.exchange / 100).toFixed(2)}元` : '无'),
|
||||
}
|
||||
)
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '折扣比例(%)',
|
||||
slot: 'discount',
|
||||
title: '积分抵扣(元)',
|
||||
key: 'exchange',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '抵扣比例(%)',
|
||||
key: 'discount',
|
||||
align: 'center',
|
||||
render: (row) => {
|
||||
return h(
|
||||
'span',
|
||||
{},
|
||||
{
|
||||
default: () => `${row.discount}%`,
|
||||
}
|
||||
)
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '商品库存',
|
||||
@@ -667,28 +654,33 @@ const clear = () => {
|
||||
}
|
||||
|
||||
const veeify = async () => {
|
||||
let data = {}
|
||||
if (nowKey.value === 1 || nowKey.value === 2) {
|
||||
data = {
|
||||
gid: [nowRow.value.gid],
|
||||
status: nowKey.value,
|
||||
notes: notesVal.value,
|
||||
}
|
||||
await api.getHotStatus(data)
|
||||
await getList()
|
||||
clear()
|
||||
} else {
|
||||
formRef.value?.validate(async (errors) => {
|
||||
if (!errors) {
|
||||
data = {
|
||||
...nowRow.value,
|
||||
gid: [nowRow.value.gid],
|
||||
}
|
||||
await api.getHotStatus(data)
|
||||
await getList()
|
||||
clear()
|
||||
try {
|
||||
let data = {}
|
||||
if (nowKey.value === 1 || nowKey.value === 2) {
|
||||
data = {
|
||||
gid: [nowRow.value.gid],
|
||||
status: nowKey.value,
|
||||
notes: notesVal.value,
|
||||
}
|
||||
})
|
||||
await api.getHotStatus(data)
|
||||
await getList()
|
||||
// clear()
|
||||
} else {
|
||||
formRef.value?.validate(async (errors) => {
|
||||
if (!errors) {
|
||||
data = {
|
||||
...nowRow.value,
|
||||
gid: [nowRow.value.gid],
|
||||
}
|
||||
await api.getHotStatus(data)
|
||||
await getList()
|
||||
// clear()
|
||||
}
|
||||
})
|
||||
}
|
||||
} finally {
|
||||
isNoteModel.value = false
|
||||
isDzModel.value = false
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,4 +9,6 @@ export default {
|
||||
ydataEdit: (data) => request.post('/store/amount/withdraw/edit', data),
|
||||
// 溯源统计
|
||||
suyuanData: (data) => request.post('/pulse/count', data),
|
||||
// 获取游戏大厅
|
||||
getGameData: (data) => request.post('/game/list', data),
|
||||
}
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
<n-number-animation
|
||||
ref="numberAnimationInstRef"
|
||||
:from="0"
|
||||
:to="cardData.total / 100"
|
||||
:to="cardData.total"
|
||||
:precision="2"
|
||||
/>
|
||||
</n-statistic>
|
||||
@@ -28,18 +28,14 @@
|
||||
<n-number-animation
|
||||
ref="numberAnimationInstRef"
|
||||
:from="0"
|
||||
:to="cardData.service / 100"
|
||||
:to="cardData.service"
|
||||
:precision="2"
|
||||
/>
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
<n-card ml-10 w-400>
|
||||
<n-statistic label="已审核金额" tabular-nums>
|
||||
<n-number-animation
|
||||
ref="numberAnimationInstRef"
|
||||
:from="0"
|
||||
:to="cardData.count / 100"
|
||||
/>
|
||||
<n-number-animation ref="numberAnimationInstRef" :from="0" :to="cardData.count" />
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
</div>
|
||||
|
||||
@@ -1,5 +1,87 @@
|
||||
<template>
|
||||
<CommonPage show-footer :title="$route.title">
|
||||
<n-grid class="mb-10" x-gap="12">
|
||||
<n-gi :span="24">
|
||||
<div flex>
|
||||
<n-card w-250>
|
||||
<n-statistic label="总赢积分" tabular-nums>
|
||||
<n-number-animation ref="numberAnimationInstRef" :from="0" :to="cardData.win" />
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
<n-card ml-10 w-250>
|
||||
<n-statistic label="总豆子" tabular-nums>
|
||||
<n-number-animation ref="numberAnimationInstRef" :from="0" :to="cardData.pulse" />
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
</div>
|
||||
</n-gi>
|
||||
<n-gi :span="12">
|
||||
<div mt-10 flex items-center>
|
||||
<div w-100>筛选条件:</div>
|
||||
<n-input-group>
|
||||
<n-select
|
||||
v-model:value="queryParams.selectKey"
|
||||
:style="{ width: '30rem' }"
|
||||
:options="selectOptions"
|
||||
placeholder="请选择"
|
||||
/>
|
||||
<n-input v-model:value="queryParams.word" :style="{ width: '50rem' }" />
|
||||
</n-input-group>
|
||||
</div>
|
||||
</n-gi>
|
||||
<n-gi :span="24">
|
||||
<div mt-10 flex items-center>
|
||||
<div mr-10>游戏名称:</div>
|
||||
<n-select
|
||||
v-model:value="queryParams.hall_id"
|
||||
w-250
|
||||
:options="gamelist"
|
||||
placeholder="请选择游戏"
|
||||
/>
|
||||
</div>
|
||||
</n-gi>
|
||||
<n-gi :span="24" mt-10>
|
||||
<div>
|
||||
<span>豆子状态:</span>
|
||||
<n-radio-group v-model:value="queryParams.Status">
|
||||
<n-radio-button
|
||||
v-for="song in songs"
|
||||
:key="song.value"
|
||||
:value="song.value"
|
||||
:label="song.label"
|
||||
/>
|
||||
</n-radio-group>
|
||||
</div>
|
||||
</n-gi>
|
||||
<n-gi :span="24" mt-10>
|
||||
<div>
|
||||
<span>活动赠送:</span>
|
||||
<n-radio-group v-model:value="queryParams.Type">
|
||||
<n-radio-button
|
||||
v-for="song in songs1"
|
||||
:key="song.value"
|
||||
:value="song.value"
|
||||
:label="song.label"
|
||||
/>
|
||||
</n-radio-group>
|
||||
</div>
|
||||
</n-gi>
|
||||
<n-gi :span="24">
|
||||
<div mt-10 flex items-center>
|
||||
<div>时间筛选:</div>
|
||||
<n-date-picker
|
||||
v-model:formatted-value="queryParams.time"
|
||||
value-format="yyyy-MM-dd HH:mm:ss"
|
||||
type="datetimerange"
|
||||
clearable
|
||||
/>
|
||||
</div>
|
||||
</n-gi>
|
||||
<n-gi span="24" mt-10 flex items-center>
|
||||
<n-button type="primary" @click="getList">查询</n-button>
|
||||
<n-button ml-10 @click="clear">重置</n-button>
|
||||
</n-gi>
|
||||
</n-grid>
|
||||
<n-data-table
|
||||
class="mt-10"
|
||||
:loading="loading"
|
||||
@@ -14,12 +96,119 @@
|
||||
|
||||
<script setup>
|
||||
import api from './api'
|
||||
import dayjs from 'dayjs'
|
||||
|
||||
// const queryData = ref({})
|
||||
const queryParams = ref({})
|
||||
|
||||
const cardData = ref({})
|
||||
|
||||
const selectOptions = [
|
||||
{
|
||||
label: '商家电话',
|
||||
value: 0,
|
||||
},
|
||||
{
|
||||
label: '用户电话',
|
||||
value: 1,
|
||||
},
|
||||
]
|
||||
|
||||
const songs = ref([
|
||||
{
|
||||
value: 1,
|
||||
label: '未使用',
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: '用户赢',
|
||||
},
|
||||
{
|
||||
value: 4,
|
||||
label: '用户输',
|
||||
},
|
||||
{
|
||||
value: 5,
|
||||
label: '已过期',
|
||||
},
|
||||
])
|
||||
|
||||
const gamelist = ref([])
|
||||
|
||||
const songs1 = ref([
|
||||
{
|
||||
value: 5,
|
||||
label: '注册赠送',
|
||||
},
|
||||
{
|
||||
value: 6,
|
||||
label: '签到赠送',
|
||||
},
|
||||
{
|
||||
value: 7,
|
||||
label: '平台赠送',
|
||||
},
|
||||
])
|
||||
|
||||
const loading = ref(false)
|
||||
|
||||
const columns = ref([])
|
||||
const columns = ref([
|
||||
{
|
||||
title: '游戏名称',
|
||||
align: 'center',
|
||||
slot: 'game_name',
|
||||
render: (row) => {
|
||||
const res = gamelist.value.find((item) => item.value === Number(row.hall_id))
|
||||
return h('span', null, {
|
||||
default: () => res?.label || '',
|
||||
})
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '订单ID',
|
||||
align: 'center',
|
||||
key: 'order_id',
|
||||
},
|
||||
{
|
||||
title: '期数',
|
||||
align: 'center',
|
||||
key: 'periods',
|
||||
},
|
||||
{
|
||||
title: '投注豆子',
|
||||
align: 'center',
|
||||
key: 'number',
|
||||
},
|
||||
{
|
||||
title: '赢积分',
|
||||
align: 'center',
|
||||
key: 'integral',
|
||||
},
|
||||
{
|
||||
title: '用户电话',
|
||||
align: 'center',
|
||||
key: 'user_phone',
|
||||
},
|
||||
{
|
||||
title: '商户电话',
|
||||
align: 'center',
|
||||
key: 'merchant_phone',
|
||||
},
|
||||
{
|
||||
title: '投注时间',
|
||||
align: 'center',
|
||||
key: 'add_time',
|
||||
},
|
||||
{
|
||||
title: '过期时间',
|
||||
align: 'center',
|
||||
slot: 'expire',
|
||||
render: (row) => {
|
||||
return h('span', null, {
|
||||
default: () => dayjs(row.expire).format('YYYY-MM-DD HH:mm:ss'),
|
||||
})
|
||||
},
|
||||
},
|
||||
])
|
||||
|
||||
const data = ref([])
|
||||
|
||||
@@ -35,30 +224,56 @@ const pagination = ref({
|
||||
|
||||
onMounted(() => {
|
||||
getList()
|
||||
getGameList()
|
||||
})
|
||||
|
||||
const getGameList = async () => {
|
||||
const res = await api.getGameData({ pageSize: 9999999, pageNum: 1 })
|
||||
gamelist.value = res.data.data.map((item) => ({ value: item.ID, label: item.name }))
|
||||
}
|
||||
|
||||
const getList = async () => {
|
||||
loading.value = true
|
||||
// const query_data = {
|
||||
// Status: queryData.value.status || '',
|
||||
// Phone: queryData.value.word || '',
|
||||
// StartTime: queryData.value.time === null ? '' : queryData.value.time[0] || '',
|
||||
// EndTime: queryData.value.time === null ? '' : queryData.value.time[1] || '',
|
||||
// }
|
||||
const query_data = {
|
||||
...queryParams.value,
|
||||
StartTime: queryParams.value.time?.[0] || '',
|
||||
EndTime: queryParams.value.time?.[1] || '',
|
||||
}
|
||||
|
||||
switch (queryParams.value.selectKey) {
|
||||
case 0:
|
||||
query_data['merchant_phone'] = queryParams.value.word
|
||||
break
|
||||
case 1:
|
||||
query_data['user_phone'] = queryParams.value.word
|
||||
break
|
||||
}
|
||||
|
||||
delete query_data.time
|
||||
delete query_data.word
|
||||
const res = await api.suyuanData({
|
||||
pageNum: pagination.value.page,
|
||||
pageSize: pagination.value.pageSize,
|
||||
// ...query_data,
|
||||
...query_data,
|
||||
})
|
||||
|
||||
data.value = res.data.data || []
|
||||
pagination.value.itemCount = res.data.total
|
||||
// cardData.value.total = res.data.all
|
||||
// cardData.value.service = res.data.audit_number
|
||||
// cardData.value.commission = res.data.audit_commission
|
||||
// cardData.value.count = res.data.success_amount
|
||||
data.value = res.data.result || []
|
||||
pagination.value.itemCount = res.data.count
|
||||
cardData.value.win = res.data.win
|
||||
cardData.value.pulse = res.data.pulse
|
||||
loading.value = false
|
||||
}
|
||||
|
||||
const clear = () => {
|
||||
queryParams.value = {
|
||||
word: '',
|
||||
selectKey: null,
|
||||
Status: '',
|
||||
time: null,
|
||||
Type: '',
|
||||
hall_id: '',
|
||||
}
|
||||
getList()
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
|
||||
@@ -251,10 +251,14 @@ const columns = ref([
|
||||
render: (row) => h('span', `${row.price}元`),
|
||||
},
|
||||
{
|
||||
title: '积分抵扣',
|
||||
title: '抵扣后价格(元)',
|
||||
key: 'discount_price',
|
||||
align: 'center',
|
||||
},
|
||||
{
|
||||
title: '积分抵扣',
|
||||
key: 'exchange',
|
||||
align: 'center',
|
||||
slot: 'discount_price',
|
||||
render: (row) => h('span', `${row.discount_price}`),
|
||||
},
|
||||
{
|
||||
title: '支付方式',
|
||||
|
||||
7
src/views/system/msgMag/index.vue
Normal file
7
src/views/system/msgMag/index.vue
Normal file
@@ -0,0 +1,7 @@
|
||||
<template>
|
||||
<CommonPage show-footer :title="$route.title"></CommonPage>
|
||||
</template>
|
||||
|
||||
<script setup></script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
@@ -3,21 +3,21 @@
|
||||
<n-grid class="mb-10" x-gap="12">
|
||||
<n-gi :span="24">
|
||||
<div flex>
|
||||
<n-card w-250>
|
||||
<!-- <n-card w-250>
|
||||
<n-statistic label="用户总赢积分" tabular-nums>
|
||||
<n-number-animation ref="numberAnimationInstRef" :from="0" :to="cardData.win" />
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
<n-card ml-10 w-250>
|
||||
</n-card> -->
|
||||
<n-card w-250>
|
||||
<n-statistic label="用户积分(留存)" tabular-nums>
|
||||
<n-number-animation ref="numberAnimationInstRef" :from="0" :to="cardData.integral" />
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
<n-card ml-10 w-250>
|
||||
<!-- <n-card ml-10 w-250>
|
||||
<n-statistic label="总豆子" tabular-nums>
|
||||
<n-number-animation ref="numberAnimationInstRef" :from="0" :to="cardData.pulse" />
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
</n-card> -->
|
||||
<n-card ml-10 w-250>
|
||||
<n-statistic label="今日新增用户" tabular-nums>
|
||||
<n-number-animation
|
||||
@@ -27,7 +27,7 @@
|
||||
/>
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
<n-card ml-10 w-250>
|
||||
<!-- <n-card ml-10 w-250>
|
||||
<n-statistic label="用户总流水(元)" tabular-nums>
|
||||
<n-number-animation
|
||||
ref="numberAnimationInstRef"
|
||||
@@ -36,8 +36,8 @@
|
||||
:precision="2"
|
||||
/>
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
<n-card ml-10 w-250>
|
||||
</n-card> -->
|
||||
<!-- <n-card ml-10 w-250>
|
||||
<n-statistic label="总佣金(积分)" tabular-nums>
|
||||
<n-number-animation
|
||||
ref="numberAnimationInstRef"
|
||||
@@ -46,7 +46,7 @@
|
||||
:precision="2"
|
||||
/>
|
||||
</n-statistic>
|
||||
</n-card>
|
||||
</n-card> -->
|
||||
<n-card ml-10 w-250>
|
||||
<n-statistic label="平台总用户" tabular-nums>
|
||||
<n-number-animation
|
||||
@@ -58,7 +58,7 @@
|
||||
</n-card>
|
||||
</div>
|
||||
</n-gi>
|
||||
<n-gi span="12" mt-10 flex items-center>
|
||||
<n-gi :span="12" mt-10 flex items-center>
|
||||
<span w-100>筛选条件:</span>
|
||||
<n-input-group>
|
||||
<n-select
|
||||
@@ -70,7 +70,7 @@
|
||||
<n-input v-model:value="queryParams.word" :style="{ width: '30%' }" />
|
||||
</n-input-group>
|
||||
</n-gi>
|
||||
<n-gi :span="24" mt-10>
|
||||
<!-- <n-gi :span="24" mt-10>
|
||||
<div>
|
||||
<span>筛选状态:</span>
|
||||
<n-radio-group v-model:value="queryParams.status">
|
||||
@@ -95,8 +95,8 @@
|
||||
/>
|
||||
</n-radio-group>
|
||||
</div>
|
||||
</n-gi>
|
||||
<n-gi :span="10">
|
||||
</n-gi> -->
|
||||
<n-gi :span="24">
|
||||
<div mt-10 flex items-center>
|
||||
<span w-100>时间筛选:</span>
|
||||
<n-date-picker
|
||||
@@ -279,40 +279,6 @@ const cardData = ref({
|
||||
win: 0,
|
||||
})
|
||||
|
||||
const songs = ref([
|
||||
{
|
||||
value: 1,
|
||||
label: '未使用',
|
||||
},
|
||||
{
|
||||
value: 3,
|
||||
label: '用户赢',
|
||||
},
|
||||
{
|
||||
value: 4,
|
||||
label: '用户输',
|
||||
},
|
||||
{
|
||||
value: 5,
|
||||
label: '已过期',
|
||||
},
|
||||
])
|
||||
|
||||
const songs1 = ref([
|
||||
{
|
||||
value: 5,
|
||||
label: '注册赠送',
|
||||
},
|
||||
{
|
||||
value: 6,
|
||||
label: '签到赠送',
|
||||
},
|
||||
{
|
||||
value: 7,
|
||||
label: '主动赠送',
|
||||
},
|
||||
])
|
||||
|
||||
const selectOptions = [
|
||||
{
|
||||
label: '用户昵称',
|
||||
@@ -364,20 +330,20 @@ const columns = ref([
|
||||
sorter: true,
|
||||
sortOrder: false,
|
||||
},
|
||||
{
|
||||
title: '赢积分',
|
||||
align: 'center',
|
||||
key: 'win',
|
||||
sorter: true,
|
||||
sortOrder: false,
|
||||
},
|
||||
{
|
||||
title: '用户豆子',
|
||||
align: 'center',
|
||||
key: 'pulse',
|
||||
sorter: true,
|
||||
sortOrder: false,
|
||||
},
|
||||
// {
|
||||
// title: '赢积分',
|
||||
// align: 'center',
|
||||
// key: 'win',
|
||||
// sorter: true,
|
||||
// sortOrder: false,
|
||||
// },
|
||||
// {
|
||||
// title: '用户豆子',
|
||||
// align: 'center',
|
||||
// key: 'pulse',
|
||||
// sorter: true,
|
||||
// sortOrder: false,
|
||||
// },
|
||||
{
|
||||
title: '用户状态',
|
||||
align: 'center',
|
||||
|
||||
Reference in New Issue
Block a user