|
|
@@ -958,155 +958,6 @@ const inContent = async (attachment) => {
|
|
|
class="flex flex-col"
|
|
|
:disabled="formDisabled()"
|
|
|
>
|
|
|
- <el-form-item v-if="data.platformWell === 1" label="平台井" prop="platformIds">
|
|
|
- <el-select
|
|
|
- v-model="form.platformIds"
|
|
|
- multiple
|
|
|
- :options="wellOptions"
|
|
|
- placeholder="请选择平台井"
|
|
|
- clearable
|
|
|
- filterable
|
|
|
- collapse-tags
|
|
|
- collapse-tags-tooltip
|
|
|
- :max-collapse-tags="5"
|
|
|
- tag-type="primary"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- <template v-for="(pid, pindex) in form.platformIds" :key="pid">
|
|
|
- <el-divider v-if="pindex !== 0" class="my-6 border-2! border-[var(--el-color-primary)]!" />
|
|
|
- <div
|
|
|
- class="p-6 rounded-lg shadow border border-solid border-gray-100 grid grid-cols-4 gap-x-8"
|
|
|
- >
|
|
|
- <h3 class="text-lg font-bold text-gray-800 flex items-center gap-2 col-span-4 mb-6">
|
|
|
- <div class="w-1 h-4 bg-blue-600 rounded-full"></div>
|
|
|
- {{ wellOptions.find((item) => item.value === pid)?.label ?? data.wellName ?? '' }}
|
|
|
- </h3>
|
|
|
- <el-form-item
|
|
|
- label="施工状态"
|
|
|
- :prop="`${pid}.rdStatus`"
|
|
|
- :rules="{ required: true, message: '请选择施工状态', trigger: 'change' }"
|
|
|
- class="col-span-2"
|
|
|
- >
|
|
|
- <el-select
|
|
|
- v-model="form[pid].rdStatus"
|
|
|
- :options="rdStatusOptions"
|
|
|
- placeholder="请选择"
|
|
|
- class="w-full"
|
|
|
- clearable
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item
|
|
|
- label="施工工艺"
|
|
|
- :prop="`${pid}.techniqueIds`"
|
|
|
- :rules="{
|
|
|
- required: true,
|
|
|
- message: '请选择施工工艺',
|
|
|
- trigger: 'change',
|
|
|
- type: 'array'
|
|
|
- }"
|
|
|
- class="col-span-2"
|
|
|
- >
|
|
|
- <el-select
|
|
|
- v-model="form[pid].techniqueIds"
|
|
|
- :options="techniqueOptions"
|
|
|
- multiple
|
|
|
- collapse-tags
|
|
|
- collapse-tags-tooltip
|
|
|
- placeholder="请选择"
|
|
|
- class="w-full"
|
|
|
- @change="(val) => handleTechniqueChange(val, pid)"
|
|
|
- clearable
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <template v-if="form[pid] && form[pid].extProperty">
|
|
|
- <el-form-item
|
|
|
- v-for="(attr, idx) in form[pid].extProperty"
|
|
|
- :key="idx"
|
|
|
- :label="`${attr.name}${attr.unit ? '(' + attr.unit + ')' : ''}`"
|
|
|
- :prop="`${pid}.extProperty.${idx}.actualValue`"
|
|
|
- :rules="
|
|
|
- attr.required === 1
|
|
|
- ? [{ required: true, message: `请输入${attr.name}`, trigger: 'blur' }]
|
|
|
- : []
|
|
|
- "
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-if="attr.dataType === 'double'"
|
|
|
- v-model="attr.actualValue"
|
|
|
- :controls="false"
|
|
|
- class="w-full!"
|
|
|
- align="left"
|
|
|
- placeholder="请输入"
|
|
|
- />
|
|
|
- <el-input type="textarea" v-else v-model="attr.actualValue" placeholder="请输入" />
|
|
|
- </el-form-item>
|
|
|
- </template>
|
|
|
-
|
|
|
- <el-divider content-position="left" class="m-0! mt-2! mb-6! border-2! col-span-4">
|
|
|
- 非生产时间
|
|
|
- </el-divider>
|
|
|
-
|
|
|
- <el-form-item
|
|
|
- v-for="field in NON_PROD_FIELDS"
|
|
|
- :key="field.key"
|
|
|
- :label="field.label"
|
|
|
- :prop="`${pid}.${field.key}`"
|
|
|
- :rules="noProductionTimeRule(pid)"
|
|
|
- >
|
|
|
- <el-input-number
|
|
|
- v-model="form[pid][field.key]"
|
|
|
- :min="0"
|
|
|
- :max="24"
|
|
|
- :controls="false"
|
|
|
- class="w-full!"
|
|
|
- align="left"
|
|
|
- @blur="handleRowValidate(pid, field.key)"
|
|
|
- :disabled="formDisabled(field.key)"
|
|
|
- >
|
|
|
- <template #suffix>小时(H)</template>
|
|
|
- </el-input-number>
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-form-item
|
|
|
- class="col-span-4"
|
|
|
- label="其他非生产原因"
|
|
|
- :prop="`${pid}.otherNptReason`"
|
|
|
- :rules="
|
|
|
- form[pid].otherNptTime > 0
|
|
|
- ? { required: true, message: '请填写原因', trigger: 'change' }
|
|
|
- : {}
|
|
|
- "
|
|
|
- >
|
|
|
- <el-input
|
|
|
- v-model="form[pid].otherNptReason"
|
|
|
- type="textarea"
|
|
|
- :autosize="{ minRows: 2 }"
|
|
|
- resize="none"
|
|
|
- show-word-limit
|
|
|
- :maxlength="1000"
|
|
|
- placeholder="当'其他非生产时间'大于0时必填"
|
|
|
- :disabled="formDisabled('otherNptReason')"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
- </div>
|
|
|
- </template>
|
|
|
-
|
|
|
- <el-form-item class="mt-4 col-span-2" label="当日施工简报" prop="constructionBrief">
|
|
|
- <el-input
|
|
|
- v-model="form.constructionBrief"
|
|
|
- type="textarea"
|
|
|
- :autosize="{ minRows: 2 }"
|
|
|
- show-word-limit
|
|
|
- resize="none"
|
|
|
- :maxlength="1000"
|
|
|
- placeholder="请输入当日施工简报"
|
|
|
- :disabled="formDisabled('constructionBrief')"
|
|
|
- />
|
|
|
- </el-form-item>
|
|
|
-
|
|
|
- <el-divider class="mt-0! border-2! border-[var(--el-color-primary)]!" />
|
|
|
<!-- <h3 class="text-lg font-bold text-gray-800 flex items-center gap-2">
|
|
|
<div class="w-1 h-4 bg-blue-600 rounded-full"></div>
|
|
|
基础信息
|
|
|
@@ -1356,6 +1207,156 @@ const inContent = async (attachment) => {
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
|
|
|
+ <el-divider class="my-6! border-2! border-[var(--el-color-primary)]!" />
|
|
|
+
|
|
|
+ <el-form-item v-if="data.platformWell === 1" label="平台井" prop="platformIds">
|
|
|
+ <el-select
|
|
|
+ v-model="form.platformIds"
|
|
|
+ multiple
|
|
|
+ :options="wellOptions"
|
|
|
+ placeholder="请选择平台井"
|
|
|
+ clearable
|
|
|
+ filterable
|
|
|
+ collapse-tags
|
|
|
+ collapse-tags-tooltip
|
|
|
+ :max-collapse-tags="5"
|
|
|
+ tag-type="primary"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ <template v-for="(pid, pindex) in form.platformIds" :key="pid">
|
|
|
+ <el-divider v-if="pindex !== 0" class="my-6 border-2! border-[var(--el-color-primary)]!" />
|
|
|
+ <div
|
|
|
+ class="p-6 rounded-lg shadow border border-solid border-gray-100 grid grid-cols-4 gap-x-8"
|
|
|
+ >
|
|
|
+ <h3 class="text-lg font-bold text-gray-800 flex items-center gap-2 col-span-4 mb-6">
|
|
|
+ <div class="w-1 h-4 bg-blue-600 rounded-full"></div>
|
|
|
+ {{ wellOptions.find((item) => item.value === pid)?.label ?? data.wellName ?? '' }}
|
|
|
+ </h3>
|
|
|
+ <el-form-item
|
|
|
+ label="施工状态"
|
|
|
+ :prop="`${pid}.rdStatus`"
|
|
|
+ :rules="{ required: true, message: '请选择施工状态', trigger: 'change' }"
|
|
|
+ class="col-span-2"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model="form[pid].rdStatus"
|
|
|
+ :options="rdStatusOptions"
|
|
|
+ placeholder="请选择"
|
|
|
+ class="w-full"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ label="施工工艺"
|
|
|
+ :prop="`${pid}.techniqueIds`"
|
|
|
+ :rules="{
|
|
|
+ required: true,
|
|
|
+ message: '请选择施工工艺',
|
|
|
+ trigger: 'change',
|
|
|
+ type: 'array'
|
|
|
+ }"
|
|
|
+ class="col-span-2"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model="form[pid].techniqueIds"
|
|
|
+ :options="techniqueOptions"
|
|
|
+ multiple
|
|
|
+ collapse-tags
|
|
|
+ collapse-tags-tooltip
|
|
|
+ placeholder="请选择"
|
|
|
+ class="w-full"
|
|
|
+ @change="(val) => handleTechniqueChange(val, pid)"
|
|
|
+ clearable
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <template v-if="form[pid] && form[pid].extProperty">
|
|
|
+ <el-form-item
|
|
|
+ v-for="(attr, idx) in form[pid].extProperty"
|
|
|
+ :key="idx"
|
|
|
+ :label="`${attr.name}${attr.unit ? '(' + attr.unit + ')' : ''}`"
|
|
|
+ :prop="`${pid}.extProperty.${idx}.actualValue`"
|
|
|
+ :rules="
|
|
|
+ attr.required === 1
|
|
|
+ ? [{ required: true, message: `请输入${attr.name}`, trigger: 'blur' }]
|
|
|
+ : []
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-if="attr.dataType === 'double'"
|
|
|
+ v-model="attr.actualValue"
|
|
|
+ :controls="false"
|
|
|
+ class="w-full!"
|
|
|
+ align="left"
|
|
|
+ placeholder="请输入"
|
|
|
+ />
|
|
|
+ <el-input type="textarea" v-else v-model="attr.actualValue" placeholder="请输入" />
|
|
|
+ </el-form-item>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <el-divider content-position="left" class="m-0! mt-2! mb-6! border-2! col-span-4">
|
|
|
+ 非生产时间
|
|
|
+ </el-divider>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ v-for="field in NON_PROD_FIELDS"
|
|
|
+ :key="field.key"
|
|
|
+ :label="field.label"
|
|
|
+ :prop="`${pid}.${field.key}`"
|
|
|
+ :rules="noProductionTimeRule(pid)"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="form[pid][field.key]"
|
|
|
+ :min="0"
|
|
|
+ :max="24"
|
|
|
+ :controls="false"
|
|
|
+ class="w-full!"
|
|
|
+ align="left"
|
|
|
+ @blur="handleRowValidate(pid, field.key)"
|
|
|
+ :disabled="formDisabled(field.key)"
|
|
|
+ >
|
|
|
+ <template #suffix>小时(H)</template>
|
|
|
+ </el-input-number>
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
+ <el-form-item
|
|
|
+ class="col-span-4"
|
|
|
+ label="其他非生产原因"
|
|
|
+ :prop="`${pid}.otherNptReason`"
|
|
|
+ :rules="
|
|
|
+ form[pid].otherNptTime > 0
|
|
|
+ ? { required: true, message: '请填写原因', trigger: 'change' }
|
|
|
+ : {}
|
|
|
+ "
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="form[pid].otherNptReason"
|
|
|
+ type="textarea"
|
|
|
+ :autosize="{ minRows: 2 }"
|
|
|
+ resize="none"
|
|
|
+ show-word-limit
|
|
|
+ :maxlength="1000"
|
|
|
+ placeholder="当'其他非生产时间'大于0时必填"
|
|
|
+ :disabled="formDisabled('otherNptReason')"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <el-form-item class="mt-4 col-span-2" label="当日施工简报" prop="constructionBrief">
|
|
|
+ <el-input
|
|
|
+ v-model="form.constructionBrief"
|
|
|
+ type="textarea"
|
|
|
+ :autosize="{ minRows: 2 }"
|
|
|
+ show-word-limit
|
|
|
+ resize="none"
|
|
|
+ :maxlength="1000"
|
|
|
+ placeholder="请输入当日施工简报"
|
|
|
+ :disabled="formDisabled('constructionBrief')"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+
|
|
|
<el-divider class="my-6 border-2! border-[var(--el-color-primary)]!" />
|
|
|
|
|
|
<h3 class="text-lg font-bold text-gray-800 flex items-center gap-2 mb-6">
|