子系统

This commit is contained in:
THK3121 2023-09-21 09:23:55 +08:00
parent 36b7d71289
commit 41c6e2c0ea
10 changed files with 770 additions and 490 deletions

25
admin/src/api/system.ts Normal file
View File

@ -0,0 +1,25 @@
import request from "@/utils/request";
// 系统列表
export function systemListApi(params?: any) {
return request.get({ url: "/systems.system/lists", params });
}
// 系统详情
export function systemDetailApi(params?: any) {
return request.get({ url: "/systems.system/detail", params });
}
// 添加系统
export function systemAddApi(params?: any) {
return request.post({ url: "/systems.system/add", params });
}
// 编辑系统
export function systemEditApi(params?: any) {
return request.post({ url: "/systems.system/edit", params });
}
// 删除系统
export function systemDeleteApi(params?: any) {
return request.post({ url: "/systems.system/delete", params });
}

View File

@ -1,6 +1,24 @@
import request from "@/utils/request"; import request from "@/utils/request";
// 余额明细 // 用户列表
export function accountLog(params?: any) { export function usersListApi(params?: any) {
return request.get({ url: "/finance.account_log/lists", params }); return request.get({ url: "/user.user/lists", params });
}
// 用户列表
export function usersDetailApi(params?: any) {
return request.get({ url: "/user.user/detail", params });
}
// 余额列表
export function usersbalanceListApi(params?: any) {
return request.get({ url: "/user.user/balance", params });
}
// 积分列表
export function usersintegralListApi(params?: any) {
return request.get({ url: "/user.user/integral", params });
}
export function accountLog(params?: any) {
return request.get({ url: "/user.user/lists", params });
} }

View File

@ -2,7 +2,9 @@ const config = {
terminal: 1, //终端 terminal: 1, //终端
title: "后台管理系统", //网站默认标题 title: "后台管理系统", //网站默认标题
version: "1.6.0", //版本号 version: "1.6.0", //版本号
baseUrl: `${import.meta.env.VITE_APP_BASE_URL || "http://192.168.1.6:8081"}/`, //请求接口域名 baseUrl: `${
import.meta.env.VITE_APP_BASE_URL || ""
}/`, //请求接口域名
urlPrefix: "adminapi", //请求默认前缀 urlPrefix: "adminapi", //请求默认前缀
timeout: 10 * 1000, //请求超时时长 timeout: 10 * 1000, //请求超时时长
}; };

View File

@ -1,156 +0,0 @@
<template>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-row>
<el-col :span="4">
<el-form-item label="用户名:" prop="name"> 张用户 </el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="注册手机号:" prop="name">
19130550023
</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="性别:" prop="name"> </el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="年龄:" prop="name"> 36 </el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="注册时间:" prop="name"> 2023.09.11</el-form-item>
</el-col>
<el-col :span="4">
<el-form-item label="身份证号:" prop="name">
513701200012105612
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="所属片区:" prop="name">
四川省泸州市江阳区xx粉红色的积分开朗大方</el-form-item
>
</el-col>
<el-col :span="8">
<el-form-item label="最近登录ip:" prop="name">
2+1.10.124</el-form-item
>
</el-col>
<el-col :span="8">
<el-form-item label="账户状态:" prop="name">
<el-select
v-model="queryParams.status"
placeholder="是否显示"
clearable
class="w-[240px]"
>
<el-option label="正常" value="1"></el-option>
<el-option label="异常" value="0"></el-option> </el-select
></el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>
<el-card class="!border-none mb-4" shadow="never">
<el-form-item label="账户余额:" prop="name">
9999999999 &nbsp;&nbsp;
<el-button type="primary">查看全部</el-button></el-form-item
>
<el-table :data="pager.lists">
<el-table-column label="时间" prop="id" />
<el-table-column label="资金变动" prop="name" show-overflow-tooltip />
<el-table-column label="项目" prop="remark" show-overflow-tooltip>
</el-table-column>
<el-table-column
label="交易渠道/场所"
prop="remark"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="交易ID" prop="remark" show-overflow-tooltip>
</el-table-column>
<el-table-column label="支付方式" prop="remark" show-overflow-tooltip>
</el-table-column>
<el-table-column label="交易类型" prop="remark" show-overflow-tooltip>
</el-table-column>
<el-table-column label="账户余额" prop="remark" show-overflow-tooltip>
</el-table-column>
<!-- <el-table-column label="状态" prop="status" show-overflow-tooltip>
<template #default="{ row }">
<span v-if="row.status == 1">启用</span>
<span v-if="row.status == 0">禁用</span>
</template>
</el-table-column> -->
</el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<div class="bottomTables">
<el-card
style="flex: 2; margin-right: 2vw"
class="!border-none mb-4"
shadow="never"
>
<el-form-item label="积分累计:" prop="name">
9999999999 &nbsp;&nbsp;
<el-button type="primary">查看全部</el-button></el-form-item
>
<el-table :data="pager.lists">
<el-table-column label="时间" prop="id" />
<el-table-column label="积分变动" prop="name" show-overflow-tooltip />
<el-table-column label="项目" prop="remark" show-overflow-tooltip>
</el-table-column>
<el-table-column
label="积分变更场所"
prop="remark"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="分类" prop="remark" show-overflow-tooltip>
</el-table-column>
<el-table-column label="积分累计" prop="remark" show-overflow-tooltip>
</el-table-column>
</el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<el-card style="flex: 1" class="!border-none mb-4" shadow="never">
<el-form-item label="各应用使用情况:" prop="name">
9999999999 &nbsp;&nbsp;
<el-button type="primary">查看全部</el-button></el-form-item
>
<el-table :data="pager.lists">
<el-table-column label="时间" prop="id" />
<el-table-column label="使用应用" prop="name" show-overflow-tooltip />
<el-table-column label="使用时长" prop="remark" show-overflow-tooltip>
</el-table-column>
</el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
</div>
</template>
<script lang="ts" setup name="flowLists">
import { reactive } from "vue";
import { usePaging } from "@/hooks/usePaging";
import { apiFlowLists, apiFlowDetil, apiFlowStatus } from "@/api/examined";
const queryParams = reactive({
name: "",
status: "1",
});
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: apiFlowLists,
params: queryParams,
});
</script>
<style lang="scss" scoped>
.bottomTables {
display: flex;
}
</style>

View File

@ -0,0 +1,80 @@
<template>
asdsa
</template>
<script lang="ts" setup name="flowLists">
import { usePaging } from "@/hooks/usePaging";
import { systemEditApi, systemDetailApi } from "@/api/system";
import { reactive } from "vue"
const route = useRoute();
const setFormData = (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key];
}
}
};
const formData = reactive({
id: null,
phone: null,
avatar: null,
nick_name: null,
real_name: null,
id_card: null,
gender: null,
age: null,
total_balance: null,
total_integral: null,
address: null,
status: null,
last_login_time: null,
last_login_ip: null,
create_time: null,
gender_text: null,
status_text: null,
balance_list: [
{
id: null,
record_id: null,
amount: null,
total_amount: null,
type: null,
pay_type: null,
mark: null,
create_time: null,
app: null,
type_text: null,
pay_type_text: null,
},
],
integral_list: [
{
id: null,
record_id: 1,
amount: "44.00",
total_amount: "66.00",
type: 1,
mark: "签到奖励",
appid: "AD1695113831",
create_time: "2023-09-19 17:52:44",
app: "里海超市",
type_text: "收入",
},
],
});
const queryParams = reactive({
name: "",
status: "1",
});
systemDetailApi({ id: route.query.id }).then((res) => {
setFormData(res);
});
</script>
<style lang="scss" scoped>
.bottomTables {
display: flex;
}
</style>

View File

@ -0,0 +1,214 @@
<template>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="姓名" prop="nick_name">
<el-input class="w-[280px]" v-model="queryParams.nick_name" clearable placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="手机号" prop="phone">
<el-input class="w-[280px]" v-model="queryParams.phone" clearable placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="所属片区" prop="address">
<el-input class="w-[280px]" v-model="queryParams.address" clearable placeholder="请选择" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" clearable placeholder="请选择状态">
<el-option label="正常" :value="0"></el-option>
<el-option label="禁用" :value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="!border-none mb-4" shadow="never">
<el-button type="primary" @click="addSystemFn">
新增
</el-button>
<el-table :data="pager.lists">
<el-table-column label=" 应用id" prop="id" align="center" />
<el-table-column label="应用名称" prop="name" align="center" show-overflow-tooltip />
<el-table-column label="应用appid" prop="app_id" align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column label="应用appkey" prop="app_key" align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column label="应用状态" prop="status_text" align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column label="创建时间" prop="create_time" align="center" show-overflow-tooltip>
</el-table-column>
<el-table-column label="操作" show-overflow-tooltip align="center">
<template #default="{ row }">
<el-button type="primary" @click="detailPop" link>
详情
</el-button>
<el-button type="primary" @click="deleteSystemFn" link>
删除
</el-button>
<el-button type="primary" @click="editSystemFn" link>
编辑
</el-button>
</template>
</el-table-column>
</el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<!-- 详情与编辑 -->
<el-dialog v-model="dialogTableVisible" width="30%" align-center :title="poptit">
<el-form label-width="100px" :model="formData" style="max-width: 460px">
<el-form-item label="应用ID" v-if="mode == 'r'">
<el-input v-model="formData.id" />
</el-form-item>
<el-form-item label="应用名称">
<el-input v-model="formData.name" />
</el-form-item>
<el-form-item label="应用url" v-if="mode == 'c'">
<el-input v-model="formData.url" />
</el-form-item>
<el-form-item label="应用appid">
<el-input v-model="formData.app_id" />
</el-form-item>
<el-form-item label="应用appkey">
<el-input v-model="formData.app_key" />
</el-form-item>
<el-form-item label="应用状态">
<el-select v-model="formData.status" clearable class="w-[400px]">
<el-option label="正常" :value="0"></el-option>
<el-option label="异常" :value="1"></el-option>
<el-option label="删除" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="创建时间">
<el-input v-model="formData.create_time" />
</el-form-item>
<el-row style="float: right;">
<el-button type="primary" @click="confirm">确定</el-button>
<el-button @click="cancel">取消</el-button>
</el-row>
</el-form>
</el-dialog>
</template>
<script setup lang="ts">
import { usePaging } from "@/hooks/usePaging";
import { systemListApi, systemDetailApi, systemDeleteApi, systemAddApi, systemEditApi } from "@/api/system";
// import { apiCompanyLists } from "@/api/company";
import { reactive, ref } from "vue"
import { ElMessage, ElMessageBox } from 'element-plus'
import { markRaw } from 'vue'
import { Delete } from '@element-plus/icons-vue'
//
const queryParams = reactive({
nick_name: "",
phone: '',
status: "",
address: "",
});
// hooks
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: systemListApi,
params: queryParams,
});
const formData = reactive({
id: null,
name: null,
app_id: null,
app_key: null,
status: null,
create_time: null,
url: null
})
const dialogTableVisible = ref(false)
// pop
const poptit = ref("")
const mode = ref("")
// c
const addSystemFn = () => {
mode.value = "c"
poptit.value = "添加子系统"
dialogTableVisible.value = true
}
// r
const detailPop = () => {
mode.value = "r"
poptit.value = "子系统详情"
dialogTableVisible.value = true
}
// u
const editSystemFn = () => {
mode.value = "u"
poptit.value = "子系统编辑"
dialogTableVisible.value = true
}
// d
const deleteSystemFn = () => {
mode.value = "d"
ElMessageBox.confirm(
'确认删除该系统吗?',
'提示',
{
confirmButtonText: '确认',
cancelButtonText: '取消',
type: 'warning',
icon: markRaw(Delete),
}
)
.then(() => {
ElMessage({
type: 'success',
message: '删除成功!',
})
})
.catch(() => {
ElMessage({
type: 'info',
message: '取消删除',
})
})
}
const confirm = () => {
if (mode.value == "c") {
ElMessage({
type: 'success',
message: '添加成功!',
})
} else if (mode.value == "r") {
} else if (mode.value == "u") {
ElMessage({
type: 'success',
message: '修改成功!',
})
}
dialogTableVisible.value = false
}
const cancel = () => {
dialogTableVisible.value = false
for (var prop in formData) {
if (formData.hasOwnProperty(prop)) {
// @ts-ignore
formData[prop] = null;
}
}
}
getLists();
</script>
<style lang="scss" scoped></style>

View File

@ -1,118 +1,99 @@
<template> <template>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline> <el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="公司名称" prop="company_id">
<el-input
class="w-[280px]"
v-model="queryParams.company_id"
clearable
placeholder="请输入公司"
/>
</el-form-item>
<el-form-item label="合同类型" prop="contract_type">
<el-select
v-model="queryParams.contract_type"
clearable
placeholder="请输入合同类型"
>
<el-option
v-for="item in statusdata"
:key="item.label"
:value="item.id"
:label="item.name"
/>
</el-select>
</el-form-item>
<el-form-item label="合同编号" prop="contract_no">
<el-input
class="w-[280px]"
v-model="queryParams.contract_no"
clearable
placeholder="请输入合同编号"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
clearable
placeholder="请选择状态"
>
<el-option
v-for="item in statusdata"
:key="item.label"
:value="item.id"
:label="item.name"
/>
</el-select>
</el-form-item>
<el-form-item label="甲方片区经理" prop="area_manager"> <el-form-item label="交易ID" prop="record_id">
<el-input <el-input class="w-[280px]" v-model="queryParams.record_id" clearable placeholder="请输入交易ID" />
class="w-[280px]" </el-form-item>
v-model="queryParams.area_manager"
clearable <el-form-item label="项目" prop="contract_no">
placeholder="请输入甲方片区经理" <el-input class="w-[280px]" v-model="queryParams.mark" clearable placeholder="请输入项目名称" />
/> </el-form-item>
</el-form-item>
<el-form-item> <el-form-item label="交易渠道/场所" prop="contract_no">
<el-button type="primary" @click="resetPage">查询</el-button> <el-select v-model="queryParams.app" clearable placeholder="请选择交易渠道/场所">
<el-button @click="resetParams">重置</el-button> <el-option label="商超系统" :value="0"></el-option>
</el-form-item> <el-option label="供销工作系统" :value="1"></el-option>
</el-form> </el-select>
</el-card> </el-form-item>
<el-card class="!border-none mb-4" shadow="never">
<el-table :data="pager.lists">
<el-table-column label="时间" prop="id" /> <el-form-item label="支付方式" prop="area_manager">
<el-table-column label="资金变动" prop="name" show-overflow-tooltip /> <el-select v-model="queryParams.pay_type" clearable placeholder="请选择支付方式">
<el-table-column label="项目" prop="remark" show-overflow-tooltip> <el-option label="余额支付" :value="0"></el-option>
</el-table-column> <el-option label="微信支付" :value="1"></el-option>
<el-table-column <el-option label="提现" :value="3"></el-option>
label="交易渠道/场所" </el-select>
prop="remark" </el-form-item>
show-overflow-tooltip <el-form-item>
> <el-button type="primary" @click="resetPage">查询</el-button>
</el-table-column> <el-button @click="resetParams">重置</el-button>
<el-table-column label="交易ID" prop="remark" show-overflow-tooltip> </el-form-item>
</el-table-column> </el-form>
<el-table-column label="支付方式" prop="remark" show-overflow-tooltip> </el-card>
</el-table-column> <el-card class="!border-none mb-4" shadow="never">
<el-table-column label="交易类型" prop="remark" show-overflow-tooltip> <el-table :data="pager.lists">
</el-table-column> <el-table-column label="时间" prop="create_time" />
<el-table-column label="账户余额" prop="remark" show-overflow-tooltip> <el-table-column label="资金变动" prop="amount" show-overflow-tooltip>
</el-table-column>
</el-table> <template #default="{ row }">
<div class="flex mt-4 justify-end"> <text style="color: yellowgreen;" v-if="row.type == 1">+ {{ row.amount }}</text>
<pagination v-model="pager" @change="getLists" /> <text style="color: red;" v-else>- {{ row.amount }}</text>
</div> </template>
</el-card>
</el-table-column>
<el-table-column label="项目" prop="mark" show-overflow-tooltip>
</el-table-column>
<el-table-column label="交易渠道/场所" prop="app" show-overflow-tooltip>
</el-table-column>
<el-table-column label="交易ID" prop="record_id" show-overflow-tooltip>
</el-table-column>
<el-table-column label="支付方式" prop="pay_type_text" show-overflow-tooltip>
</el-table-column>
<el-table-column label="交易类型" show-overflow-tooltip>
<template #default="{ row }">
积分奖励
</template>
</el-table-column>
<el-table-column label="账户余额" prop="total_amount" show-overflow-tooltip>
<template #default="{ row }">
<text style="color: green;">+ {{ row.total_amount }}</text>
</template>
</el-table-column>
</el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { usePaging } from "@/hooks/usePaging"; import { usePaging } from "@/hooks/usePaging";
import { accountLog } from "@/api/users"; import { usersbalanceListApi } from "@/api/users";
const route = useRoute();
// //
const queryParams = reactive({ const queryParams = reactive({
name: "", uid: route.query.uid,
status: "name1", record_id: '',
company_id: "", mark: '',
contract_type: "", pay_type: "",
contract_no: "", app: "",
party_a: "",
party_b: "",
area_manager: "",
type: "",
}); });
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: accountLog, fetchFun: usersbalanceListApi,
params: queryParams, params: queryParams,
}); });
const statusdata = reactive([ const statusdata = reactive([
{ label: "lable", id: 0, name: "name1" }, { label: "lable", id: 0, name: "name1" },
{ label: "lable2", id: 0, name: "name2" }, { label: "lable2", id: 0, name: "name2" },
]); ]);
getLists();
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

View File

@ -1,156 +1,220 @@
<template> <template>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline> <el-form class="mb-[-16px]" :model="queryParams" inline>
<el-row> <el-row>
<el-col :span="4"> <el-col :span="4">
<el-form-item label="用户名:" prop="name"> 张用户 </el-form-item> <el-form-item label="姓名:" prop="name">
</el-col> {{ formData.real_name }}
<el-col :span="4"> </el-form-item>
<el-form-item label="注册手机号:" prop="name"> </el-col>
19130550023 <el-col :span="4">
</el-form-item> <el-form-item label="注册手机号:" prop="name">
</el-col> {{ formData.phone }}
<el-col :span="4"> </el-form-item>
<el-form-item label="性别:" prop="name"> </el-form-item> </el-col>
</el-col> <el-col :span="4">
<el-col :span="4"> <el-form-item label="性别:" prop="name">
<el-form-item label="年龄:" prop="name"> 36 </el-form-item> {{ formData.gender_text }}
</el-col> </el-form-item>
<el-col :span="4"> </el-col>
<el-form-item label="注册时间:" prop="name"> 2023.09.11</el-form-item> <el-col :span="4">
</el-col> <el-form-item label="年龄:" prop="name">
<el-col :span="4"> {{ formData.age }}
<el-form-item label="身份证号:" prop="name"> </el-form-item>
513701200012105612 </el-col>
</el-form-item> <el-col :span="4">
</el-col> <el-form-item label="注册时间:" prop="name">
</el-row> {{ formData.create_time }}</el-form-item>
<el-row> </el-col>
<el-col :span="8"> <el-col :span="4">
<el-form-item label="所属片区:" prop="name"> <el-form-item label="身份证号:" prop="name">
四川省泸州市江阳区xx粉红色的积分开朗大方</el-form-item {{ formData.id_card }}
> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> </el-row>
<el-form-item label="最近登录ip:" prop="name"> <el-row>
2+1.10.124</el-form-item <el-col :span="8">
> <el-form-item label="所属片区:" prop="name">
</el-col> {{ formData.address }}</el-form-item>
<el-col :span="8"> </el-col>
<el-form-item label="账户状态:" prop="name"> <el-col :span="8">
<el-select <el-form-item label="最近登录ip:" prop="name">
v-model="queryParams.status" {{ formData.last_login_ip }}</el-form-item>
placeholder="是否显示" </el-col>
clearable <el-col :span="8">
class="w-[240px]" <el-form-item label="账户状态:" prop="name">
> <el-select :disabled="true" v-model="formData.status" clearable class="w-[240px]">
<el-option label="正常" value="1"></el-option> <el-option label="正常" :value="0"></el-option>
<el-option label="异常" value="0"></el-option> </el-select <el-option label="异常" :value="1"></el-option> </el-select></el-form-item>
></el-form-item> </el-col>
</el-col> </el-row>
</el-row> </el-form>
</el-form> </el-card>
</el-card>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form-item label="账户余额:" prop="name"> <el-form-item label="账户余额:" prop="name">
9999999999 &nbsp;&nbsp; {{ formData.total_balance }} &nbsp;&nbsp;
<router-link :to="{ path: 'balanceList' }"> <router-link :to="{
<el-button type="primary"> 查看全部 </el-button> path: 'balanceList', query: {
</router-link></el-form-item uid: route.query.id
> }
<el-table :data="pager.lists"> }">
<el-table-column label="时间" prop="id" /> <el-button type="primary"> 查看全部 </el-button>
<el-table-column label="资金变动" prop="name" show-overflow-tooltip /> </router-link></el-form-item>
<el-table-column label="项目" prop="remark" show-overflow-tooltip> <el-table :data="formData.balance_list">
</el-table-column> <el-table-column label="时间" prop="create_time" />
<el-table-column <el-table-column label="资金变动" prop="amount" show-overflow-tooltip>
label="交易渠道/场所"
prop="remark" <template #default="{ row }">
show-overflow-tooltip <text style="color: yellowgreen;" v-if="row.type == 1">+ {{ row.amount }}</text>
> <text style="color: red;" v-else>- {{ row.amount }}</text>
</el-table-column> </template>
<el-table-column label="交易ID" prop="remark" show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column label="支付方式" prop="remark" show-overflow-tooltip> <el-table-column label="项目" prop="mark" show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column label="交易类型" prop="remark" show-overflow-tooltip> <el-table-column label="交易渠道/场所" prop="app" show-overflow-tooltip>
</el-table-column> </el-table-column>
<el-table-column label="账户余额" prop="remark" show-overflow-tooltip> <el-table-column label="交易ID" prop="record_id" show-overflow-tooltip>
</el-table-column> </el-table-column>
<!-- <el-table-column label="状态" prop="status" show-overflow-tooltip> <el-table-column label="支付方式" prop="pay_type_text" show-overflow-tooltip>
<template #default="{ row }"> </el-table-column>
<span v-if="row.status == 1">启用</span> <el-table-column label="交易类型" show-overflow-tooltip>
<span v-if="row.status == 0">禁用</span> <template #default="{ row }">
</template> 积分奖励
</el-table-column> --> </template>
</el-table> </el-table-column>
<div class="flex mt-4 justify-end"> <el-table-column label="账户余额" prop="total_amount" show-overflow-tooltip>
<pagination v-model="pager" @change="getLists" /> <template #default="{ row }">
<text style="color: green;">+ {{ row.total_amount }}</text>
</template>
</el-table-column>
</el-table>
</el-card>
<div class="bottomTables">
<el-card style="flex: 2; margin-right: 2vw" class="!border-none mb-4" shadow="never">
<el-form-item label="积分累计:" prop="name">
{{ formData.total_integral }} &nbsp;&nbsp;
<router-link :to="{
path: 'integral', query: {
uid: route.query.id
}
}">
<el-button type="primary"> 查看全部 </el-button>
</router-link>
</el-form-item>
<el-table :data="formData.integral_list">
<el-table-column label="时间" prop="create_time" />
<el-table-column label="积分变动" prop="amount" show-overflow-tooltip>
<template #default="{ row }">
<text style="color: yellowgreen;" v-if="row.type == 1">+ {{ row.amount }}</text>
<text style="color: red;" v-else>- {{ row.amount }}</text>
</template>
</el-table-column>
<el-table-column label="项目" prop="mark" show-overflow-tooltip>
</el-table-column>
<el-table-column label="积分变更场所" prop="app" show-overflow-tooltip>
</el-table-column>
<el-table-column label="分类" prop="type_text" show-overflow-tooltip>
</el-table-column>
<el-table-column label="积分累计" prop="total_amount" show-overflow-tooltip>
<template #default="{ row }">
<text style="color: green;">+ {{ row.total_amount }}</text>
</template>
</el-table-column>
</el-table>
</el-card>
<el-card style="flex: 1" class="!border-none mb-4" shadow="never">
<el-form-item label="各应用使用情况:" prop="name"> </el-form-item>
<el-table :data="pager.lists">
<el-table-column label="时间" prop="id" />
<el-table-column label="使用应用" prop="name" show-overflow-tooltip />
<el-table-column label="使用时长" prop="remark" show-overflow-tooltip>
</el-table-column>
</el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
</div> </div>
</el-card>
<div class="bottomTables">
<el-card
style="flex: 2; margin-right: 2vw"
class="!border-none mb-4"
shadow="never"
>
<el-form-item label="积分累计:" prop="name">
9999999999 &nbsp;&nbsp;
<router-link :to="{ path: 'integral' }">
<el-button type="primary"> 查看全部 </el-button>
</router-link>
</el-form-item>
<el-table :data="pager.lists">
<el-table-column label="时间" prop="id" />
<el-table-column label="积分变动" prop="name" show-overflow-tooltip />
<el-table-column label="项目" prop="remark" show-overflow-tooltip>
</el-table-column>
<el-table-column
label="积分变更场所"
prop="remark"
show-overflow-tooltip
>
</el-table-column>
<el-table-column label="分类" prop="remark" show-overflow-tooltip>
</el-table-column>
<el-table-column label="积分累计" prop="remark" show-overflow-tooltip>
</el-table-column>
</el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
<el-card style="flex: 1" class="!border-none mb-4" shadow="never">
<el-form-item label="各应用使用情况:" prop="name"> </el-form-item>
<el-table :data="pager.lists">
<el-table-column label="时间" prop="id" />
<el-table-column label="使用应用" prop="name" show-overflow-tooltip />
<el-table-column label="使用时长" prop="remark" show-overflow-tooltip>
</el-table-column>
</el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
</div>
</template> </template>
<script lang="ts" setup name="flowLists"> <script lang="ts" setup name="flowLists">
import { usePaging } from "@/hooks/usePaging"; import { usePaging } from "@/hooks/usePaging";
import { accountLog } from "@/api/users"; import { accountLog, usersDetailApi } from "@/api/users";
const route = useRoute();
const setFormData = (data: Record<any, any>) => {
for (const key in formData) {
if (data[key] != null && data[key] != undefined) {
//@ts-ignore
formData[key] = data[key];
}
}
};
const formData = reactive({
id: null,
phone: null,
avatar: null,
nick_name: null,
real_name: null,
id_card: null,
gender: null,
age: null,
total_balance: null,
total_integral: null,
address: null,
status: null,
last_login_time: null,
last_login_ip: null,
create_time: null,
gender_text: null,
status_text: null,
balance_list: [
{
id: null,
record_id: null,
amount: null,
total_amount: null,
type: null,
pay_type: null,
mark: null,
create_time: null,
app: null,
type_text: null,
pay_type_text: null,
},
],
integral_list: [
{
id: null,
record_id: 1,
amount: "44.00",
total_amount: "66.00",
type: 1,
mark: "签到奖励",
appid: "AD1695113831",
create_time: "2023-09-19 17:52:44",
app: "里海超市",
type_text: "收入",
},
],
});
const queryParams = reactive({ const queryParams = reactive({
name: "", name: "",
status: "1", status: "1",
}); });
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: accountLog, fetchFun: accountLog,
params: queryParams, params: queryParams,
});
usersDetailApi({ id: route.query.id }).then((res) => {
setFormData(res);
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.bottomTables { .bottomTables {
display: flex; display: flex;
} }
</style> </style>

View File

@ -1,110 +1,79 @@
<template> <template>
<el-card class="!border-none mb-4" shadow="never"> <el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline> <el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="公司名称" prop="company_id"> <el-form-item label="积分变更场所" prop="company_id">
<el-input <el-input class="w-[280px]" v-model="queryParams.app" clearable placeholder="请输入公司" />
class="w-[280px]" </el-form-item>
v-model="queryParams.company_id"
clearable
placeholder="请输入公司"
/>
</el-form-item>
<el-form-item label="合同类型" prop="contract_type">
<el-select
v-model="queryParams.contract_type"
clearable
placeholder="请输入合同类型"
>
<el-option
v-for="item in statusdata"
:key="item.label"
:value="item.id"
:label="item.name"
/>
</el-select>
</el-form-item>
<el-form-item label="合同编号" prop="contract_no"> <el-form-item label="项目" prop="contract_no">
<el-input <el-input class="w-[280px]" v-model="queryParams.mark" clearable placeholder="请输入合同编号" />
class="w-[280px]" </el-form-item>
v-model="queryParams.contract_no"
clearable
placeholder="请输入合同编号"
/>
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select
v-model="queryParams.status"
clearable
placeholder="请选择状态"
>
<el-option
v-for="item in statusdata"
:key="item.label"
:value="item.id"
:label="item.name"
/>
</el-select>
</el-form-item>
<el-form-item label="甲方片区经理" prop="area_manager"> <el-form-item label="分类" prop="area_manager">
<el-input <el-input class="w-[280px]" v-model="queryParams.remark" clearable placeholder="请输入甲方片区经理" />
class="w-[280px]" </el-form-item>
v-model="queryParams.area_manager"
clearable <el-form-item>
placeholder="请输入甲方片区经理" <el-button type="primary" @click="resetPage">查询</el-button>
/> <el-button @click="resetParams">重置</el-button>
</el-form-item> </el-form-item>
<el-form-item> </el-form>
<el-button type="primary" @click="resetPage">查询</el-button> </el-card>
<el-button @click="resetParams">重置</el-button> <el-card class="!border-none mb-4" shadow="never">
</el-form-item> <el-table :data="pager.lists">
</el-form> <el-table-column label="时间" prop="create_time" />
</el-card> <el-table-column label="积分变动" prop="amount" show-overflow-tooltip>
<el-card class="!border-none mb-4" shadow="never"> <template #default="{ row }">
<el-table :data="pager.lists"> <text style="color: yellowgreen;" v-if="row.type == 1">+ {{ row.amount }}</text>
<el-table-column label="时间" prop="id" /> <text style="color: red;" v-else>- {{ row.amount }}</text>
<el-table-column label="积分变动" prop="name" show-overflow-tooltip /> </template>
<el-table-column label="项目" prop="remark" show-overflow-tooltip> </el-table-column>
</el-table-column> <el-table-column label="项目" prop="mark" show-overflow-tooltip>
<el-table-column label="积分变更场所" prop="remark" show-overflow-tooltip> </el-table-column>
</el-table-column> <el-table-column label="积分变更场所" prop="app" show-overflow-tooltip>
<el-table-column label="分类" prop="remark" show-overflow-tooltip> </el-table-column>
</el-table-column> <el-table-column label="分类" prop="type_text" show-overflow-tooltip>
<el-table-column label="积分累计" prop="remark" show-overflow-tooltip> </el-table-column>
</el-table-column> <el-table-column label="积分累计" prop="total_amount" show-overflow-tooltip>
</el-table> <template #default="{ row }">
<div class="flex mt-4 justify-end"> <text style="color: green;">+ {{ row.total_amount }}</text>
<pagination v-model="pager" @change="getLists" /> </template>
</div> </el-table-column>
</el-card> </el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { usePaging } from "@/hooks/usePaging"; import { usePaging } from "@/hooks/usePaging";
import { accountLog } from "@/api/users"; import { usersintegralListApi } from "@/api/users";
const route = useRoute();
// //
const queryParams = reactive({ const queryParams = reactive({
name: "", app: "",
status: "name1", mark: "",
company_id: "", remark: "",
contract_type: "", uid: route.query.uid
contract_no: "",
party_a: "",
party_b: "",
area_manager: "",
type: "",
});
});
const formData = reactive({
})
const { pager, getLists, resetParams, resetPage } = usePaging({ const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: accountLog, fetchFun: usersintegralListApi,
params: queryParams, params: queryParams,
}); });
const statusdata = reactive([ const statusdata = reactive([
{ label: "lable", id: 0, name: "name1" }, { label: "lable", id: 0, name: "name1" },
{ label: "lable2", id: 0, name: "name2" }, { label: "lable2", id: 0, name: "name2" },
]); ]);
getLists()
</script> </script>
<style lang="scss" scoped></style> <style lang="scss" scoped></style>

View File

@ -0,0 +1,83 @@
<template>
<el-card class="!border-none mb-4" shadow="never">
<el-form class="mb-[-16px]" :model="queryParams" inline>
<el-form-item label="姓名" prop="nick_name">
<el-input class="w-[280px]" v-model="queryParams.nick_name" clearable placeholder="请输入姓名" />
</el-form-item>
<el-form-item label="手机号" prop="phone">
<el-input class="w-[280px]" v-model="queryParams.phone" clearable placeholder="请输入手机号" />
</el-form-item>
<el-form-item label="所属片区" prop="address">
<el-input class="w-[280px]" v-model="queryParams.address" clearable placeholder="请选择" />
</el-form-item>
<el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" clearable placeholder="请选择状态">
<el-option label="正常" :value="0"></el-option>
<el-option label="禁用" :value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="resetPage">查询</el-button>
<el-button @click="resetParams">重置</el-button>
</el-form-item>
</el-form>
</el-card>
<el-card class="!border-none mb-4" shadow="never">
<el-table :data="pager.lists">
<el-table-column label="姓名" prop="nick_name" />
<el-table-column label="注册手机号" prop="phone" show-overflow-tooltip />
<el-table-column label="性别" prop="gender_text" show-overflow-tooltip>
</el-table-column>
<el-table-column label="年龄" prop="age" show-overflow-tooltip>
</el-table-column>
<el-table-column label="所属片区" prop="address" show-overflow-tooltip>
</el-table-column>
<el-table-column label="账户状态" prop="status_text" show-overflow-tooltip>
</el-table-column>
<el-table-column label="操作" show-overflow-tooltip>
<template #default="{ row }">
<el-button type="primary" link>
<router-link :to="{
path: 'detail',
query: {
id: row.id,
},
}">
详情
</router-link></el-button>
</template>
</el-table-column>
</el-table>
<div class="flex mt-4 justify-end">
<pagination v-model="pager" @change="getLists" />
</div>
</el-card>
</template>
<script setup lang="ts">
import { usePaging } from "@/hooks/usePaging";
import { usersListApi } from "@/api/users";
//
const queryParams = reactive({
nick_name: "",
phone: '',
status: "",
address: "",
});
const { pager, getLists, resetParams, resetPage } = usePaging({
fetchFun: usersListApi,
params: queryParams,
});
const statusdata = reactive([
{ label: "lable", id: 0, name: "正常" },
{ label: "lable2", id: 0, name: "异常" },
]);
getLists();
</script>
<style lang="scss" scoped></style>