|
@@ -4,6 +4,8 @@ import { useTableComponents } from '@/components/ZmTable/useTableComponents'
|
|
|
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
|
|
import { DICT_TYPE, getStrDictOptions } from '@/utils/dict'
|
|
|
import { FormInstance, FormRules } from 'element-plus'
|
|
import { FormInstance, FormRules } from 'element-plus'
|
|
|
import { computed, reactive, ref, watch, nextTick } from 'vue'
|
|
import { computed, reactive, ref, watch, nextTick } from 'vue'
|
|
|
|
|
+import { Delete, Plus } from '@element-plus/icons-vue'
|
|
|
|
|
+import dayjs from 'dayjs'
|
|
|
|
|
|
|
|
interface Props {
|
|
interface Props {
|
|
|
visible: boolean
|
|
visible: boolean
|
|
@@ -35,14 +37,13 @@ const NON_PROD_FIELDS = [
|
|
|
{ key: 'otherNptTime', label: '其他非生产时间' }
|
|
{ key: 'otherNptTime', label: '其他非生产时间' }
|
|
|
] as const
|
|
] as const
|
|
|
|
|
|
|
|
-interface ProductionStatus {
|
|
|
|
|
- date: string
|
|
|
|
|
- start_time: string
|
|
|
|
|
- end_time: string
|
|
|
|
|
|
|
+interface ReportDetail {
|
|
|
|
|
+ startTime: string
|
|
|
|
|
+ endTime: string
|
|
|
duration: number
|
|
duration: number
|
|
|
- endTimeWellDepth: number
|
|
|
|
|
- operatingMode: string
|
|
|
|
|
- detail: string
|
|
|
|
|
|
|
+ currentDepth: number
|
|
|
|
|
+ currentOperation: string
|
|
|
|
|
+ constructionDetail: string
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
interface FormOriginal {
|
|
interface FormOriginal {
|
|
@@ -85,8 +86,9 @@ interface FormOriginal {
|
|
|
|
|
|
|
|
// 其他非生产时间原因(仅作为备注字段存在)
|
|
// 其他非生产时间原因(仅作为备注字段存在)
|
|
|
otherNptReason: string
|
|
otherNptReason: string
|
|
|
|
|
+ constructionBrief: string
|
|
|
|
|
|
|
|
- productionStatus: ProductionStatus[]
|
|
|
|
|
|
|
+ reportDetails: ReportDetail[]
|
|
|
remark: string
|
|
remark: string
|
|
|
createTime: string
|
|
createTime: string
|
|
|
opinion: string
|
|
opinion: string
|
|
@@ -118,11 +120,10 @@ const FORM_KEYS: (keyof FormOriginal)[] = [
|
|
|
'drillingWorkingTime',
|
|
'drillingWorkingTime',
|
|
|
'otherProductionTime',
|
|
'otherProductionTime',
|
|
|
'lastCurrentDepth',
|
|
'lastCurrentDepth',
|
|
|
-
|
|
|
|
|
- // 'productionStatus',
|
|
|
|
|
|
|
+ 'constructionBrief',
|
|
|
'remark',
|
|
'remark',
|
|
|
'createTime',
|
|
'createTime',
|
|
|
-
|
|
|
|
|
|
|
+ 'reportDetails',
|
|
|
'opinion',
|
|
'opinion',
|
|
|
'repairTime',
|
|
'repairTime',
|
|
|
'selfStopTime',
|
|
'selfStopTime',
|
|
@@ -182,10 +183,14 @@ async function loadDetail(id: number) {
|
|
|
}
|
|
}
|
|
|
})
|
|
})
|
|
|
|
|
|
|
|
- form.value.productionStatus = []
|
|
|
|
|
|
|
+ form.value.reportDetails = res.reportDetails ? (res.reportDetails as any[]) : []
|
|
|
|
|
+
|
|
|
|
|
+ if (!form.value.reportDetails.length) {
|
|
|
|
|
+ addProductionStatusRow()
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
if (props.type === 'edit') {
|
|
if (props.type === 'edit') {
|
|
|
- form.value.currentDepth = form.value.productionStatus.at(-1)?.endTimeWellDepth
|
|
|
|
|
|
|
+ form.value.currentDepth = form.value.reportDetails.at(-1)?.currentDepth
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
if (props.type === 'edit' && !props.noValidateStatus && res.status !== 0)
|
|
if (props.type === 'edit' && !props.noValidateStatus && res.status !== 0)
|
|
@@ -198,28 +203,31 @@ async function loadDetail(id: number) {
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const addProductionStatusRow = () => {
|
|
const addProductionStatusRow = () => {
|
|
|
- if (!form.value.productionStatus) {
|
|
|
|
|
- form.value.productionStatus = []
|
|
|
|
|
|
|
+ if (!form.value.reportDetails) {
|
|
|
|
|
+ form.value.reportDetails = []
|
|
|
}
|
|
}
|
|
|
- form.value.productionStatus.push({
|
|
|
|
|
- date: '',
|
|
|
|
|
- start_time: '',
|
|
|
|
|
- end_time: '',
|
|
|
|
|
|
|
+ form.value.reportDetails.push({
|
|
|
|
|
+ startTime: '',
|
|
|
|
|
+ endTime: '',
|
|
|
duration: 0,
|
|
duration: 0,
|
|
|
- endTimeWellDepth: 0,
|
|
|
|
|
- operatingMode: '',
|
|
|
|
|
- detail: ''
|
|
|
|
|
|
|
+ currentDepth: 0,
|
|
|
|
|
+ currentOperation: '',
|
|
|
|
|
+ constructionDetail: ''
|
|
|
})
|
|
})
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
const removeProductionStatusRow = (index: number) => {
|
|
const removeProductionStatusRow = (index: number) => {
|
|
|
- form.value.productionStatus?.splice(index, 1)
|
|
|
|
|
|
|
+ if (index === 0) {
|
|
|
|
|
+ message.warning('至少填写一条生产动态')
|
|
|
|
|
+ }
|
|
|
|
|
+ form.value.reportDetails?.splice(index, 1)
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
-const { ZmTable, ZmTableColumn } = useTableComponents<ProductionStatus>()
|
|
|
|
|
|
|
+const { ZmTable, ZmTableColumn } = useTableComponents<ReportDetail>()
|
|
|
|
|
|
|
|
function handleOpenForm(id: number, type: 'edit' | 'readonly') {
|
|
function handleOpenForm(id: number, type: 'edit' | 'readonly') {
|
|
|
formType.value = type
|
|
formType.value = type
|
|
|
|
|
+ form.value.reportDetails = []
|
|
|
emits('update:visible', true)
|
|
emits('update:visible', true)
|
|
|
loadDetail(id).then(() => {
|
|
loadDetail(id).then(() => {
|
|
|
nextTick(() => formRef.value?.clearValidate())
|
|
nextTick(() => formRef.value?.clearValidate())
|
|
@@ -295,7 +303,11 @@ const rules = reactive<FormRules>({
|
|
|
{ required: true, message: '请输入当前深度', trigger: ['change', 'blur'] },
|
|
{ required: true, message: '请输入当前深度', trigger: ['change', 'blur'] },
|
|
|
{ validator: validateLastCurrentDepth, trigger: ['change', 'blur'] }
|
|
{ validator: validateLastCurrentDepth, trigger: ['change', 'blur'] }
|
|
|
],
|
|
],
|
|
|
- productionStatus: [{ required: true, message: '请输入生产动态', trigger: ['blur', 'change'] }],
|
|
|
|
|
|
|
+ // productionStatus: [{ required: true, message: '请输入生产动态', trigger: ['blur', 'change'] }],
|
|
|
|
|
+ reportDetails: [{ required: true, message: '请填写生产动态', type: 'array' }],
|
|
|
|
|
+ constructionBrief: [
|
|
|
|
|
+ { required: true, message: '请填写施工简报', type: 'string', trigger: ['blur', 'change'] }
|
|
|
|
|
+ ],
|
|
|
|
|
|
|
|
// 生产时间绑定校验
|
|
// 生产时间绑定校验
|
|
|
drillingWorkingTime: [
|
|
drillingWorkingTime: [
|
|
@@ -391,6 +403,25 @@ const orange = computed(() => {
|
|
|
if (Math.abs(total - 24) > 0.01) return true
|
|
if (Math.abs(total - 24) > 0.01) return true
|
|
|
return false
|
|
return false
|
|
|
})
|
|
})
|
|
|
|
|
+
|
|
|
|
|
+const calculateDuration = (row: any) => {
|
|
|
|
|
+ if (!row.startTime || !row.endTime) {
|
|
|
|
|
+ row.duration = 0
|
|
|
|
|
+ return
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ const todayStr = dayjs().format('YYYY-MM-DD')
|
|
|
|
|
+ const start = dayjs(`${todayStr} ${row.startTime}`)
|
|
|
|
|
+ const end = dayjs(`${todayStr} ${row.endTime}`)
|
|
|
|
|
+
|
|
|
|
|
+ let diffMinutes = end.diff(start, 'minute')
|
|
|
|
|
+
|
|
|
|
|
+ if (diffMinutes < 0) {
|
|
|
|
|
+ diffMinutes += 1440
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ row.duration = Number((diffMinutes / 60).toFixed(2))
|
|
|
|
|
+}
|
|
|
</script>
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
<template>
|
|
@@ -399,6 +430,8 @@ const orange = computed(() => {
|
|
|
@update:model-value="emits('update:visible', $event)"
|
|
@update:model-value="emits('update:visible', $event)"
|
|
|
header-class="mb-0!"
|
|
header-class="mb-0!"
|
|
|
size="60%"
|
|
size="60%"
|
|
|
|
|
+ :close-on-click-modal="false"
|
|
|
|
|
+ :close-on-press-escape="false"
|
|
|
>
|
|
>
|
|
|
<template #header>
|
|
<template #header>
|
|
|
<span class="text-xl font-bold text-[var(--el-text-color-primary)]">
|
|
<span class="text-xl font-bold text-[var(--el-text-color-primary)]">
|
|
@@ -619,7 +652,7 @@ const orange = computed(() => {
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|
|
|
<div class="col-span-2">
|
|
<div class="col-span-2">
|
|
|
- <div class="flex items-center justify-between mb-2">
|
|
|
|
|
|
|
+ <div class="flex items-center justify-between mb-6">
|
|
|
<div class="flex items-center gap-2">
|
|
<div class="flex items-center gap-2">
|
|
|
<div class="bg-[var(--el-color-primary)] w-1 h-5 rounded-full"></div>
|
|
<div class="bg-[var(--el-color-primary)] w-1 h-5 rounded-full"></div>
|
|
|
<div class="text-lg font-medium text-[var(--el-text-color-primary)]">生产动态</div>
|
|
<div class="text-lg font-medium text-[var(--el-text-color-primary)]">生产动态</div>
|
|
@@ -627,158 +660,177 @@ const orange = computed(() => {
|
|
|
<el-button
|
|
<el-button
|
|
|
type="primary"
|
|
type="primary"
|
|
|
link
|
|
link
|
|
|
- icon="ep:plus"
|
|
|
|
|
|
|
+ :icon="Plus"
|
|
|
@click="addProductionStatusRow"
|
|
@click="addProductionStatusRow"
|
|
|
:disabled="isMainFieldDisabled"
|
|
:disabled="isMainFieldDisabled"
|
|
|
>
|
|
>
|
|
|
添加一行
|
|
添加一行
|
|
|
</el-button>
|
|
</el-button>
|
|
|
</div>
|
|
</div>
|
|
|
-
|
|
|
|
|
- <ZmTable :data="form.productionStatus!" :loading="false" class="mb-4">
|
|
|
|
|
- <ZmTableColumn label="日期" min-width="140" align="center">
|
|
|
|
|
- <template #default="{ row, $index }">
|
|
|
|
|
- <el-form-item
|
|
|
|
|
- :prop="`productionStatus.${$index}.date`"
|
|
|
|
|
- :rules="{ required: true, message: '请选择日期', trigger: 'change' }"
|
|
|
|
|
- class="mb-0!"
|
|
|
|
|
- >
|
|
|
|
|
- <el-date-picker
|
|
|
|
|
- v-model="row.date"
|
|
|
|
|
- type="date"
|
|
|
|
|
- value-format="YYYY-MM-DD"
|
|
|
|
|
- placeholder="选择日期"
|
|
|
|
|
- :clearable="false"
|
|
|
|
|
- class="!w-full"
|
|
|
|
|
- :disabled="isMainFieldDisabled"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </template>
|
|
|
|
|
- </ZmTableColumn>
|
|
|
|
|
-
|
|
|
|
|
- <ZmTableColumn label="开始时间" min-width="120" align="center">
|
|
|
|
|
- <template #default="{ row, $index }">
|
|
|
|
|
- <el-form-item
|
|
|
|
|
- :prop="`productionStatus.${$index}.start_time`"
|
|
|
|
|
- :rules="{ required: true, message: '必填', trigger: 'change' }"
|
|
|
|
|
- class="mb-0!"
|
|
|
|
|
- >
|
|
|
|
|
- <el-time-picker
|
|
|
|
|
- v-model="row.start_time"
|
|
|
|
|
- format="HH:mm"
|
|
|
|
|
- value-format="HH:mm"
|
|
|
|
|
- placeholder="开始"
|
|
|
|
|
- class="!w-full"
|
|
|
|
|
- :clearable="false"
|
|
|
|
|
- :disabled="isMainFieldDisabled"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </template>
|
|
|
|
|
- </ZmTableColumn>
|
|
|
|
|
-
|
|
|
|
|
- <ZmTableColumn label="结束时间" min-width="120" align="center">
|
|
|
|
|
- <template #default="{ row, $index }">
|
|
|
|
|
- <el-form-item
|
|
|
|
|
- :prop="`productionStatus.${$index}.end_time`"
|
|
|
|
|
- :rules="{ required: true, message: '必填', trigger: 'change' }"
|
|
|
|
|
- class="mb-0!"
|
|
|
|
|
- >
|
|
|
|
|
- <el-time-picker
|
|
|
|
|
- v-model="row.end_time"
|
|
|
|
|
- format="HH:mm"
|
|
|
|
|
- value-format="HH:mm"
|
|
|
|
|
- placeholder="结束"
|
|
|
|
|
- class="!w-full"
|
|
|
|
|
- :clearable="false"
|
|
|
|
|
- :disabled="isMainFieldDisabled"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </template>
|
|
|
|
|
- </ZmTableColumn>
|
|
|
|
|
-
|
|
|
|
|
- <ZmTableColumn label="时长(h)" min-width="100" align="center">
|
|
|
|
|
- <template #default="{ row, $index }">
|
|
|
|
|
- <el-form-item :prop="`productionStatus.${$index}.duration`" class="mb-0!">
|
|
|
|
|
- <el-input-number
|
|
|
|
|
- v-model="row.duration"
|
|
|
|
|
- :min="0"
|
|
|
|
|
- :controls="false"
|
|
|
|
|
- class="!w-full"
|
|
|
|
|
- :disabled="isMainFieldDisabled"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </template>
|
|
|
|
|
- </ZmTableColumn>
|
|
|
|
|
-
|
|
|
|
|
- <ZmTableColumn label="工况" min-width="120" align="center">
|
|
|
|
|
- <template #default="{ row, $index }">
|
|
|
|
|
- <el-form-item
|
|
|
|
|
- :prop="`productionStatus.${$index}.operatingMode`"
|
|
|
|
|
- :rules="{ required: true, message: '必填', trigger: 'blur' }"
|
|
|
|
|
- class="mb-0!"
|
|
|
|
|
- >
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="row.operatingMode"
|
|
|
|
|
- placeholder="请输入工况"
|
|
|
|
|
- :disabled="isMainFieldDisabled"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </template>
|
|
|
|
|
- </ZmTableColumn>
|
|
|
|
|
-
|
|
|
|
|
- <ZmTableColumn label="结束井深(m)" min-width="120" align="center">
|
|
|
|
|
- <template #default="{ row, $index }">
|
|
|
|
|
- <el-form-item :prop="`productionStatus.${$index}.endTimeWellDepth`" class="mb-0!">
|
|
|
|
|
- <el-input-number
|
|
|
|
|
- v-model="row.endTimeWellDepth"
|
|
|
|
|
- :min="0"
|
|
|
|
|
- :controls="false"
|
|
|
|
|
- class="!w-full"
|
|
|
|
|
|
|
+ <el-form-item prop="reportDetails">
|
|
|
|
|
+ <ZmTable :data="form.reportDetails!" :loading="false" class="mb-4">
|
|
|
|
|
+ <ZmTableColumn
|
|
|
|
|
+ label="日期"
|
|
|
|
|
+ :width="105"
|
|
|
|
|
+ cover-formatter
|
|
|
|
|
+ :real-value="
|
|
|
|
|
+ () => (form.createTime ? dayjs(form.createTime).format('YYYY-MM-DD') : '')
|
|
|
|
|
+ "
|
|
|
|
|
+ />
|
|
|
|
|
+
|
|
|
|
|
+ <ZmTableColumn :width="160" label="开始时间" prop="startTime">
|
|
|
|
|
+ <template #default="{ row, $index }">
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="$index >= 0"
|
|
|
|
|
+ class="mb-0!"
|
|
|
|
|
+ :prop="`reportDetails.${$index}.startTime`"
|
|
|
|
|
+ :rules="{
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择开始时间',
|
|
|
|
|
+ trigger: ['change', 'blur']
|
|
|
|
|
+ }"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-time-picker
|
|
|
|
|
+ v-model="row.startTime"
|
|
|
|
|
+ placeholder="选择开始时间"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ format="HH:mm"
|
|
|
|
|
+ value-format="HH:mm"
|
|
|
|
|
+ class="w-full!"
|
|
|
|
|
+ @change="calculateDuration(row)"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </ZmTableColumn>
|
|
|
|
|
+ <ZmTableColumn :width="160" label="结束时间" prop="endTime">
|
|
|
|
|
+ <template #default="{ row, $index }">
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="$index >= 0"
|
|
|
|
|
+ class="mb-0!"
|
|
|
|
|
+ :prop="`reportDetails.${$index}.endTime`"
|
|
|
|
|
+ :rules="{
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请选择结束时间',
|
|
|
|
|
+ trigger: ['change', 'blur']
|
|
|
|
|
+ }"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-time-picker
|
|
|
|
|
+ v-model="row.endTime"
|
|
|
|
|
+ placeholder="选择结束时间"
|
|
|
|
|
+ clearable
|
|
|
|
|
+ format="HH:mm"
|
|
|
|
|
+ value-format="HH:mm"
|
|
|
|
|
+ class="w-full!"
|
|
|
|
|
+ @change="calculateDuration(row)"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </ZmTableColumn>
|
|
|
|
|
+ <ZmTableColumn :width="80" label="时长(H)" prop="duration" />
|
|
|
|
|
+
|
|
|
|
|
+ <ZmTableColumn label="工况" min-width="120">
|
|
|
|
|
+ <template #default="{ row, $index }">
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="$index >= 0"
|
|
|
|
|
+ :prop="`reportDetails.${$index}.currentOperation`"
|
|
|
|
|
+ :rules="{ required: true, message: '请输入工况', trigger: ['change', 'blur'] }"
|
|
|
|
|
+ class="mb-0!"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="row.currentOperation"
|
|
|
|
|
+ type="textarea"
|
|
|
|
|
+ :autosize="{ minRows: 1 }"
|
|
|
|
|
+ resize="none"
|
|
|
|
|
+ show-word-limit
|
|
|
|
|
+ :maxlength="1000"
|
|
|
|
|
+ placeholder="请输入工况"
|
|
|
|
|
+ :disabled="isMainFieldDisabled"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </ZmTableColumn>
|
|
|
|
|
+
|
|
|
|
|
+ <ZmTableColumn label="结束井深(m)" min-width="80">
|
|
|
|
|
+ <template #default="{ row, $index }">
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="$index >= 0"
|
|
|
|
|
+ :prop="`reportDetails.${$index}.currentDepth`"
|
|
|
|
|
+ :rules="{
|
|
|
|
|
+ required: true,
|
|
|
|
|
+ message: '请输入结束井深',
|
|
|
|
|
+ trigger: ['blur']
|
|
|
|
|
+ }"
|
|
|
|
|
+ class="mb-0!"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-input-number
|
|
|
|
|
+ v-model="row.currentDepth"
|
|
|
|
|
+ :min="0"
|
|
|
|
|
+ :controls="false"
|
|
|
|
|
+ class="!w-full"
|
|
|
|
|
+ align="left"
|
|
|
|
|
+ placeholder="请输入结束井深"
|
|
|
|
|
+ :disabled="isMainFieldDisabled"
|
|
|
|
|
+ >
|
|
|
|
|
+ <template #suffix> m </template>
|
|
|
|
|
+ </el-input-number>
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </ZmTableColumn>
|
|
|
|
|
+
|
|
|
|
|
+ <ZmTableColumn label="详细描述" min-width="200" align="center">
|
|
|
|
|
+ <template #default="{ row, $index }">
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="$index >= 0"
|
|
|
|
|
+ :prop="`reportDetails.${$index}.constructionDetail`"
|
|
|
|
|
+ :rules="{ required: true, message: '请输入详细描述', trigger: 'blur' }"
|
|
|
|
|
+ class="mb-0!"
|
|
|
|
|
+ >
|
|
|
|
|
+ <el-input
|
|
|
|
|
+ v-model="row.constructionDetail"
|
|
|
|
|
+ type="textarea"
|
|
|
|
|
+ :autosize="{ minRows: 1 }"
|
|
|
|
|
+ resize="none"
|
|
|
|
|
+ show-word-limit
|
|
|
|
|
+ :maxlength="1000"
|
|
|
|
|
+ placeholder="请输入详细描述"
|
|
|
|
|
+ :disabled="isMainFieldDisabled"
|
|
|
|
|
+ />
|
|
|
|
|
+ </el-form-item>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </ZmTableColumn>
|
|
|
|
|
+
|
|
|
|
|
+ <ZmTableColumn label="操作" width="80" fixed="right" align="center">
|
|
|
|
|
+ <template #default="{ $index }">
|
|
|
|
|
+ <el-button
|
|
|
|
|
+ link
|
|
|
|
|
+ type="danger"
|
|
|
|
|
+ :icon="Delete"
|
|
|
|
|
+ @click="removeProductionStatusRow($index)"
|
|
|
:disabled="isMainFieldDisabled"
|
|
:disabled="isMainFieldDisabled"
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </template>
|
|
|
|
|
- </ZmTableColumn>
|
|
|
|
|
-
|
|
|
|
|
- <ZmTableColumn label="详细描述" min-width="200" align="center">
|
|
|
|
|
- <template #default="{ row, $index }">
|
|
|
|
|
- <el-form-item
|
|
|
|
|
- :prop="`productionStatus.${$index}.detail`"
|
|
|
|
|
- :rules="{ required: true, message: '必填', trigger: 'blur' }"
|
|
|
|
|
- class="mb-0!"
|
|
|
|
|
- >
|
|
|
|
|
- <el-input
|
|
|
|
|
- v-model="row.detail"
|
|
|
|
|
- placeholder="生产详情"
|
|
|
|
|
- :disabled="isMainFieldDisabled"
|
|
|
|
|
- />
|
|
|
|
|
- </el-form-item>
|
|
|
|
|
- </template>
|
|
|
|
|
- </ZmTableColumn>
|
|
|
|
|
-
|
|
|
|
|
- <ZmTableColumn label="操作" width="60" fixed="right" align="center">
|
|
|
|
|
- <template #default="{ $index }">
|
|
|
|
|
- <el-button
|
|
|
|
|
- link
|
|
|
|
|
- type="danger"
|
|
|
|
|
- @click="removeProductionStatusRow($index)"
|
|
|
|
|
- :disabled="isMainFieldDisabled"
|
|
|
|
|
- >
|
|
|
|
|
- 删除
|
|
|
|
|
- </el-button>
|
|
|
|
|
- </template>
|
|
|
|
|
- </ZmTableColumn>
|
|
|
|
|
- </ZmTable>
|
|
|
|
|
|
|
+ >
|
|
|
|
|
+ 删除
|
|
|
|
|
+ </el-button>
|
|
|
|
|
+ </template>
|
|
|
|
|
+ </ZmTableColumn>
|
|
|
|
|
+ </ZmTable>
|
|
|
|
|
+ </el-form-item>
|
|
|
</div>
|
|
</div>
|
|
|
|
|
|
|
|
- <el-form-item v-if="isApproval" class="col-span-2" label="当日生产简报" prop="remark">
|
|
|
|
|
|
|
+ <el-form-item
|
|
|
|
|
+ v-if="isApproval"
|
|
|
|
|
+ class="col-span-2"
|
|
|
|
|
+ label="当日施工简报"
|
|
|
|
|
+ prop="constructionBrief"
|
|
|
|
|
+ >
|
|
|
<el-input
|
|
<el-input
|
|
|
- v-model="form.remark"
|
|
|
|
|
|
|
+ v-model="form.constructionBrief"
|
|
|
type="textarea"
|
|
type="textarea"
|
|
|
- autosize
|
|
|
|
|
- maxlength="1000"
|
|
|
|
|
|
|
+ :autosize="{ minRows: 2 }"
|
|
|
|
|
+ show-word-limit
|
|
|
|
|
+ resize="none"
|
|
|
|
|
+ :maxlength="1000"
|
|
|
|
|
+ placeholder="请输入当日施工简报"
|
|
|
:disabled="formType === 'readonly'"
|
|
:disabled="formType === 'readonly'"
|
|
|
- placeholder="请输入当日生产简报"
|
|
|
|
|
/>
|
|
/>
|
|
|
</el-form-item>
|
|
</el-form-item>
|
|
|
|
|
|