项目类型调整,时间查询调整

This commit is contained in:
马梓彭 2026-04-12 16:09:26 +08:00
parent 91c5ac8cbd
commit 4ceee6584d
8 changed files with 82 additions and 32 deletions

View File

@ -8,7 +8,7 @@ import { http } from '../../utils/request';
* @param {Object} params - 查询参数
* @param {number} [params.EventId] - 赛事ID
* @param {string} [params.ProjectName] - 项目名称 (模糊查询)
* @param {number} [params.ProjectTypeId] - 项目类型ID
* @param {number} [params.ProjectType] - 项目类型
* @param {number} [params.PageNo] - 当前页码
* @param {number} [params.PageSize] - 页码容量
*/
@ -21,7 +21,7 @@ export const projectPageGet = (params) => {
* @param {Object} data - 项目信息
* @param {number} data.eventId - 赛事ID
* @param {string} data.name - 项目名称
* @param {number} data.projectTypeId - 项目类型ID
* @param {number} data.projectType - 项目类型
* @param {number} data.completionCount - 完成人数
* @param {number} data.fee - 费用
* @param {number} data.durationMinutes - 时长(分钟)
@ -44,7 +44,7 @@ export const projectAddPost = (data) => {
* @param {number} data.id - 项目ID
* @param {number} data.eventId - 赛事ID
* @param {string} data.name - 项目名称
* @param {number} data.projectTypeId - 项目类型ID
* @param {number} data.projectType - 项目类型
* @param {number} data.completionCount - 完成次数/达标次数
* @param {number} data.fee - 费用
* @param {number} data.durationMinutes - 时长(分钟)

View File

@ -93,7 +93,13 @@ export const useTable = (
for (let key in state.searchParam) {
// * 某些情况下参数为 false/0 也应该携带参数
if (state.searchParam[key] || state.searchParam[key] === false || state.searchParam[key] === 0) {
nowSearchParam[key] = state.searchParam[key];
// 处理日期范围参数:如果是数组,拆分为 StartTime 和 EndTime
if (Array.isArray(state.searchParam[key]) && state.searchParam[key].length === 2) {
nowSearchParam['StartTime'] = state.searchParam[key][0];
nowSearchParam['EndTime'] = state.searchParam[key][1];
} else {
nowSearchParam[key] = state.searchParam[key];
}
}
}
Object.assign(state.totalParam, nowSearchParam, isPageable ? pageParam.value : {});

View File

@ -79,10 +79,11 @@ service.interceptors.response.use(
ElMessage.error('无权访问');
return response;
}
// 处理规范化结果错误
// 处理规范化结果错误
if (res.statusCode !== 200) {
var message = JSON.stringify(res.errors);
ElMessage.error(message);
return Promise.reject(new Error(res.errors || 'Request failed'));
}
return response;
},

View File

@ -128,7 +128,7 @@
<!-- <template #index="scope">
{{ scope.$index + 1 }}
</template> -->
<template #projectTypeId="scope">
<template #projectType="scope">
{{ scope.row.projectTypeName }}
</template>
<template #completionCount="scope">
@ -220,17 +220,17 @@ const columns = ref([
},
},
{
prop: 'projectTypeId',
prop: 'projectType',
label: '项目类型',
search: {
el: 'select',
},
enum: [
{ label: '全部', value: 0 },
{ label: '团队速度', value: 1001 },
{ label: '团队花样', value: 1002 },
{ label: '全部', value: '' },
{ label: '个人速度', value: 1003 },
{ label: '个人花样', value: 1004 },
{ label: '团队速度', value: 1005 },
{ label: '团队花样', value: 1006 },
],
},
{

View File

@ -9,7 +9,7 @@
{{ scope.$index + 1 }}
</template>
<template #projectTypeId="scope">
<template #projectType="scope">
{{ scope.row.projectTypeName }}
</template>
@ -45,8 +45,8 @@
</el-form-item>
<!-- 项目类型 -->
<el-form-item label="项目类型:" prop="projectTypeId">
<el-select v-model="formData.projectTypeId" placeholder="请选择项目类型" style="width: 100%">
<el-form-item label="项目类型:" prop="projectType">
<el-select v-model="formData.projectType" placeholder="请选择项目类型" style="width: 100%">
<el-option label="个人速度" :value="1003"></el-option>
<el-option label="个人花样" :value="1004"></el-option>
<el-option label="团队速度" :value="1005"></el-option>
@ -138,7 +138,7 @@
<!-- 项目类型 -->
<el-form-item label="项目类型:">
<el-select v-model="detailData.projectTypeId" disabled style="width: 100%">
<el-select v-model="detailData.projectType" disabled style="width: 100%">
<el-option label="个人速度" :value="1003"></el-option>
<el-option label="个人花样" :value="1004"></el-option>
<el-option label="团队速度" :value="1005"></el-option>
@ -242,7 +242,7 @@ const removeGroup = (index) => {
const formData = ref({
name: '',
projectTypeId: '',
projectType: '',
completionCount: '',
fee: '',
durationMinutes: '',
@ -294,7 +294,7 @@ const validateGroups = (rule, value, callback) => {
const formRules = ref({
name: [{ required: true, message: '请输入项目名称', trigger: 'blur' }],
projectTypeId: [{ required: true, message: '请选择项目类型', trigger: 'change' }],
projectType: [{ required: true, message: '请选择项目类型', trigger: 'change' }],
completionCount: [{ required: true, message: '请输入完成人数', trigger: 'blur' }],
fee: [{ required: true, message: '请输入费用', trigger: 'blur' }],
duration: [
@ -325,11 +325,11 @@ const columns = ref([
},
},
{
prop: 'projectTypeId',
prop: 'projectType',
label: '项目类型',
search: {
el: 'select',
key: 'ProjectTypeId',
key: 'ProjectType',
},
enum: [
{ label: '全部', value: '' },
@ -357,7 +357,7 @@ const onOpenMenu = async (row) => {
dialogTitle.value = row ? '编辑' : '新增';
formData.value = {
name: '',
projectTypeId: '',
projectType: '',
completionCount: '',
fee: '',
durationMinutes: '',

View File

@ -14,8 +14,8 @@
{{ scope.$index + 1 }}
</template>
<template #auditStatus="scope">
<el-tag :type="statusList[scope.row.auditStatus]">
{{ scope.row.auditRemark }}
<el-tag :type="getAuditStatusType(scope.row.auditStatus)">
{{ getAuditStatusText(scope.row.auditStatus) }}
</el-tag>
</template>
<template #ss="scope">
@ -96,6 +96,40 @@ const initParamUser = ref({
});
const statusList = ['info', 'warning', 'success', 'danger'];
const getAuditStatusText = (status) => {
switch (status) {
case 0:
return '待提交';
case 1:
return '待审核';
case 2:
return '审核通过';
case 3:
return '审核拒绝';
case 4:
return '已取消';
default:
return status;
}
};
const getAuditStatusType = (status) => {
switch (status) {
case 0:
return 'info';
case 1:
return 'warning';
case 2:
return 'success';
case 3:
return 'danger';
case 4:
return 'info';
default:
return 'info';
}
};
const columns = ref([
{ prop: 'ss', type: 'selection' },
{ prop: 'index', label: '序号', align: 'center' },
@ -130,7 +164,7 @@ const columns = ref([
},
{
prop: 'createdTime',
label: '创建时间',
label: '生成时间',
search: {
el: 'date-picker',
props: { type: 'daterange' },

View File

@ -147,7 +147,6 @@ const columns = ref([
{ prop: 'ss', type: 'selection' },
{ prop: 'index', label: '序号', align: 'center' },
{ prop: 'merchantName', label: '单位名称', search: { el: 'input' } },
{ prop: 'creditCode', label: '统一社会信用代码', search: { el: 'input' } },
{ prop: 'address', label: '地址' },
{ prop: 'contactPhone', label: '联系电话', search: { el: 'input' } },
@ -169,7 +168,7 @@ const columns = ref([
},
{
prop: 'createdTime',
label: '创建时间',
label: '生成时间',
search: {
el: 'date-picker',
props: { type: 'daterange' },

View File

@ -208,10 +208,10 @@ const onDeleteMenu = async (id) => {
};
// 表单提交
const onSubmit = () => {
const onSubmit = () =&gt; {
if (!formRef.value) return;
formRef.value.validate(async (valid) => {
formRef.value.validate(async (valid) =&gt; {
if (!valid) return;
try {
@ -229,10 +229,11 @@ const onSubmit = () => {
ElMessage.success(dialogTitle.value + '成功');
isShowDialog.value = false;
} else {
ElMessage.error(res.errors);
ElMessage.error(res.errors || dialogTitle.value + '失败');
}
} catch (error) {
console.error(error);
console.error('提交失败:', error);
// 错误已经在拦截器中显示,这里不需要再显示
}
});
};
@ -243,10 +244,19 @@ const onCancel = () => {
};
onMounted(async () => {
const { data } = await sysroleSelectGet();
console.log('获取的角色数据:', data);
columns.value[4].search.enum = data;
eventList.value = data;
try {
const result = await sysroleSelectGet();
console.log('获取的角色数据:', result);
if (result.succeeded && result.data) {
columns.value[4].search.enum = result.data;
eventList.value = result.data;
} else {
ElMessage.error(result.errors || '获取角色数据失败');
}
} catch (error) {
console.error('获取角色数据时发生错误:', error);
ElMessage.error('获取角色数据时发生错误,请稍后重试');
}
});
</script>