|
@@ -40,6 +40,35 @@ function getDictOptions(field: ConstructionDailyReportField) {
|
|
|
return field.dictType ? getStrDictOptions(field.dictType) : []
|
|
return field.dictType ? getStrDictOptions(field.dictType) : []
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+function getRelatedTaskOptions() {
|
|
|
|
|
+ const relatedTasks = props.model.relatedTasks
|
|
|
|
|
+ if (!relatedTasks || Object.keys(relatedTasks).length === 0) {
|
|
|
|
|
+ const taskId = props.model.taskId
|
|
|
|
|
+ if (taskId === null || taskId === undefined || taskId === '') return []
|
|
|
|
|
+ return [
|
|
|
|
|
+ {
|
|
|
|
|
+ label: String(taskId),
|
|
|
|
|
+ value: taskId
|
|
|
|
|
+ }
|
|
|
|
|
+ ]
|
|
|
|
|
+ }
|
|
|
|
|
+ return Object.entries(relatedTasks).map(([key, value]) => ({
|
|
|
|
|
+ label: value,
|
|
|
|
|
+ value: Number.isNaN(Number(key)) ? key : Number(key)
|
|
|
|
|
+ }))
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function getSelectOptions(field: ConstructionDailyReportField) {
|
|
|
|
|
+ if (field.prop === 'taskId') {
|
|
|
|
|
+ return getRelatedTaskOptions()
|
|
|
|
|
+ }
|
|
|
|
|
+ return getDictOptions(field)
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+function isSelectClearable(field: ConstructionDailyReportField) {
|
|
|
|
|
+ return field.prop !== 'taskId'
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
function getNumberSuffix(field: ConstructionDailyReportField) {
|
|
function getNumberSuffix(field: ConstructionDailyReportField) {
|
|
|
return field.suffix || ''
|
|
return field.suffix || ''
|
|
|
}
|
|
}
|
|
@@ -68,8 +97,7 @@ function getFieldClass(field: ConstructionDailyReportField) {
|
|
|
:key="`${props.section.title}-${String(field.prop)}-${field.label}`"
|
|
:key="`${props.section.title}-${String(field.prop)}-${field.label}`"
|
|
|
:label="field.label"
|
|
:label="field.label"
|
|
|
:prop="field.prop"
|
|
:prop="field.prop"
|
|
|
- :class="getFieldClass(field)"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ :class="getFieldClass(field)">
|
|
|
<el-input
|
|
<el-input
|
|
|
v-if="field.type === 'textarea'"
|
|
v-if="field.type === 'textarea'"
|
|
|
size="default"
|
|
size="default"
|
|
@@ -78,19 +106,18 @@ function getFieldClass(field: ConstructionDailyReportField) {
|
|
|
:autosize="{ minRows: 3 }"
|
|
:autosize="{ minRows: 3 }"
|
|
|
resize="none"
|
|
resize="none"
|
|
|
:disabled="isFieldDisabled(field)"
|
|
:disabled="isFieldDisabled(field)"
|
|
|
- @update:model-value="updateField(field.prop, $event)"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ @update:model-value="updateField(field.prop, $event)" />
|
|
|
<el-select
|
|
<el-select
|
|
|
v-else-if="field.type === 'select'"
|
|
v-else-if="field.type === 'select'"
|
|
|
size="default"
|
|
size="default"
|
|
|
:model-value="props.model[field.prop]"
|
|
:model-value="props.model[field.prop]"
|
|
|
- :options="getDictOptions(field)"
|
|
|
|
|
|
|
+ :options="getSelectOptions(field)"
|
|
|
class="w-full"
|
|
class="w-full"
|
|
|
- clearable
|
|
|
|
|
|
|
+ :clearable="isSelectClearable(field)"
|
|
|
|
|
+ filterable
|
|
|
placeholder="请选择"
|
|
placeholder="请选择"
|
|
|
:disabled="isFieldDisabled(field)"
|
|
:disabled="isFieldDisabled(field)"
|
|
|
- @update:model-value="updateField(field.prop, $event)"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ @update:model-value="updateField(field.prop, $event)" />
|
|
|
<el-input-number
|
|
<el-input-number
|
|
|
v-else-if="field.type === 'number' || isNumberField(props.model[field.prop])"
|
|
v-else-if="field.type === 'number' || isNumberField(props.model[field.prop])"
|
|
|
:model-value="getNumberValue(field.prop)"
|
|
:model-value="getNumberValue(field.prop)"
|
|
@@ -100,8 +127,7 @@ function getFieldClass(field: ConstructionDailyReportField) {
|
|
|
size="default"
|
|
size="default"
|
|
|
:precision="field.precision"
|
|
:precision="field.precision"
|
|
|
:disabled="isFieldDisabled(field)"
|
|
:disabled="isFieldDisabled(field)"
|
|
|
- @update:model-value="updateField(field.prop, $event)"
|
|
|
|
|
- >
|
|
|
|
|
|
|
+ @update:model-value="updateField(field.prop, $event)">
|
|
|
<template v-if="getNumberSuffix(field)" #suffix>
|
|
<template v-if="getNumberSuffix(field)" #suffix>
|
|
|
<span class="text-[var(--el-text-color-secondary)]">{{ getNumberSuffix(field) }}</span>
|
|
<span class="text-[var(--el-text-color-secondary)]">{{ getNumberSuffix(field) }}</span>
|
|
|
</template>
|
|
</template>
|
|
@@ -111,8 +137,7 @@ function getFieldClass(field: ConstructionDailyReportField) {
|
|
|
size="default"
|
|
size="default"
|
|
|
:model-value="props.model[field.prop]"
|
|
:model-value="props.model[field.prop]"
|
|
|
:disabled="isFieldDisabled(field)"
|
|
:disabled="isFieldDisabled(field)"
|
|
|
- @update:model-value="updateField(field.prop, $event)"
|
|
|
|
|
- />
|
|
|
|
|
|
|
+ @update:model-value="updateField(field.prop, $event)" />
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
</div>
|
|
</div>
|
|
|
</div>
|
|
</div>
|