yanghao 1 неделя назад
Родитель
Сommit
5c703bf311

+ 4 - 1
src/views/pms/constructionDailyReport/components/ConstructionDailyReportDrawer.vue

@@ -75,7 +75,10 @@ async function handleSubmit() {
 
   submitLoading.value = true
   try {
-    const payload = { ...form.value } as Record<string, any>
+    const payload = {
+      ...form.value,
+      taskId: form.value.taskId ?? null
+    } as Record<string, any>
     await FiveIotProjectDailyReportApi.updateIotProjectDailyReport(payload)
     message.success('保存成功')
     emits('update:visible', false)

+ 21 - 13
src/views/pms/constructionDailyReport/components/ConstructionDailyReportFormSection.vue

@@ -42,7 +42,16 @@ function getDictOptions(field: ConstructionDailyReportField) {
 
 function getRelatedTaskOptions() {
   const relatedTasks = props.model.relatedTasks
-  if (!relatedTasks) return []
+  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)
@@ -56,6 +65,10 @@ function getSelectOptions(field: ConstructionDailyReportField) {
   return getDictOptions(field)
 }
 
+function isSelectClearable(field: ConstructionDailyReportField) {
+  return field.prop !== 'taskId'
+}
+
 function getNumberSuffix(field: ConstructionDailyReportField) {
   return field.suffix || ''
 }
@@ -84,8 +97,7 @@ function getFieldClass(field: ConstructionDailyReportField) {
         :key="`${props.section.title}-${String(field.prop)}-${field.label}`"
         :label="field.label"
         :prop="field.prop"
-        :class="getFieldClass(field)"
-      >
+        :class="getFieldClass(field)">
         <el-input
           v-if="field.type === 'textarea'"
           size="default"
@@ -94,20 +106,18 @@ function getFieldClass(field: ConstructionDailyReportField) {
           :autosize="{ minRows: 3 }"
           resize="none"
           :disabled="isFieldDisabled(field)"
-          @update:model-value="updateField(field.prop, $event)"
-        />
+          @update:model-value="updateField(field.prop, $event)" />
         <el-select
           v-else-if="field.type === 'select'"
           size="default"
           :model-value="props.model[field.prop]"
           :options="getSelectOptions(field)"
           class="w-full"
-          clearable
+          :clearable="isSelectClearable(field)"
           filterable
-          placeholder="璇烽€夋嫨"
+          placeholder="请选择"
           :disabled="isFieldDisabled(field)"
-          @update:model-value="updateField(field.prop, $event)"
-        />
+          @update:model-value="updateField(field.prop, $event)" />
         <el-input-number
           v-else-if="field.type === 'number' || isNumberField(props.model[field.prop])"
           :model-value="getNumberValue(field.prop)"
@@ -117,8 +127,7 @@ function getFieldClass(field: ConstructionDailyReportField) {
           size="default"
           :precision="field.precision"
           :disabled="isFieldDisabled(field)"
-          @update:model-value="updateField(field.prop, $event)"
-        >
+          @update:model-value="updateField(field.prop, $event)">
           <template v-if="getNumberSuffix(field)" #suffix>
             <span class="text-[var(--el-text-color-secondary)]">{{ getNumberSuffix(field) }}</span>
           </template>
@@ -128,8 +137,7 @@ function getFieldClass(field: ConstructionDailyReportField) {
           size="default"
           :model-value="props.model[field.prop]"
           :disabled="isFieldDisabled(field)"
-          @update:model-value="updateField(field.prop, $event)"
-        />
+          @update:model-value="updateField(field.prop, $event)" />
       </el-form-item>
     </div>
   </div>