|
|
@ -26,13 +26,12 @@ |
|
|
<!-- 计划类别 --> |
|
|
<!-- 计划类别 --> |
|
|
<van-field name="planType" label="计划类别" :required="!isReadonly"> |
|
|
<van-field name="planType" label="计划类别" :required="!isReadonly"> |
|
|
<template #input> |
|
|
<template #input> |
|
|
<van-radio-group v-model="form.planType" direction="horizontal" :disabled="isReadonly"> |
|
|
<van-radio-group v-model="form.planType" direction="horizontal" :class="{ 'readonly-radio': isReadonly }"> |
|
|
<van-radio :name="1">日常计划</van-radio> |
|
|
<van-radio :name="1">日常计划</van-radio> |
|
|
<van-radio :name="2">专项计划</van-radio> |
|
|
<van-radio :name="2">专项计划</van-radio> |
|
|
</van-radio-group> |
|
|
</van-radio-group> |
|
|
</template> |
|
|
</template> |
|
|
</van-field> |
|
|
</van-field> |
|
|
|
|
|
|
|
|
<!-- 计划时间 --> |
|
|
<!-- 计划时间 --> |
|
|
<van-field |
|
|
<van-field |
|
|
v-model="planDateDisplay" |
|
|
v-model="planDateDisplay" |
|
|
@ -48,7 +47,7 @@ |
|
|
<!-- 执行时段 --> |
|
|
<!-- 执行时段 --> |
|
|
<van-field name="planTime" label="执行时段" :required="!isReadonly" :disabled="isPrefillMode || isReadonly"> |
|
|
<van-field name="planTime" label="执行时段" :required="!isReadonly" :disabled="isPrefillMode || isReadonly"> |
|
|
<template #input> |
|
|
<template #input> |
|
|
<van-radio-group v-model="form.planTime" direction="horizontal" :disabled="isPrefillMode || isReadonly"> |
|
|
<van-radio-group v-model="form.planTime" direction="horizontal" :class="{ 'readonly-radio': isPrefillMode || isReadonly }"> |
|
|
<van-radio :name="1">上午(9:00-12:00)</van-radio> |
|
|
<van-radio :name="1">上午(9:00-12:00)</van-radio> |
|
|
<van-radio :name="2">下午(14:00-18:00)</van-radio> |
|
|
<van-radio :name="2">下午(14:00-18:00)</van-radio> |
|
|
<van-radio :name="3">其他(18:00-21:00)</van-radio> |
|
|
<van-radio :name="3">其他(18:00-21:00)</van-radio> |
|
|
@ -119,7 +118,7 @@ |
|
|
<!-- 是否公开 --> |
|
|
<!-- 是否公开 --> |
|
|
<van-field name="isPublic" label="是否公开" :required="!isReadonly" :disabled="isPrefillMode || isReadonly"> |
|
|
<van-field name="isPublic" label="是否公开" :required="!isReadonly" :disabled="isPrefillMode || isReadonly"> |
|
|
<template #input> |
|
|
<template #input> |
|
|
<van-radio-group v-model="form.isPublic" direction="horizontal" :disabled="isPrefillMode || isReadonly"> |
|
|
<van-radio-group v-model="form.isPublic" direction="horizontal" :class="{ 'readonly-radio': isPrefillMode || isReadonly }"> |
|
|
<van-radio :name="1">是</van-radio> |
|
|
<van-radio :name="1">是</van-radio> |
|
|
<van-radio :name="0">否</van-radio> |
|
|
<van-radio :name="0">否</van-radio> |
|
|
</van-radio-group> |
|
|
</van-radio-group> |
|
|
@ -129,7 +128,7 @@ |
|
|
<!-- 参与联合 --> |
|
|
<!-- 参与联合 --> |
|
|
<van-field name="isUnion" label="参与联合" :required="!isReadonly" :disabled="isPrefillMode || isReadonly"> |
|
|
<van-field name="isUnion" label="参与联合" :required="!isReadonly" :disabled="isPrefillMode || isReadonly"> |
|
|
<template #input> |
|
|
<template #input> |
|
|
<van-radio-group v-model="form.isUnion" direction="horizontal" :disabled="isPrefillMode || isReadonly"> |
|
|
<van-radio-group v-model="form.isUnion" direction="horizontal" :class="{ 'readonly-radio': isPrefillMode || isReadonly }"> |
|
|
<van-radio :name="1">是</van-radio> |
|
|
<van-radio :name="1">是</van-radio> |
|
|
<van-radio :name="0">否</van-radio> |
|
|
<van-radio :name="0">否</van-radio> |
|
|
</van-radio-group> |
|
|
</van-radio-group> |
|
|
@ -509,7 +508,13 @@ const loadDetail = (id) => { |
|
|
const data = res.data; |
|
|
const data = res.data; |
|
|
Object.keys(form.value).forEach(key => { |
|
|
Object.keys(form.value).forEach(key => { |
|
|
if (data[key] !== undefined && data[key] !== null) { |
|
|
if (data[key] !== undefined && data[key] !== null) { |
|
|
form.value[key] = data[key]; |
|
|
// 转换数值型字段,确保 radio v-model 与 :name 类型匹配 |
|
|
|
|
|
const numericFields = ['planType', 'planTime', 'planActualTime', 'isPublic', 'isUnion']; |
|
|
|
|
|
if (numericFields.includes(key)) { |
|
|
|
|
|
form.value[key] = Number(data[key]); |
|
|
|
|
|
} else { |
|
|
|
|
|
form.value[key] = data[key]; |
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
// 解析人员 |
|
|
// 解析人员 |
|
|
@ -523,6 +528,7 @@ const loadDetail = (id) => { |
|
|
phone: i < tels.length ? tels[i] : '', |
|
|
phone: i < tels.length ? tels[i] : '', |
|
|
code: '', |
|
|
code: '', |
|
|
})); |
|
|
})); |
|
|
|
|
|
syncPersonData(); |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
}); |
|
|
}); |
|
|
@ -1077,27 +1083,20 @@ const doSubmit = () => { |
|
|
color: #c8c9cc; |
|
|
color: #c8c9cc; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
:deep(.van-radio) { |
|
|
|
|
|
&--disabled { |
|
|
|
|
|
opacity: 0.5; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.van-radio__label { |
|
|
|
|
|
color: #969799; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
:deep(.van-radio__icon) { |
|
|
|
|
|
&--disabled { |
|
|
|
|
|
background: #ebedf0; |
|
|
|
|
|
border-color: #dcdee0; |
|
|
|
|
|
} |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.person-line .person-name, |
|
|
.person-line .person-name, |
|
|
.person-line .person-phone { |
|
|
.person-line .person-phone { |
|
|
color: #969799; |
|
|
color: #969799; |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/* 只读/预填模式 radio 禁用样式 - 不使用 Vant :disabled,用 CSS 防止点击 */ |
|
|
|
|
|
.readonly-radio { |
|
|
|
|
|
pointer-events: none; |
|
|
|
|
|
opacity: 0.6; |
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.readonly-radio .van-radio__label { |
|
|
|
|
|
color: #969799 !important; |
|
|
|
|
|
} |
|
|
</style> |
|
|
</style> |
|
|
|