Преглед изворни кода

fix(井队日报): 根据 footageReadOnly 禁用井深编辑

Zimo пре 1 дан
родитељ
комит
8dbdb1b810

+ 62 - 48
src/views/pms/iotrhdailyreport/IotRhDailyReportForm.vue

@@ -5,48 +5,56 @@
       :model="formData"
       :rules="formRules"
       label-width="120px"
-      v-loading="formLoading"
-    >
+      v-loading="formLoading">
       <el-form-item label="施工队伍" prop="deptName">
-        <el-input v-model="displayData.deptName" placeholder="" disabled/>
+        <el-input v-model="displayData.deptName" placeholder="" disabled />
       </el-form-item>
       <el-form-item label="项目" prop="contractName">
-        <el-input v-model="displayData.contractName" placeholder="" disabled/>
+        <el-input v-model="displayData.contractName" placeholder="" disabled />
       </el-form-item>
       <el-form-item label="任务" prop="taskName">
-        <el-input v-model="displayData.taskName" placeholder="" disabled/>
+        <el-input v-model="displayData.taskName" placeholder="" disabled />
       </el-form-item>
       <el-form-item label="搬迁安装天数(D)" prop="relocationDays">
-        <el-input v-model="displayData.relocationDays" placeholder="" disabled/>
+        <el-input v-model="displayData.relocationDays" placeholder="" disabled />
       </el-form-item>
       <el-form-item label="运行时效" prop="transitTime">
-        <el-input v-model="displayTransitTime" placeholder="" disabled
-                  :class="{'red-text': isTransitTimeOver}"
-                  id="transitTimeInput" />
+        <el-input
+          v-model="displayTransitTime"
+          placeholder=""
+          disabled
+          :class="{ 'red-text': isTransitTimeOver }"
+          id="transitTimeInput" />
       </el-form-item>
       <el-form-item label="当日注气量(方)" prop="dailyGasInjection">
-        <el-input v-model="formData.dailyGasInjection" placeholder="请输入当日注气量(方)" @change="calculateTransitTime"/>
+        <el-input
+          v-model="formData.dailyGasInjection"
+          placeholder="请输入当日注气量(方)"
+          @change="calculateTransitTime" />
       </el-form-item>
       <el-form-item label="当日注水量(方)" prop="dailyWaterInjection">
         <el-input v-model="formData.dailyWaterInjection" placeholder="请输入当日注水量(方)" />
       </el-form-item>
       <el-form-item label="当日注气时间(H)" prop="dailyInjectGasTime">
-        <el-input v-model="formData.dailyInjectGasTime"
-                  placeholder="请输入当日注气时间(H)"
-                  :class="{'red-text': isTimeSumInvalid}"
-                  @change="validateTimeSum" />
+        <el-input
+          v-model="formData.dailyInjectGasTime"
+          placeholder="请输入当日注气时间(H)"
+          :class="{ 'red-text': isTimeSumInvalid }"
+          @change="validateTimeSum" />
       </el-form-item>
       <el-form-item label="当日注水时间(H)" prop="dailyInjectWaterTime">
-        <el-input v-model="formData.dailyInjectWaterTime"
-                  placeholder="当日注水时间(H)"
-                  :class="{'red-text': isTimeSumInvalid}"
-                  @change="validateTimeSum" />
+        <el-input
+          v-model="formData.dailyInjectWaterTime"
+          placeholder="当日注水时间(H)"
+          :class="{ 'red-text': isTimeSumInvalid }"
+          @change="validateTimeSum" />
       </el-form-item>
       <el-form-item label="非生产时间(H)" prop="nonProductionTime">
-        <el-input v-model="formData.nonProductionTime"
-                  placeholder="非生产时间(H)"
-                  :class="{'red-text': isTimeSumInvalid}"
-                  @change="validateTimeSum" />
+        <el-input
+          v-model="formData.nonProductionTime"
+          placeholder="非生产时间(H)"
+          :class="{ 'red-text': isTimeSumInvalid }"
+          @change="validateTimeSum" />
       </el-form-item>
       <el-form-item label="非生产时间原因" prop="nptReason">
         <el-select v-model="formData.nptReason" placeholder="请选择" clearable disabled>
@@ -54,24 +62,32 @@
             v-for="dict in getStrDictOptions(DICT_TYPE.PMS_PROJECT_NPT_REASON)"
             :key="dict.id"
             :label="dict.label"
-            :value="dict.value"
-          />
+            :value="dict.value" />
         </el-select>
       </el-form-item>
       <el-form-item label="生产动态" prop="productionStatus">
-        <el-input v-model="formData.productionStatus" placeholder="请输入生产动态" type="textarea"/>
+        <el-input
+          v-model="formData.productionStatus"
+          placeholder="请输入生产动态"
+          type="textarea" />
       </el-form-item>
       <el-form-item label="累计注气量(万方)" prop="totalGasInjection">
-        <el-input v-model="formData.totalGasInjection" placeholder="" disabled/>
+        <el-input v-model="formData.totalGasInjection" placeholder="" disabled />
       </el-form-item>
       <el-form-item label="累计注水量(方)" prop="totalWaterInjection">
-        <el-input v-model="formData.totalWaterInjection" placeholder="请输入累计注水量(方)" disabled/>
+        <el-input
+          v-model="formData.totalWaterInjection"
+          placeholder="请输入累计注水量(方)"
+          disabled />
       </el-form-item>
       <el-form-item label="累计完工井次" prop="cumulativeCompletion">
-        <el-input v-model="formData.cumulativeCompletion" placeholder="请输入累计完工井次" disabled/>
+        <el-input
+          v-model="formData.cumulativeCompletion"
+          placeholder="请输入累计完工井次"
+          disabled />
       </el-form-item>
       <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" placeholder="请输入备注" type="textarea"/>
+        <el-input v-model="formData.remark" placeholder="请输入备注" type="textarea" />
       </el-form-item>
     </el-form>
     <template #footer>
@@ -82,8 +98,8 @@
 </template>
 <script setup lang="ts">
 import { IotRhDailyReportApi, IotRhDailyReportVO } from '@/api/pms/iotrhdailyreport'
-import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
-import { computed, ref, watch, nextTick, reactive } from 'vue'
+import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
+import { computed, ref, watch, reactive } from 'vue'
 
 /** 瑞恒日报 表单 */
 defineOptions({ name: 'IotRhDailyReportForm' })
@@ -100,14 +116,18 @@ const props = defineProps({
 })
 
 // 监听 props.rowData 的变化
-watch(() => props.rowData, (newVal) => {
-  if (newVal) {
-    displayData.value.deptName = newVal.deptName || ''
-    displayData.value.contractName = newVal.contractName || ''
-    displayData.value.taskName = newVal.taskName || ''
-    displayData.value.relocationDays = newVal.relocationDays || ''
-  }
-}, { immediate: true })
+watch(
+  () => props.rowData,
+  (newVal) => {
+    if (newVal) {
+      displayData.value.deptName = newVal.deptName || ''
+      displayData.value.contractName = newVal.contractName || ''
+      displayData.value.taskName = newVal.taskName || ''
+      displayData.value.relocationDays = newVal.relocationDays || ''
+    }
+  },
+  { immediate: true }
+)
 
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogTitle = ref('') // 弹窗的标题
@@ -156,15 +176,9 @@ const formData = ref({
   capacity: undefined
 })
 const formRules = reactive({
-  dailyInjectGasTime: [
-    { validator: validateTimeField, trigger: 'change' }
-  ],
-  dailyInjectWaterTime: [
-    { validator: validateTimeField, trigger: 'change' }
-  ],
-  nonProductionTime: [
-    { validator: validateTimeField, trigger: 'change' }
-  ]
+  dailyInjectGasTime: [{ validator: validateTimeField, trigger: 'change' }],
+  dailyInjectWaterTime: [{ validator: validateTimeField, trigger: 'change' }],
+  nonProductionTime: [{ validator: validateTimeField, trigger: 'change' }]
 })
 
 // 时间字段校验器

+ 8 - 3
src/views/pms/iotrydailyreport/ry-form.vue

@@ -72,6 +72,7 @@ interface FormOriginal {
   drillingWorkingTime: number
   otherProductionTime: number
   lastCurrentDepth: number
+  footageReadOnly: boolean
 
   // 11个非生产时间字段
   repairTime: number
@@ -178,6 +179,9 @@ const form = ref<Form>(initFormData())
 const isApproval = computed(() => props.type === 'approval')
 const isEdit = computed(() => props.type === 'edit')
 const isMainFieldDisabled = computed(() => formType.value === 'readonly' || isApproval.value)
+const isFootageDisabled = computed(
+  () => isMainFieldDisabled.value || form.value.footageReadOnly === true
+)
 const isConstructionBriefDisabled = computed(() => formType.value === 'readonly')
 
 const wellOptions = ref<{ label: string; value: number }[]>([])
@@ -204,6 +208,7 @@ async function loadDetail(id: number) {
         form.value[key] = res[key]
       }
     })
+    form.value.footageReadOnly = res.footageReadOnly === true
 
     form.value.reportDetails = (res.reportDetails ? (res.reportDetails as any[]) : []).map(
       (item) => ({
@@ -221,7 +226,7 @@ async function loadDetail(id: number) {
       addProductionStatusRow()
     }
 
-    if (props.type === 'edit') {
+    if (props.type === 'edit' && !form.value.footageReadOnly) {
       form.value.currentDepth = form.value.reportDetails.at(-1)?.currentDepth
     }
 
@@ -601,7 +606,7 @@ const inputCurrentDepth = useDebounceFn(function inputCurrentDepth() {
             :min="0"
             v-model="form.currentDepth"
             placeholder="请输入当前井深(m)"
-            :disabled="isMainFieldDisabled"
+            :disabled="isFootageDisabled"
             :controls="false"
             align="left"
             class="w-full!" />
@@ -839,7 +844,7 @@ const inputCurrentDepth = useDebounceFn(function inputCurrentDepth() {
                       class="!w-full"
                       align="left"
                       placeholder="请输入结束井深"
-                      :disabled="isMainFieldDisabled"
+                      :disabled="isFootageDisabled"
                       @input="() => inputCurrentDepth()">
                       <template #suffix> m </template>
                     </el-input-number>