主管员工绩效排行时间选择器查询+排序查询+手机号+昵称查询bug修复

This commit is contained in:
2025-07-20 16:24:07 +08:00
parent 6b0562b498
commit 18c86adc94
10 changed files with 93 additions and 98 deletions

View File

@ -6,15 +6,15 @@ import router from "../router";
const myAxios = axios.create({
withCredentials: true,
baseURL:'http://localhost:9091'
//baseURL:'http://localhost:9092'
// baseURL:'http://localhost:9091'
// baseURL:'http://localhost:9092'
// baseURL:'http://1.94.237.210:3457'
//baseURL:'http://1.94.237.210:8088'
//baseURL:'http://27.30.77.229:9091/'
//baseURL:'http://27.30.77.229:9092/'
//baseURL:'http://160.202.242.36:9091/'
// baseURL:'http://160.202.242.36:9091/'
// baseURL:'http://160.202.242.36:9092/'
// baseURL:'http://160.202.242.36:9092'
baseURL:'http://160.202.242.36:9092'
});

View File

@ -22,15 +22,15 @@
<a-menu-item key="/userList">普通用户列表</a-menu-item>
<a-menu-item key="/managerInformation">经理信息</a-menu-item>
</a-sub-menu>
<a-sub-menu>
<template #title>
<span>
<UserOutlined />
<span>项目管理</span>
</span>
</template>
<a-menu-item key="/project">接单管理</a-menu-item>
</a-sub-menu>
<!-- <a-sub-menu>-->
<!-- <template #title>-->
<!-- <span>-->
<!-- <UserOutlined />-->
<!-- <span>项目管理</span>-->
<!-- </span>-->
<!-- </template>-->
<!-- <a-menu-item key="/project">接单管理</a-menu-item>-->
<!-- </a-sub-menu>-->
<a-sub-menu>
<template #title>
@ -52,16 +52,16 @@
<a-menu-item key="/courseManagement">课程管理</a-menu-item>
<a-menu-item key="/courseOrder">课程订单</a-menu-item>
</a-sub-menu>
<a-sub-menu>
<template #title>
<span>
<FieldTimeOutlined />
<span>勤工俭学</span>
</span>
</template>
<a-menu-item key="/workList">工作列表</a-menu-item>
<a-menu-item key="/workDetail">工作详情</a-menu-item>
</a-sub-menu>
<!-- <a-sub-menu>-->
<!-- <template #title>-->
<!-- <span>-->
<!-- <FieldTimeOutlined />-->
<!-- <span>勤工俭学</span>-->
<!-- </span>-->
<!-- </template>-->
<!-- <a-menu-item key="/workList">工作列表</a-menu-item>-->
<!-- <a-menu-item key="/workDetail">工作详情</a-menu-item>-->
<!-- </a-sub-menu>-->
<a-sub-menu>
<template #title>
<span>
@ -84,7 +84,8 @@
<script setup lang="ts">
import {onMounted, ref} from "vue";
import {UserOutlined, FieldTimeOutlined,ReadOutlined,CommentOutlined,PieChartOutlined} from '@ant-design/icons-vue';
// UserOutlined,
import { FieldTimeOutlined,ReadOutlined,CommentOutlined,PieChartOutlined} from '@ant-design/icons-vue';
import {useRoute, useRouter} from "vue-router";
const route = useRoute();

View File

@ -77,17 +77,11 @@
<!-- 操作列 -->
<template v-if="column.key === 'action'">
<a-space :size="8">
<a-button
size="small"
danger
@click="deleteOrder(record.id)"
>
删除
</a-button>
<a-button
v-if="record.orderStatus === '交易成功'"
size="small"
primary
>
退款
</a-button>
@ -100,7 +94,7 @@
<script lang="ts" setup>
import { onMounted, ref } from "vue";
import myAxios from "../../api/myAxios.ts";
import { message, Modal } from "ant-design-vue";
import { message} from "ant-design-vue";
import {downLoadImage} from "../../api/ImageUrl.ts";
const loading = ref(false);
@ -178,7 +172,7 @@ const columns = [
title: '操作',
key: 'action',
fixed: 'right',
width: 130,
width: 80,
align: 'center'
}
];
@ -302,37 +296,6 @@ const getStatusColor = (status: string) => {
}
};
// 删除订单
const deleteOrder = (id: number) => {
Modal.confirm({
title: '确认删除',
content: '确定要删除该订单吗?删除后数据将无法恢复!',
okText: '确认',
cancelText: '取消',
onOk: async () => {
try {
const storedToken = localStorage.getItem('token');
const res: any = await myAxios.post(
"/courseOrder/delete",
{ id },
{ headers: { Authorization: storedToken } }
);
if (res.code === 1) {
message.success('删除成功');
await getOrderList();
} else {
message.error(res.message || '删除失败');
}
} catch (error) {
console.error('删除失败:', error);
message.error('删除操作失败');
}
}
});
};
// 重置搜索条件
const reset = () => {
searchOrderNumber.value = "";

View File

@ -49,15 +49,16 @@
<h3 class="section-title">附件信息</h3>
<a-descriptions bordered :column="1" class="custom-descriptions">
<a-descriptions-item label="简历">
<a :href="getResumeUrl(advancement.resume)" target="_blank" class="resume-link">
<span v-if="advancement.resume">
<file-pdf-outlined /> 查看简历
</span>
<span v-else>-</span>
</a>
<span v-if="advancement.resume"
@click="handleViewResume(advancement.resume)"
class="resume-link"
style="cursor: pointer; color: #1890ff;">
<file-pdf-outlined /> 查看简历
</span>
<span v-else>-</span>
</a-descriptions-item>
<a-descriptions-item label="查询凭证">
<div class="info-value">{{ advancement.credential || '-' }}</div>
<a-descriptions-item label="身份证号">
<div class="info-value">{{ advancement.idCard}}</div>
</a-descriptions-item>
</a-descriptions>
</div>
@ -172,6 +173,7 @@ interface AdvancementDetail {
reviewStatus: string;
rejectReason?: string;
createTime: string;
idCard: string;
}
interface Supervisor {
@ -221,11 +223,6 @@ const fetchAdvancementDetail = async () => {
}
};
// 获取简历URL
const getResumeUrl = (resumeCode: string) => {
return resumeCode ? `/resume/view?code=${resumeCode}` : '#';
};
// 根据状态获取标签颜色
const getStatusColor = (status: string) => {
switch (status) {
@ -242,6 +239,28 @@ const goBack = () => {
router.push('/employeeApplication');
};
// 查看简历
const handleViewResume = (fileName: string) => {
const storedToken = localStorage.getItem('token');
const baseURL = myAxios.defaults.baseURL || '';
// 直接构建下载URL
const downloadUrl = `${baseURL}/file/download/${encodeURIComponent(fileName)}`;
// 创建隐藏链接
const link = document.createElement('a');
link.href = downloadUrl;
link.setAttribute('download', fileName);
link.style.display = 'none';
// 添加认证头
link.setAttribute('Authorization', `Bearer ${storedToken}`);
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
};
onMounted(() => {
fetchAdvancementDetail();
});

View File

@ -120,6 +120,13 @@ const columns = [
width: 90,
align: 'center'
},
{
title: '抽佣比例',
dataIndex: 'rakeRewardsRate',
key: 'rakeRewardsRate',
width: 90,
align: 'center'
},
{
title: '操作',
key: 'action',

View File

@ -44,16 +44,16 @@ const sortOptions = [
// 排序方向选项
const orderOptions = [
{ label: '升序', value: 'asc' },
{ label: '降序', value: 'desc' }
{ label: '升序', value: 'ascend' },
{ label: '降序', value: 'descend' }
];
// 查询参数
const queryParams = reactive({
current: 1,
pageSize: 10,
sortField: "netAmount", // 默认排序字段为净成交金额
sortOrder: "asc", // 默认排序方向为升序
sortField: "netAmount",
sortOrder: "ascend",
nickName: "",
phoneNumber: "",
startDate: "",
@ -162,7 +162,6 @@ const handleSearch = async () => {
await fetchPerformanceRank();
};
// 处理日期范围变化
// 处理日期范围变化
const handleDateChange = (_: any, dateStrings: [string, string]) => {
queryParams.startDate = dateStrings[0] || '';
@ -223,8 +222,10 @@ const handleDateChange = (_: any, dateStrings: [string, string]) => {
/>
<DatePicker.RangePicker
showTime
format="YYYY-MM-DD HH:mm:ss"
@change="handleDateChange"
style="margin-right: 10px; width: 220px;"
style="margin-right: 10px; width: 350px;"
/>
<Button type="primary" @click="handleSearch" style="margin-right: 10px;">

View File

@ -103,6 +103,13 @@ const columns = [
width: 90,
align: 'center'
},
{
title: '抽佣比例',
dataIndex: 'rakeRewardsRate',
key: 'rakeRewardsRate',
width: 90,
align: 'center'
},
{
title: '操作',
key: 'action',

View File

@ -44,16 +44,16 @@ const sortOptions = [
// 排序方向选项
const orderOptions = [
{ label: '升序', value: 'asc' },
{ label: '降序', value: 'desc' }
{ label: '升序', value: 'ascend' },
{ label: '降序', value: 'descend' }
];
// 查询参数
const queryParams = reactive({
current: 1,
pageSize: 10,
sortField: "",
sortOrder: "",
sortField: "netAmount",
sortOrder: "ascend",
nickName: "",
phoneNumber: "",
startDate: "",
@ -138,7 +138,7 @@ const handlePageChange = (page: number, pageSize: number) => {
const handleTableChange = (_: any, __: any, sorter: any) => {
if (sorter.field) {
queryParams.sortField = sorter.field;
queryParams.sortOrder = sorter.order === 'ascend' ? 'asc' : 'desc';
queryParams.sortOrder = sorter.order === 'ascend' ? 'ascend' : 'descend';
} else {
queryParams.sortField = '';
queryParams.sortOrder = '';
@ -158,14 +158,9 @@ const resetSearch = () => {
};
// 处理日期范围变化
const handleDateChange = (dates: any, dateStrings: [string, string]) => {
if (dates) {
queryParams.startDate = dateStrings[0];
queryParams.endDate = dateStrings[1];
} else {
queryParams.startDate = '';
queryParams.endDate = '';
}
const handleDateChange = (_: any, dateStrings: [string, string]) => {
queryParams.startDate = dateStrings[0] || '';
queryParams.endDate = dateStrings[1] || '';
};
</script>
@ -218,8 +213,10 @@ const handleDateChange = (dates: any, dateStrings: [string, string]) => {
/>
<DatePicker.RangePicker
showTime
format="YYYY-MM-DD HH:mm:ss"
@change="handleDateChange"
style="margin-right: 10px;"
style="margin-right: 10px; width: 350px;"
/>
<Button type="primary" @click="fetchPerformanceRank" style="margin-right: 10px;">