This commit is contained in:
weiwei committed 2025-02-21 14:50:41 +08:00
commit 28b3d645ad
8 files changed
+199 -173

No files matched your search

+4 -4
View File
@@ -8,18 +8,18 @@ VITE_OPEN = true
ENV = 'development'
# ADMIN 服务地址
VITE_ADMIN_PROXY_PATH = http://123.156.230.15:8089/api/ # 线上
# VITE_ADMIN_PROXY_PATH = http://123.156.230.15:8089/api/ # 线上
# VITE_ADMIN_PROXY_PATH = http://pjcloud.center.takin.cc/
# VITE_ADMIN_PROXY_PATH = http://localhost:9999/
# VITE_ADMIN_PROXY_PATH = http://192.168.101.50:9999/ # 邓-本地
VITE_ADMIN_PROXY_PATH = http://192.168.101.50:9999/ # 邓-本地
# VITE_ADMIN_PROXY_PATH = http://59.202.170.152:81/api # 正式环境
# 图片访问基础地址
VITE_IMAGE_BASE_PATH = http://123.156.230.15:8089/api # 线上
# VITE_IMAGE_BASE_PATH = http://123.156.230.15:8089/api # 线上
# VITE_IMAGE_BASE_PATH = http://pjcloud.center.takin.cc
# VITE_IMAGE_BASE_PATH = http://localhost:9999
# VITE_IMAGE_BASE_PATH = http://192.168.101.50:9999 # 邓-本地
VITE_IMAGE_BASE_PATH = http://192.168.101.50:9999 # 邓-本地
# VITE_IMAGE_BASE_PATH = http://59.202.170.152:81/api/ # 正式环境
# 代码生成服务地址
+1 -1
View File
@@ -3,7 +3,7 @@ import request from "/@/utils/request"
export const list = () => {
return request({
url: "/admin/user/list",
method: "get",
method: "post",
})
}
+34 -31
View File
@@ -1,49 +1,52 @@
import request from "/@/utils/request"
export function fetchList(query?: Object) {
return request({
url: '/wallet/wallet-manage/page',
method: 'get',
params: query
})
return request({
url: "/wallet/wallet-manage/page",
method: "get",
params: query,
})
}
export function fetchListJoin(query?: Object) {
return request({
url: '/wallet/wallet-manage/page-join',
method: 'get',
params: query
})
export function fetchListJoin(query: any) {
return request({
url: "/wallet/wallet-manage/page-join",
method: "post",
params: {
current: query.current,
size: query.size,
},
data: query,
})
}
export function addObj(obj?: Object) {
return request({
url: '/wallet/wallet-manage',
method: 'post',
data: obj
})
return request({
url: "/wallet/wallet-manage",
method: "post",
data: obj,
})
}
export function getObj(id?: string) {
return request({
url: '/wallet/wallet-manage/' + id,
method: 'get'
})
return request({
url: "/wallet/wallet-manage/" + id,
method: "get",
})
}
export function delObjs(ids?: Object) {
return request({
url: '/wallet/wallet-manage',
method: 'delete',
data: ids
})
return request({
url: "/wallet/wallet-manage",
method: "delete",
data: ids,
})
}
export function putObj(obj?: Object) {
return request({
url: '/wallet/wallet-manage',
method: 'put',
data: obj
})
return request({
url: "/wallet/wallet-manage",
method: "put",
data: obj,
})
}
+3 -3
View File
@@ -13,9 +13,9 @@
<template #default>
<el-row v-show="showSearch">
<el-form ref="queryRef" :inline="true" :model="state.queryForm" @keyup.enter="getDataList">
<el-form-item label="用户" prop="userIds">
<el-form-item label="用户" prop="userId">
<div style="width: 180px">
<select-user v-model="state.queryForm.userIds" clearable />
<select-user v-model="state.queryForm.userId" clearable />
</div>
</el-form-item>
<el-form-item :label="$t('sysuser.username')" prop="username">
@@ -116,7 +116,7 @@
<el-table-column
v-auths="['sys_user_edit', 'userFace_sysUserFace_view', 'sys_user_del']"
:label="$t('common.action')"
width="200"
width="300"
fixed="right"
>
<template #default="scope">
+4 -4
View File
@@ -14,13 +14,13 @@
<el-form ref="queryRef" :inline="true" :model="state.queryForm" @keyup.enter="getDataList">
<el-row :gutter="24">
<el-col :span="4">
<el-form-item class="w100" label="用户" prop="userIds">
<select-user v-model="state.queryForm.userIds" />
<el-form-item class="w100" label="用户" prop="userId">
<select-user v-model="state.queryForm.userId" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="w100" label="充值时间" prop="payTimeList">
<el-date-picker v-model="state.queryForm.payTimeList" value-format="YYYY-MM-DD" type="daterange" />
<el-form-item class="w100" label="充值时间" prop="createTimeList">
<el-date-picker v-model="state.queryForm.createTimeList" value-format="YYYY-MM-DD" type="daterange" />
</el-form-item>
</el-col>
<el-form-item>
+145 -122
View File
@@ -1,127 +1,139 @@
<template>
<div class="layout-padding">
<div class="layout-padding-auto layout-padding-view">
<el-form ref="queryRef" :inline="true" :model="state.queryForm" @keyup.enter="getDataList">
<el-row :gutter="24">
<el-col :span="4">
<el-form-item class="w100" label="用户" prop="userIds">
<select-user v-model="state.queryForm.userIds" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item class="w100" label="饭卡卡号" prop="cardNumber">
<el-input v-model="state.queryForm.cardNumber" placeholder="饭卡卡号" clearable />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item class="w100" label="饭卡类型" prop="walletTypeId">
<select-wallet-type v-model="state.queryForm.walletTypeId" placeholder="饭卡类型" clearable />
</el-form-item>
</el-col>
<el-form-item>
<el-button icon="Search" type="primary" @click="getDataList">{{ $t("common.queryBtn") }}</el-button>
<el-button icon="Refresh" @click="resetQuery">{{ $t("common.resetBtn") }}</el-button>
</el-form-item>
</el-row>
</el-form>
<el-row>
<div class="mb8" style="width: 100%">
<el-button
plain
:disabled="multiple"
icon="Delete"
type="primary"
v-auth="'wallet_walletManage_del'"
@click="handleDelete(selectObjs)"
>
删除
</el-button>
<right-toolbar
v-model:showSearch="showSearch"
:export="'wallet_walletManage_export'"
@exportExcel="exportExcel"
class="ml10 mr20"
style="float: right"
@queryTable="getDataList"
></right-toolbar>
</div>
</el-row>
<el-table
:data="state.dataList"
v-loading="state.loading"
border
:summary-method="getSummaries"
show-summary
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@selection-change="selectionChangHandle"
@sort-change="sortChangeHandle"
<DraggableDepTree
ref="draggableDepTreeRef"
placeholder="请输入部门名称"
:show-expand="true"
@getSelectNode="handleGetSelectNode"
switch-inactive-text="当前部门"
switch-active-text="当前部门及子部门"
:defaultTreeWidth="20"
>
<el-table-column type="selection" width="40" align="center" />
<el-table-column type="index" label="#" width="80" />
<el-table-column prop="username" width="100" label="用户" />
<el-table-column prop="userAvatar" width="80" label="头像">
<template #default="{ row }">
<preview-image :src="row.userAvatar" />
</template>
</el-table-column>
<el-table-column prop="userMobile" width="120" label="手机号" />
<el-table-column prop="deptName" label="部门" width="200" />
<el-table-column prop="walletTypeUniqueCode" width="200" label="饭卡类型">
<template #default="{ row }">
<div class="flex items-center justify-center">
<div class="color-primary">{{ row.walletTypeName }}</div>
<div class="flex items-center just ml5">
<dict-tag :options="wallet_type" :value="row.walletTypeUniqueCode" />
</div>
<template #default>
<el-form ref="queryRef" :inline="true" :model="state.queryForm" @keyup.enter="getDataList">
<el-row :gutter="24">
<el-col :span="4">
<el-form-item class="w100" label="用户" prop="userIds">
<select-user v-model="state.queryForm.userIds" />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item class="w100" label="饭卡卡号" prop="cardNumber">
<el-input v-model="state.queryForm.cardNumber" placeholder="饭卡卡号" clearable />
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item class="w100" label="饭卡类型" prop="walletTypeId">
<select-wallet-type v-model="state.queryForm.walletTypeId" placeholder="饭卡类型" clearable />
</el-form-item>
</el-col>
<el-form-item>
<el-button icon="Search" type="primary" @click="getDataList">{{ $t("common.queryBtn") }}</el-button>
<el-button icon="Refresh" @click="resetQuery">{{ $t("common.resetBtn") }}</el-button>
</el-form-item>
</el-row>
</el-form>
<el-row>
<div class="mb8" style="width: 100%">
<el-button
plain
:disabled="multiple"
icon="Delete"
type="primary"
v-auth="'wallet_walletManage_del'"
@click="handleDelete(selectObjs)"
>
删除
</el-button>
<right-toolbar
v-model:showSearch="showSearch"
:export="'wallet_walletManage_export'"
@exportExcel="exportExcel"
class="ml10 mr20"
style="float: right"
@queryTable="getDataList"
></right-toolbar>
</div>
</template>
</el-table-column>
<el-table-column prop="cardNumber" width="150" label="饭卡卡号" />
<el-table-column prop="balance" align="center" width="100" label="余额">
<template #default="{ row }">
<div class="color-primary">{{ displayPrice(row.balance) }}</div>
</template>
</el-table-column>
<el-table-column prop="totalExpense" align="center" width="100" label="累计支出">
<template #default="{ row }">
<div class="color-danger">{{ displayPrice(row.totalExpense) }}</div>
</template>
</el-table-column>
<el-table-column prop="totalRecharge" align="center" width="100" label="累计充值">
<template #default="{ row }">
<div class="color-success">{{ displayPrice(row.totalRecharge) }}</div>
</template>
</el-table-column>
<el-table-column prop="isFreeze" width="120" label="是否冻结饭卡">
<template #default="{ row }">
<dict-tag :options="yes_no_type" :value="row.isFreeze" />
</template>
</el-table-column>
<el-table-column v-if="false" prop="activeBindStatus" width="120" label="饭卡绑定状态" />
<el-table-column prop="createTime" width="200" label="创建时间" />
<el-table-column label="操作" fixed="right" width="200">
<template #default="{ row }">
<el-button
icon="InfoFilled"
text
type="primary"
v-auth="'wallet_walletManage_edit'"
@click="formDialogRef.openDialog(row.id)"
>详情</el-button
>
<el-button
icon="Money"
text
type="primary"
v-auth="'wallet_walletTransaction_update_balance'"
@click="changeBalanceRef.openDialog(row.userId, row.id)"
>充值/扣款</el-button
>
</template>
</el-table-column>
</el-table>
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" />
</el-row>
<el-table
:data="state.dataList"
v-loading="state.loading"
border
:summary-method="getSummaries"
show-summary
:cell-style="tableStyle.cellStyle"
:header-cell-style="tableStyle.headerCellStyle"
@selection-change="selectionChangHandle"
@sort-change="sortChangeHandle"
>
<el-table-column type="selection" width="40" align="center" />
<el-table-column type="index" label="#" width="80" />
<el-table-column prop="username" width="100" label="用户" />
<el-table-column prop="userAvatar" width="80" label="头像">
<template #default="{ row }">
<preview-image :src="row.userAvatar" />
</template>
</el-table-column>
<el-table-column prop="userMobile" width="120" label="手机号" />
<el-table-column prop="deptName" label="部门" width="200" />
<el-table-column prop="walletTypeUniqueCode" width="200" label="饭卡类型">
<template #default="{ row }">
<div class="flex items-center justify-center">
<div class="color-primary">{{ row.walletTypeName }}</div>
<div class="flex items-center just ml5">
<dict-tag :options="wallet_type" :value="row.walletTypeUniqueCode" />
</div>
</div>
</template>
</el-table-column>
<el-table-column prop="cardNumber" width="150" label="饭卡卡号" />
<el-table-column prop="balance" align="center" width="100" label="余额">
<template #default="{ row }">
<div class="color-primary">{{ displayPrice(row.balance) }}</div>
</template>
</el-table-column>
<el-table-column prop="totalExpense" align="center" width="100" label="累计支出">
<template #default="{ row }">
<div class="color-danger">{{ displayPrice(row.totalExpense) }}</div>
</template>
</el-table-column>
<el-table-column prop="totalRecharge" align="center" width="100" label="累计充值">
<template #default="{ row }">
<div class="color-success">{{ displayPrice(row.totalRecharge) }}</div>
</template>
</el-table-column>
<el-table-column prop="isFreeze" width="120" label="是否冻结饭卡">
<template #default="{ row }">
<dict-tag :options="yes_no_type" :value="row.isFreeze" />
</template>
</el-table-column>
<el-table-column v-if="false" prop="activeBindStatus" width="120" label="饭卡绑定状态" />
<el-table-column prop="createTime" width="200" label="创建时间" />
<el-table-column label="操作" fixed="right" width="200">
<template #default="{ row }">
<el-button
icon="InfoFilled"
text
type="primary"
v-auth="'wallet_walletManage_edit'"
@click="formDialogRef.openDialog(row.id)"
>详情</el-button
>
<el-button
icon="Money"
text
type="primary"
v-auth="'wallet_walletTransaction_update_balance'"
@click="changeBalanceRef.openDialog(row.userId, row.id)"
>充值/扣款</el-button
>
</template>
</el-table-column>
</el-table>
<pagination @size-change="sizeChangeHandle" @current-change="currentChangeHandle" v-bind="state.pagination" />
</template>
</DraggableDepTree>
</div>
<transaction-list ref="formDialogRef" @refresh="getDataList(false)" />
<change-balance ref="changeBalanceRef" @refresh="getDataList(false)" />
@@ -143,6 +155,7 @@ const { wallet_type, yes_no_type } = useDict("wallet_type", "yes_no_type")
// 定义变量内容
const formDialogRef = ref()
const changeBalanceRef = ref()
const draggableDepTreeRef = ref()
// 搜索变量
const queryRef = ref()
const showSearch = ref(true)
@@ -156,8 +169,7 @@ const state: BasicTableProps = reactive<BasicTableProps>({
})
// table hook
const { getDataList, currentChangeHandle, sizeChangeHandle, sortChangeHandle, downBlobFile, tableStyle } =
useTable(state)
const { getDataList, currentChangeHandle, sizeChangeHandle, sortChangeHandle, postDownBlobFile, tableStyle } = useTable(state)
// 清空搜索条件
const resetQuery = () => {
@@ -165,12 +177,15 @@ const resetQuery = () => {
queryRef.value?.resetFields()
// 清空多选
selectObjs.value = []
state.queryForm.deptId = ""
state.queryForm.deptIds = []
draggableDepTreeRef.value.resetData()
getDataList()
}
// 导出excel
const exportExcel = () => {
downBlobFile(
postDownBlobFile(
"/wallet/wallet-manage/export",
Object.assign(state.queryForm, { current: state.pagination?.current, size: state.pagination?.size }),
"walletManage.xlsx",
@@ -199,6 +214,14 @@ const selectionChangHandle = (objs: { id: string }[]) => {
multiple.value = !objs.length
}
// 树节点选择时
const handleGetSelectNode = (curClickedNode: any, checkedTreeNodes: any, isDeepTree: any) => {
state.queryForm.deptId = curClickedNode.id
state.queryForm.deptIds = checkedTreeNodes.map((item: any) => item.id)
state.queryForm.isDeepDept = isDeepTree
getDataList()
}
// 删除操作
const handleDelete = async (ids: string[]) => {
try {
+4 -4
View File
@@ -14,13 +14,13 @@
<el-form ref="queryRef" :inline="true" :model="state.queryForm" @keyup.enter="getDataList">
<el-row :gutter="24">
<el-col :span="4">
<el-form-item class="w100" label="用户" prop="userIds">
<select-user v-model="state.queryForm.userIds" />
<el-form-item class="w100" label="用户" prop="userId">
<select-user v-model="state.queryForm.userId" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="w100" label="退款时间" prop="payTimeList">
<el-date-picker v-model="state.queryForm.payTimeList" value-format="YYYY-MM-DD" type="daterange" />
<el-form-item class="w100" label="退款时间" prop="createTimeList">
<el-date-picker v-model="state.queryForm.createTimeList" value-format="YYYY-MM-DD" type="daterange" />
</el-form-item>
</el-col>
<el-form-item>
+4 -4
View File
@@ -14,13 +14,13 @@
<el-form ref="queryRef" :inline="true" :model="state.queryForm" @keyup.enter="getDataList">
<el-row :gutter="24">
<el-col :span="4">
<el-form-item class="w100" label="用户" prop="userIds">
<select-user v-model="state.queryForm.userIds" />
<el-form-item class="w100" label="用户" prop="userId">
<select-user v-model="state.queryForm.userId" />
</el-form-item>
</el-col>
<el-col :span="6">
<el-form-item class="w100" label="消费时间" prop="payTimeList">
<el-date-picker v-model="state.queryForm.payTimeList" value-format="YYYY-MM-DD" type="daterange" />
<el-form-item class="w100" label="消费时间" prop="createTimeList">
<el-date-picker v-model="state.queryForm.createTimeList" value-format="YYYY-MM-DD" type="daterange" />
</el-form-item>
</el-col>
<el-form-item>