主管员工绩效排行时间选择器查询+排序查询+手机号+昵称查询bug修复
This commit is contained in:
@ -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'
|
||||
|
||||
});
|
||||
|
||||
|
@ -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();
|
||||
|
@ -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 = "";
|
||||
|
@ -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();
|
||||
});
|
||||
|
@ -120,6 +120,13 @@ const columns = [
|
||||
width: 90,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '抽佣比例',
|
||||
dataIndex: 'rakeRewardsRate',
|
||||
key: 'rakeRewardsRate',
|
||||
width: 90,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
key: 'action',
|
||||
|
@ -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;">
|
||||
|
@ -103,6 +103,13 @@ const columns = [
|
||||
width: 90,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '抽佣比例',
|
||||
dataIndex: 'rakeRewardsRate',
|
||||
key: 'rakeRewardsRate',
|
||||
width: 90,
|
||||
align: 'center'
|
||||
},
|
||||
{
|
||||
title: '操作',
|
||||
key: 'action',
|
||||
|
@ -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;">
|
||||
|
Reference in New Issue
Block a user