Browse Source

pms 瑞鹰日报 编辑

zhangcl 2 weeks ago
parent
commit
860401ccbe

+ 93 - 87
src/views/pms/iotrydailyreport/IotRyDailyReportForm.vue

@@ -7,104 +7,64 @@
       label-width="120px"
       v-loading="formLoading"
     >
-      <el-form-item label="施工队伍id" prop="deptId">
-        <el-input v-model="formData.deptId" placeholder="请输入施工队伍id" />
+      <el-form-item label="施工队伍" prop="deptName">
+        <el-input v-model="displayData.deptName" placeholder="" disabled/>
       </el-form-item>
-      <el-form-item label="项目id" prop="projectId">
-        <el-input v-model="formData.projectId" placeholder="请输入项目id" />
+      <el-form-item label="项目" prop="contractName">
+        <el-input v-model="displayData.contractName" placeholder="" disabled/>
       </el-form-item>
-      <el-form-item label="任务id" prop="taskId">
-        <el-input v-model="formData.taskId" placeholder="请输入任务id" />
+      <el-form-item label="任务" prop="taskName">
+        <el-input v-model="displayData.taskName" placeholder="" disabled/>
       </el-form-item>
-      <el-form-item label="项目类别(钻井 修井 注氮 酸化压裂... )" prop="projectClassification">
-        <el-input v-model="formData.projectClassification" placeholder="请输入项目类别(钻井 修井 注氮 酸化压裂... )" />
-      </el-form-item>
-      <el-form-item label="搬迁安装天数(D)" prop="relocationDays">
-        <el-input v-model="formData.relocationDays" placeholder="请输入搬迁安装天数(D)" />
+      <el-form-item label="施工状态" prop="rigStatus">
+        <el-radio-group v-model="formData.rigStatus">
+          <el-radio value="1">请选择字典生成</el-radio>
+        </el-radio-group>
       </el-form-item>
-      <el-form-item label="上井次完井时间" prop="lastestWellDoneTime">
+      <el-form-item label="上井次完井时间" prop="latestWellDoneTime">
         <el-date-picker
           v-model="formData.lastestWellDoneTime"
           type="date"
           value-format="x"
-          placeholder="选择上井次完井时间"
+          placeholder=""
+          disabled
         />
       </el-form-item>
+      <el-form-item label="设计井深(m)" prop="designWellDepth">
+        <el-input v-model="formData.designWellDepth" placeholder="" disabled/>
+      </el-form-item>
       <el-form-item label="当前井深(m)" prop="currentDepth">
         <el-input v-model="formData.currentDepth" placeholder="请输入当前井深(m)" />
       </el-form-item>
       <el-form-item label="日进尺(m)" prop="dailyFootage">
-        <el-input v-model="formData.dailyFootage" placeholder="请输入日进尺(m)" />
+        <el-input v-model="formData.dailyFootage" placeholder="" disabled/>
       </el-form-item>
       <el-form-item label="月进尺(m)" prop="monthlyFootage">
-        <el-input v-model="formData.monthlyFootage" placeholder="请输入月进尺(m)" />
+        <el-input v-model="formData.monthlyFootage" placeholder="" disabled/>
       </el-form-item>
       <el-form-item label="年累计进尺(m)" prop="annualFootage">
-        <el-input v-model="formData.annualFootage" placeholder="请输入年累计进尺(m)" />
+        <el-input v-model="formData.annualFootage" placeholder="" disabled/>
       </el-form-item>
       <el-form-item label="当日用电量(kWh)" prop="dailyPowerUsage">
         <el-input v-model="formData.dailyPowerUsage" placeholder="请输入当日用电量(kWh)" />
       </el-form-item>
-      <el-form-item label="当月用电量(kWh)" prop="monthlyPowerUsage">
-        <el-input v-model="formData.monthlyPowerUsage" placeholder="请输入当月用电量(kWh)" />
-      </el-form-item>
       <el-form-item label="当日油耗(吨)" prop="dailyFuel">
         <el-input v-model="formData.dailyFuel" placeholder="请输入当日油耗(吨)" />
       </el-form-item>
-      <el-form-item label="当月油耗(吨)" prop="monthlyFuel">
-        <el-input v-model="formData.monthlyFuel" placeholder="请输入当月油耗(吨)" />
-      </el-form-item>
-      <el-form-item label="非生产时间(H)" prop="nonProductionTime">
-        <el-date-picker
-          v-model="formData.nonProductionTime"
-          type="date"
-          value-format="x"
-          placeholder="选择非生产时间(H)"
-        />
-      </el-form-item>
-      <el-form-item label="非生产时间原因" prop="nptReason">
-        <el-input v-model="formData.nptReason" placeholder="请输入非生产时间原因" />
-      </el-form-item>
-      <el-form-item label="施工开始日期" prop="constructionStartDate">
-        <el-date-picker
-          v-model="formData.constructionStartDate"
-          type="date"
-          value-format="x"
-          placeholder="选择施工开始日期"
-        />
-      </el-form-item>
-      <el-form-item label="施工结束日期" prop="constructionEndDate">
-        <el-date-picker
-          v-model="formData.constructionEndDate"
-          type="date"
-          value-format="x"
-          placeholder="选择施工结束日期"
-        />
-      </el-form-item>
-      <el-form-item label="当日生产情况生产动态" prop="productionStatus">
-        <el-radio-group v-model="formData.productionStatus">
-          <el-radio value="1">请选择字典生成</el-radio>
-        </el-radio-group>
+      <el-form-item label="总施工井数" prop="monthlyFuel">
+        <el-input v-model="formData.totalConstructionWells" placeholder="" disabled/>
       </el-form-item>
-      <el-form-item label="下步工作计划" prop="nextPlan">
-        <el-input v-model="formData.nextPlan" placeholder="请输入下步工作计划" />
+      <el-form-item label="完工井数" prop="completedWells">
+        <el-input v-model="formData.completedWells" placeholder="" disabled/>
       </el-form-item>
-      <el-form-item label="施工状态(动迁 准备 施工 完工)" prop="rigStatus">
-        <el-radio-group v-model="formData.rigStatus">
-          <el-radio value="1">请选择字典生成</el-radio>
-        </el-radio-group>
-      </el-form-item>
-      <el-form-item label="人员情况" prop="personnel">
-        <el-input v-model="formData.personnel" placeholder="请输入人员情况" />
-      </el-form-item>
-      <el-form-item label="泥浆性能-密度(g/cm³)" prop="mudDensity">
+      <el-form-item label="泥浆密度(g/cm³)" prop="mudDensity">
         <el-input v-model="formData.mudDensity" placeholder="请输入泥浆性能-密度(g/cm³)" />
       </el-form-item>
-      <el-form-item label="泥浆性能-粘度(S)" prop="mudViscosity">
+      <el-form-item label="泥浆粘度(S)" prop="mudViscosity">
         <el-input v-model="formData.mudViscosity" placeholder="请输入泥浆性能-粘度(S)" />
       </el-form-item>
-      <el-form-item label="水平段长度(m) 适用于水平井" prop="lateralLength">
-        <el-input v-model="formData.lateralLength" placeholder="请输入水平段长度(m) 适用于水平井" />
+      <el-form-item label="水平段长度(m)" prop="lateralLength">
+        <el-input v-model="formData.lateralLength" placeholder="请输入水平段长度(m)" />
       </el-form-item>
       <el-form-item label="井斜(°)" prop="wellInclination">
         <el-input v-model="formData.wellInclination" placeholder="请输入井斜(°)" />
@@ -112,27 +72,17 @@
       <el-form-item label="方位(°)" prop="azimuth">
         <el-input v-model="formData.azimuth" placeholder="请输入方位(°)" />
       </el-form-item>
-      <el-form-item label="不同专业公司的扩展属性值" prop="extProperty">
-        <el-input v-model="formData.extProperty" placeholder="请输入不同专业公司的扩展属性值" />
-      </el-form-item>
-      <el-form-item label="排序值" prop="sort">
-        <el-input v-model="formData.sort" placeholder="请输入排序值" />
+      <el-form-item label="设计井身结构" prop="designWellStruct">
+        <el-input v-model="displayData.designWellStruct" placeholder="" type="textarea" disabled/>
       </el-form-item>
-      <el-form-item label="备注" prop="remark">
-        <el-input v-model="formData.remark" placeholder="请输入备注" />
-      </el-form-item>
-      <el-form-item label="状态(0启用 1禁用)" prop="status">
-        <el-radio-group v-model="formData.status">
-          <el-radio value="1">请选择字典生成</el-radio>
-        </el-radio-group>
+      <el-form-item label="生产动态" prop="productionStatus">
+        <el-input v-model="formData.productionStatus" placeholder="请输入生产动态" type="textarea"/>
       </el-form-item>
-      <el-form-item label="流程实例id" prop="processInstanceId">
-        <el-input v-model="formData.processInstanceId" placeholder="请输入流程实例id" />
+      <el-form-item label="人员情况" prop="personnel">
+        <el-input v-model="formData.personnel" placeholder="请输入人员情况" type="textarea"/>
       </el-form-item>
-      <el-form-item label="审批状态 未提交、审批中、审批通过、审批不通过、已取消" prop="auditStatus">
-        <el-radio-group v-model="formData.auditStatus">
-          <el-radio value="1">请选择字典生成</el-radio>
-        </el-radio-group>
+      <el-form-item label="备注" prop="remark">
+        <el-input v-model="formData.remark" placeholder="请输入备注" type="textarea"/>
       </el-form-item>
     </el-form>
     <template #footer>
@@ -143,6 +93,8 @@
 </template>
 <script setup lang="ts">
 import { IotRyDailyReportApi, IotRyDailyReportVO } from '@/api/pms/iotrydailyreport'
+import {DICT_TYPE, getStrDictOptions} from "@/utils/dict";
+import { computed, ref, watch, nextTick, reactive } from 'vue'
 
 /** 瑞鹰日报 表单 */
 defineOptions({ name: 'IotRyDailyReportForm' })
@@ -150,10 +102,38 @@ defineOptions({ name: 'IotRyDailyReportForm' })
 const { t } = useI18n() // 国际化
 const message = useMessage() // 消息弹窗
 
+// 添加 props 接收行数据
+const props = defineProps({
+  rowData: {
+    type: Object,
+    default: () => ({})
+  }
+})
+
+// 监听 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 || ''
+    displayData.value.designWellStruct = newVal.designWellStruct || ''
+  }
+}, { immediate: true })
+
 const dialogVisible = ref(false) // 弹窗的是否展示
 const dialogTitle = ref('') // 弹窗的标题
 const formLoading = ref(false) // 表单的加载中:1)修改时的数据加载;2)提交的按钮禁用
 const formType = ref('') // 表单的类型:create - 新增;update - 修改
+
+// 添加显示数据对象
+const displayData = ref({
+  deptName: '',
+  contractName: '',
+  taskName: '',
+  designWellStruct: ''
+})
+
 const formData = ref({
   id: undefined,
   deptId: undefined,
@@ -161,11 +141,14 @@ const formData = ref({
   taskId: undefined,
   projectClassification: undefined,
   relocationDays: undefined,
-  lastestWellDoneTime: undefined,
+  latestWellDoneTime: undefined,
+  designWellDepth: undefined,
   currentDepth: undefined,
   dailyFootage: undefined,
   monthlyFootage: undefined,
   annualFootage: undefined,
+  totalConstructionWells: undefined,
+  completedWells: undefined,
   dailyPowerUsage: undefined,
   monthlyPowerUsage: undefined,
   dailyFuel: undefined,
@@ -183,6 +166,7 @@ const formData = ref({
   lateralLength: undefined,
   wellInclination: undefined,
   azimuth: undefined,
+  designWellStruct: undefined,
   extProperty: undefined,
   sort: undefined,
   remark: undefined,
@@ -200,6 +184,15 @@ const open = async (type: string, id?: number) => {
   dialogTitle.value = t('action.' + type)
   formType.value = type
   resetForm()
+
+  // 设置显示数据
+  if (props.rowData) {
+    displayData.value.deptName = props.rowData.deptName || ''
+    displayData.value.contractName = props.rowData.contractName || ''
+    displayData.value.taskName = props.rowData.taskName || ''
+    displayData.value.relocationDays = props.rowData.relocationDays || ''
+  }
+
   // 修改时,设置数据
   if (id) {
     formLoading.value = true
@@ -210,6 +203,7 @@ const open = async (type: string, id?: number) => {
     }
   }
 }
+
 defineExpose({ open }) // 提供 open 方法,用于打开弹窗
 
 /** 提交表单 */
@@ -245,11 +239,14 @@ const resetForm = () => {
     taskId: undefined,
     projectClassification: undefined,
     relocationDays: undefined,
-    lastestWellDoneTime: undefined,
+    latestWellDoneTime: undefined,
+    designWellDepth: undefined,
     currentDepth: undefined,
     dailyFootage: undefined,
     monthlyFootage: undefined,
     annualFootage: undefined,
+    totalConstructionWells: undefined,
+    completedWells: undefined,
     dailyPowerUsage: undefined,
     monthlyPowerUsage: undefined,
     dailyFuel: undefined,
@@ -267,6 +264,7 @@ const resetForm = () => {
     lateralLength: undefined,
     wellInclination: undefined,
     azimuth: undefined,
+    designWellStruct: undefined,
     extProperty: undefined,
     sort: undefined,
     remark: undefined,
@@ -274,6 +272,14 @@ const resetForm = () => {
     processInstanceId: undefined,
     auditStatus: undefined,
   }
+
+  displayData.value = {
+    deptName: '',
+    contractName: '',
+    taskName: '',
+    designWellStruct: ''
+  }
+
   formRef.value?.resetFields()
 }
 </script>

+ 16 - 4
src/views/pms/iotrydailyreport/index.vue

@@ -65,7 +65,7 @@
   <ContentWrap ref="tableContainerRef">
     <div class="table-container">
       <el-table ref="tableRef" v-loading="loading" :data="list" :stripe="true"
-                :show-overflow-tooltip="true" style="width: 100%" :cell-style="cellStyle">
+                style="width: 100%" :cell-style="cellStyle">
         <el-table-column
           label="日期"
           align="center"
@@ -76,7 +76,7 @@
         <el-table-column label="施工队伍" align="center" prop="deptName" :width="columnWidths.deptName"/>
         <el-table-column label="项目" align="center" prop="contractName" :width="columnWidths.contractName"/>
         <el-table-column label="任务" align="center" prop="taskName" :width="columnWidths.taskName"/>
-        <!-- <el-table-column label="施工状态" align="center" prop="constructionStatus" /> -->
+        <el-table-column label="设备型号" align="center" prop="equipmentType" :width="columnWidths.equipmentType"/>
         <el-table-column :label="t('project.status')" align="center" prop="rigStatus" :width="columnWidths.rigStatus">
           <template #default="scope">
             <dict-tag :type="DICT_TYPE.PMS_PROJECT_TASK_RY_SCHEDULE" :value="scope.row.rigStatus" />
@@ -115,6 +115,7 @@
               effect="light"
               :content="scope.row.designWellStruct"
               placement="top"
+              popper-class="design-well-struct-tooltip"
               :disabled="!scope.row.designWellStruct || scope.row.designWellStruct.length <= 30"
             >
               <span class="design-well-struct-text">{{ formatDesignWellStruct(scope.row.designWellStruct) }}</span>
@@ -229,6 +230,7 @@ const columnWidths = ref({
   deptName: '120px',
   contractName: '150px',
   taskName: '120px',
+  equipmentType: '120px',
   rigStatus: '110px',
   latestWellDoneTime: '120px',
   designWellDepth: '120px',
@@ -275,7 +277,7 @@ const getTextWidth = (text: string, fontSize = 14) => {
 };
 
 // 可伸缩列配置
-const FLEXIBLE_COLUMNS = ['deptName', 'contractName', 'taskName', 'rigStatus', 'latestWellDoneTime', 'designWellDepth',
+const FLEXIBLE_COLUMNS = ['deptName', 'contractName', 'taskName', 'equipmentType', 'rigStatus', 'latestWellDoneTime', 'designWellDepth',
   'currentDepth', 'dailyFootage', 'monthlyFootage', 'annualFootage', 'totalConstructionWells',
   'completedWells', 'mudDensity', 'mudViscosity', 'constructionStartDate',
   'constructionEndDate', 'lateralLength', 'wellInclination',
@@ -346,6 +348,7 @@ const calculateColumnWidths = () => {
   calculateColumnMinWidth('deptName', '施工队伍', (row: any) => row.deptName);
   calculateColumnMinWidth('contractName', '项目', (row: any) => row.contractName);
   calculateColumnMinWidth('taskName', '任务', (row: any) => row.taskName);
+  calculateColumnMinWidth('equipmentType', '设备型号', (row: any) => row.equipmentType);
   calculateColumnMinWidth('rigStatus', t('project.status'), (row: any) => {
     // 这里可以获取字典标签,简化处理使用值本身
     return String(row.rigStatus || '');
@@ -427,7 +430,7 @@ const openForm = (type: string, id?: number, row?: any) => {
       deptName: row.deptName,
       contractName: row.contractName,
       taskName: row.taskName,
-      relocationDays: row.relocationDays
+      designWellStruct: row.designWellStruct
     }
   } else {
     selectedRowData.value = null
@@ -555,3 +558,12 @@ watch(list, () => {
 }
 
 </style>
+
+<style>
+/* 设计井身结构 tooltip 样式 - 保留换行符 */
+.design-well-struct-tooltip {
+  white-space: pre-line;
+  max-width: 500px;
+  line-height: 1.5;
+}
+</style>