<!-- 延迟/提前送检-编辑 --> <script lang="ts" setup name="PlanEdit"> import type { FormInstance, FormRules, UploadUserFile } from 'element-plus' import { ElLoading, ElMessage, ElMessageBox } from 'element-plus' import dayjs from 'dayjs' import planList from './table.vue' import { getDictByCode } from '@/api/system/dict' import useUserStore from '@/store/modules/user' import { SCHEDULE } from '@/utils/scheduleDict' import { editBtn, submitBtn } from '@/utils/applyBtns' const $route = useRoute() const $router = useRouter() const userStore = useUserStore() const ruleFormRef = ref<FormInstance>() // from组件 // 审批状态 (全部/审批等) const statusName = $route.query.statusName as string // 显示标题 const textMap: { [key: string]: string } = { update: '编辑', create: '新增', detail: '详情', } // 对话框类型:create,update const dialogStatus = ref('create') const ruleForm = ref({ }) // 表单 const rules = ref<FormRules>({ // planCategory: [{ required: true, message: '计划分类必选', trigger: ['blur', 'change'] }], // season: [{ required: true, message: '季度必填', trigger: ['blur', 'change'] }], // month: [{ required: true, message: '月份称必填', trigger: ['blur', 'change'] }], }) // 表单验证规则 // 弹窗初始化 const initDialog = () => { dialogStatus.value = $route.params.type as string ruleFormRef.value?.resetFields() if ($route.params.type === 'create') { } else { } } onMounted(() => { initDialog() }) // 关闭弹窗 const close = () => { $router.back() } const tableRef = ref() // 保存 const submitId = ref('') const saveForm = async (formEl: FormInstance | undefined) => { if (!formEl) { return } await formEl.validate((valid, fields) => { if (valid && tableRef.value.checkCertificateList()) { ElMessageBox.confirm( '确认保存吗?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning', }, ).then((res) => { // ruleForm.value.equipmentIds = tableRef.value.list // editPlan(ruleForm.value).then((res) => { // submitId.value = res.data // ElMessage.success('保存成功') // // close() // }) }) } }) } // 提交 const submitForm = () => { if (!submitId.value) { ElMessage.warning('请先保存') return false } ElMessageBox.confirm( '确认提交吗?', '提示', { confirmButtonText: '确认', cancelButtonText: '取消', type: 'warning', }, ).then((res) => { // submitPlan({ id: submitId.value, formId: SCHEDULE.METERING_PLAN_APPROVAL }).then((res) => { // ElMessage.success('已提交') // close() // }) }) } // 取消 const resetForm = (formEl: FormInstance | undefined) => { formEl?.resetFields() close() } </script> <template> <app-container style="overflow: hidden;"> <approval-dialog ref="approvalDialogRef" @on-success="() => { $router.back() }" /> <detail-page class="base-info-device" :title="`计量计划-${textMap[dialogStatus]}`"> <template #btns> <el-button v-if="submitBtn(statusName, dialogStatus)" type="primary" @click="submitForm()"> 提交 </el-button> <el-button v-if="submitBtn(statusName, dialogStatus)" type="primary" @click="saveForm(ruleFormRef)"> 保存 </el-button> <el-button type="info" @click="resetForm(ruleFormRef)"> 关闭 </el-button> </template> </detail-page> <detail-block-com> <el-form ref="ruleFormRef" :model="ruleForm" :rules="rules" label-position="right" label-width="110px" class="form" :class="[dialogStatus === 'detail' ? 'isDetail' : '']" :disabled="dialogStatus === 'detail'" > <el-row :gutter="24" class="marg"> <el-col :span="6"> <el-form-item label="申请编号" prop="planNo"> <el-input v-model.trim="ruleForm.planNo" placeholder="系统自动生成" disabled /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="申请名称" prop="year"> <el-input v-model.trim="ruleForm.planName" placeholder="计划名称" disabled /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="创建人" prop="createUserName"> <el-input v-model.trim="ruleForm.createUserName" disabled /> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="创建时间" prop="createTime"> <el-date-picker v-model="ruleForm.createTime" type="date" format="YYYY-MM-DD HH:mm:ss" value-format="YYYY-MM-DD HH:mm:ss" placeholder="请选择创建时间" class="normal-date" style="width: 100%;" disabled /> </el-form-item> </el-col> </el-row> <el-row :gutter="24" class="marg"> <el-col :span="12"> <el-form-item label="提前送检原因" prop="remark"> <el-input v-model.trim="ruleForm.remark" /> </el-form-item> </el-col> </el-row> </el-form> </detail-block-com> <detail-block-com> <plan-list ref="tableRef" :data="[]" :status="$route.params.type as string" /> </detail-block-com> </app-container> </template> <style lang="scss" scoped> // 样式 </style>