+
已选择的奖励类型:
-
{{ type.typeCode }} - {{ type.typeName }}
+
{{ selectedRewardType.typeCode }} - {{ selectedRewardType.typeName }}
@@ -158,11 +153,11 @@ const initFormData: XskhAssessmentIndicatorForm = {
indicatorName: undefined,
description: undefined,
indicatorTypeId: undefined,
- maxScore: undefined,
+ maxScore: 100, // 默认值设为100
status: '0',
sortOrder: 0,
- disciplineTypeIds: [],
- rewardTypeIds: []
+ disciplineTypeId: undefined, // 改为单个值
+ rewardTypeId: undefined // 改为单个值
};
const data = reactive({
@@ -181,22 +176,38 @@ const rules = reactive({
{ min: 1, max: 100, message: '指标名称长度必须介于 1 和 100 之间', trigger: 'blur' }
],
indicatorTypeId: [{ required: true, message: '指标类型不能为空', trigger: 'change' }],
- maxScore: [{ required: true, message: '最高分值不能为空', trigger: 'blur' }],
+ // maxScore: [{ required: true, message: '最高分值不能为空', trigger: 'blur' }],
status: [{ required: true, message: '状态不能为空', trigger: 'change' }],
sortOrder: [{ required: true, message: '排序号不能为空', trigger: 'blur' }],
description: [{ max: 500, message: '指标说明长度不能超过 500 个字符', trigger: 'blur' }]
} as any);
-// 计算属性:已选择的违纪处分类型
-const selectedDisciplineTypes = computed(() => {
- return disciplineTypeOptions.value.filter((type) => form.value.disciplineTypeIds?.includes(type.id.toString()));
+// 计算属性:已选择的违纪处分类型(改为单个)
+const selectedDisciplineType = computed(() => {
+ return disciplineTypeOptions.value.find((type) => type.id.toString() === form.value.disciplineTypeId?.toString());
});
-// 计算属性:已选择的奖励类型
-const selectedRewardTypes = computed(() => {
- return rewardTypeOptions.value.filter((type) => form.value.rewardTypeIds?.includes(type.id.toString()));
+// 计算属性:已选择的奖励类型(改为单个)
+const selectedRewardType = computed(() => {
+ return rewardTypeOptions.value.find((type) => type.id.toString() === form.value.rewardTypeId?.toString());
});
+// 违纪处分类型选择变化时的处理(实现互斥逻辑)
+const onDisciplineTypeChange = (value: any) => {
+ if (value) {
+ // 如果选择了违纪处分类型,清空奖励类型
+ form.value.rewardTypeId = undefined;
+ }
+};
+
+// 奖励类型选择变化时的处理(实现互斥逻辑)
+const onRewardTypeChange = (value: any) => {
+ if (value) {
+ // 如果选择了奖励类型,清空违纪处分类型
+ form.value.disciplineTypeId = undefined;
+ }
+};
+
/** 获取指标类型选项 */
const getIndicatorTypeOptions = async () => {
try {
@@ -270,7 +281,41 @@ const openDialog = async (id?: string | number, title?: string) => {
if (id) {
try {
const res = await getAssessmentIndicator(id);
- Object.assign(form.value, res.data);
+ console.log('API响应数据:', res);
+ console.log('res.data:', res.data);
+
+ // 处理后端返回的数据,将数组格式转换为单个值格式
+ const responseData = res.data;
+ console.log('处理后的数据:', responseData);
+
+ // 创建表单数据对象,只包含表单需要的字段
+ const formData: any = {
+ id: responseData.id,
+ indicatorCode: responseData.indicatorCode,
+ indicatorName: responseData.indicatorName,
+ description: responseData.description,
+ indicatorTypeId: responseData.indicatorTypeId,
+ maxScore: responseData.maxScore,
+ status: responseData.status,
+ sortOrder: responseData.sortOrder
+ };
+
+ // 转换违纪处分类型ID(取第一个,因为前端现在只支持单选)
+ if (responseData.disciplineTypeIds && responseData.disciplineTypeIds.length > 0) {
+ formData.disciplineTypeId = responseData.disciplineTypeIds[0];
+ }
+
+ // 转换奖励类型ID(取第一个,因为前端现在只支持单选)
+ if (responseData.rewardTypeIds && responseData.rewardTypeIds.length > 0) {
+ formData.rewardTypeId = responseData.rewardTypeIds[0];
+ }
+
+ console.log('表单数据:', formData);
+ console.log('赋值前的form.value:', form.value);
+
+ Object.assign(form.value, formData);
+
+ console.log('赋值后的form.value:', form.value);
} catch (error) {
console.error('获取数据失败:', error);
}
@@ -282,11 +327,27 @@ const submitForm = async () => {
assessmentIndicatorFormRef.value?.validate(async (valid) => {
if (valid) {
try {
+ // 按照XskhAssessmentIndicatorForm接口定义,只提取需要的字段
+ const submitData: any = {
+ indicatorCode: form.value.indicatorCode,
+ indicatorName: form.value.indicatorName,
+ description: form.value.description,
+ indicatorTypeId: form.value.indicatorTypeId,
+ maxScore: Number(form.value.maxScore) || 100,
+ status: form.value.status,
+ sortOrder: form.value.sortOrder,
+ // 将单个ID转换为数组格式以兼容后端
+ disciplineTypeIds: form.value.disciplineTypeId ? [form.value.disciplineTypeId] : [],
+ rewardTypeIds: form.value.rewardTypeId ? [form.value.rewardTypeId] : []
+ };
+
+ // 如果是编辑,添加ID字段
if (form.value.id) {
- await updateAssessmentIndicator(form.value);
+ submitData.id = form.value.id;
+ await updateAssessmentIndicator(submitData);
proxy?.$modal.msgSuccess('修改成功');
} else {
- await addAssessmentIndicator(form.value);
+ await addAssessmentIndicator(submitData);
proxy?.$modal.msgSuccess('新增成功');
}
dialog.visible = false;
@@ -331,34 +392,4 @@ defineExpose({
color: #409eff;
font-size: 14px;
}
-
-/* 固定多选框高度,防止动态变化 */
-.fixed-height-select :deep(.el-select__tags) {
- max-height: 32px;
- overflow: hidden;
-}
-
-.fixed-height-select :deep(.el-select__tags-text) {
- max-width: 120px;
- overflow: hidden;
- text-overflow: ellipsis;
- white-space: nowrap;
-}
-
-.fixed-height-select :deep(.el-select__collapse-tags) {
- max-width: 100%;
-}
-
-/* 确保多选框输入框高度固定 */
-.fixed-height-select :deep(.el-input__wrapper) {
- min-height: 32px;
- max-height: 32px;
- overflow: hidden;
-}
-
-/* 多选框下拉选项的最大高度 */
-.fixed-height-select :deep(.el-select-dropdown__list) {
- max-height: 200px;
- overflow-y: auto;
-}
diff --git a/web/src/views/xskh/assessmentIndicator/index.vue b/web/src/views/xskh/assessmentIndicator/index.vue
index 080cad46..e060429e 100644
--- a/web/src/views/xskh/assessmentIndicator/index.vue
+++ b/web/src/views/xskh/assessmentIndicator/index.vue
@@ -62,7 +62,7 @@
-
+
{{ scope.row.maxScore ? parseFloat(scope.row.maxScore).toFixed(2) : '0.00' }}
diff --git a/web/src/views/xskh/assessmentPlan/AssessmentPlanForm.vue b/web/src/views/xskh/assessmentPlan/AssessmentPlanForm.vue
index a4ed1fe5..1cb77c0d 100644
--- a/web/src/views/xskh/assessmentPlan/AssessmentPlanForm.vue
+++ b/web/src/views/xskh/assessmentPlan/AssessmentPlanForm.vue
@@ -69,12 +69,12 @@
-
+
-
+
{
dialog.visible = true;
dialog.title = title || '新增';
- // 重置表单
- Object.assign(form.value, initFormData);
+ // 重置表单数据
+ form.value = { ...initFormData };
indicatorList.value = [];
// 获取选项数据
@@ -304,8 +304,13 @@ const submitForm = async () => {
}
try {
+ // 准备提交数据,排除自动填充字段
const submitData = {
- ...form.value,
+ id: form.value.id,
+ planCode: form.value.planCode,
+ planName: form.value.planName,
+ description: form.value.description,
+ status: form.value.status,
indicatorList: indicatorList.value
};
diff --git a/web/src/views/xskh/assessmentSchedule/index.vue b/web/src/views/xskh/assessmentSchedule/index.vue
index 2dc01874..248615f1 100644
--- a/web/src/views/xskh/assessmentSchedule/index.vue
+++ b/web/src/views/xskh/assessmentSchedule/index.vue
@@ -182,6 +182,8 @@ const data = reactive