Explorar o código

Merge branch 'qhse_file' of shuzhihua/pms-iot-vue into master

yanghao hai 1 semana
pai
achega
425a8c80b8

+ 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)

+ 37 - 12
src/views/pms/constructionDailyReport/components/ConstructionDailyReportFormSection.vue

@@ -40,6 +40,35 @@ function getDictOptions(field: ConstructionDailyReportField) {
   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) {
   return field.suffix || ''
 }
@@ -68,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"
@@ -78,19 +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="getDictOptions(field)"
+          :options="getSelectOptions(field)"
           class="w-full"
-          clearable
+          :clearable="isSelectClearable(field)"
+          filterable
           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)"
@@ -100,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>
@@ -111,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>

+ 3 - 2
src/views/pms/constructionDailyReport/components/report-config.ts

@@ -4,7 +4,7 @@ export interface ConstructionDailyReportRow {
   id?: number
   deptId?: number
   projectId?: number
-  taskId?: number
+  taskId?: number | string
   status?: number
   auditStatus?: number
   createTime?: number | string
@@ -49,6 +49,7 @@ export interface ConstructionDailyReportRow {
   monthWorkingLayers?: number | null
   monthWorkingWells?: number | null
   fiveStatus?: string
+  relatedTasks?: Record<string, string>
 }
 
 export interface ConstructionDailyReportQuery {
@@ -148,7 +149,7 @@ export const formSections: ConstructionDailyReportSection[] = [
       { prop: 'projectName', label: '项目' },
       { prop: 'location', label: '施工区域' },
       { prop: 'deptName', label: '队伍' },
-      { prop: 'wellName', label: '生产任务' },
+      { prop: 'taskId', label: '生产任务', type: 'select', editableInEdit: true },
       { prop: 'customer', label: '合同甲方' },
       { prop: 'deviceNames', label: '设备名称', span: 2 }
     ]

+ 0 - 2
src/views/pms/constructionDailyReport/index.vue

@@ -199,7 +199,6 @@ onMounted(() => {
       @current-change="handleCurrentChange">
       <template #action="{ row }">
         <el-button
-          v-if="row.status === 0"
           link
           type="primary"
           @click="handleOpenForm(row.id!, 'edit')"
@@ -207,7 +206,6 @@ onMounted(() => {
           填报
         </el-button>
         <el-button
-          v-else-if="row.status === 1"
           link
           type="success"
           @click="handleOpenForm(row.id!, 'readonly')"

+ 0 - 3
src/views/pms/qhse/monthlyReport/MonthlyReportAdd.vue

@@ -287,7 +287,6 @@
                 :min="0"
                 :precision="0"
                 controls-position="right"
-                disabled
                 style="width: 100%" />
             </el-form-item>
           </el-col>
@@ -297,7 +296,6 @@
                 v-model="reportInfo.ptwAudit"
                 :min="0"
                 :precision="0"
-                disabled
                 controls-position="right"
                 style="width: 100%" />
             </el-form-item>
@@ -308,7 +306,6 @@
                 v-model="reportInfo.jsa"
                 :min="0"
                 :precision="0"
-                disabled
                 controls-position="right"
                 style="width: 100%" />
             </el-form-item>