Newer
Older
smart-metering-front / src / views / business / fieldTest / record / edit.vue
<!-- 现场检测审批详情 -->
<script lang="ts" setup name="FieldTestRecordDetail">
import { ref } from 'vue'
import dayjs from 'dayjs'
import type { IForm } from './record-interface'
import useUserStore from '@/store/modules/user'
const user = useUserStore() // 用户信息
const textMap: { [key: string]: string } = {
  edit: '编辑',
  add: '新建',
  detail: '详情',
}// 字典
const $router = useRouter() // 关闭页面使用
const $route = useRoute() // 路由参数
const pageType = ref('add') // 页面类型: add, edit, detail
const infoId = ref('') // 列表id
const form = ref<IForm>({
  logNo: '', // 记录单编号
  recorder: '', // 记录人
  recorderName: '', // 记录人名称
  recordTime: '', // 记录时间
  siteExecutiveId: '', // 现场检测id
  siteExecutiveNo: '', // 现场检测编号
  customerName: '', // 委托方名称
  customerAddress: '', // 委托方地址
  phone: '', // 委托方电话
  deliverer: '', // 送检人
  delivererTel: '', // 送样人联系方式
  executiveAddress: '', // 现场工作地点
  outputVoltage: '', // 输出电压
  zeroGroundVoltage: '', // 零地电压
  temperature: '', // 温度
  humidity: '', // 湿度
  remark: '', // 备注
})
// 校验规则
const formRules = ref({
  siteExecutiveNo: [{ required: true, message: '要求现场检测编号不能为空', trigger: ['blur', 'change'] }],
  executiveAddress: [{ required: true, message: '要求现场工作地点不能为空', trigger: ['blur', 'change'] }],
  outputVoltage: [{ required: true, message: '要求供电电压不能为空', trigger: ['blur', 'change'] }],
  zeroGroundVoltage: [{ required: true, message: '要求零地电压不能为空', trigger: ['blur', 'change'] }],
  temperature: [{ required: true, message: '要求温度不能为空', trigger: ['blur', 'change'] }],
  humidity: [{ required: true, message: '要求相对湿度不能为空', trigger: ['blur', 'change'] }],
})
// ----------------------------------路由参数--------------------------------------------
if ($route.params && $route.params.type) {
  pageType.value = $route.params.type as string
  console.log(pageType.value)

  if ($route.params.id) {
    infoId.value = $route.params.id as string
  }
}
// ------------------------------------选择现场检测-------------------------------------------------
const choose = () => {

}
// 关闭新增页面的回调
const close = () => {
  $router.back()
}
// 保存
const save = () => {

}

onMounted(() => {
  form.value.recorder = user.id// 记录人
  form.value.recorderName = user.name // 记录人名字
  form.value.recordTime = dayjs().format('YYYY-MM-DD HH-mm:ss')// 申请时间
})
</script>

<template>
  <app-container>
    <detail-page :title="`现场检测记录-${textMap[pageType]}`">
      <template #btns>
        <el-button v-if="pageType !== 'detail'" type="primary" @click="save">
          保存
        </el-button>
        <!-- <el-button v-if="pageType === 'detail'" type="primary">
          打印
        </el-button> -->
        <el-button type="info" @click="close">
          关闭
        </el-button>
      </template>
      <el-form
        ref="ruleFormRef"
        :model="form"
        label-width="120"
        label-position="right"
        :rules="formRules"
      >
        <el-row :gutter="24">
          <el-col :span="8">
            <el-form-item label="记录单编号:" prop="logNo">
              <el-input v-model="form.logNo" class="full-width-input" disabled placeholder="系统自动生成" />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="记录人:" prop="recorderName">
              <el-input
                v-model="form.recorderName"
                class="full-width-input"
                :placeholder="pageType === 'detail' ? '' : '请输入记录人'"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="记录时间:" prop="recordTime">
              <el-date-picker
                v-model="form.recordTime"
                type="datetime"
                format="YYYY-MM-DD HH:mm:ss"
                value-format="YYYY-MM-DD HH:mm:ss"
                class="full-width-input"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="现场检测编号:" prop="siteExecutiveNo">
              <el-input v-model="form.siteExecutiveNo" class="full-width-input" disabled placeholder="系统自动生成">
                <template v-if="pageType !== 'detail'" #append>
                  <el-button size="small" @click="choose">
                    选择
                  </el-button>
                </template>
              </el-input>
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="委托方名称:" prop="customerName">
              <el-input
                v-model="form.customerName"
                class="full-width-input"
                :placeholder="pageType === 'detail' ? '' : '请输入委托方名称'"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
              />
            </el-form-item>
          </el-col>
          <!-- <el-col :span="8">
            <el-form-item label="委托方电话" prop="phone">
              <el-input
                class="full-width-input"
                v-model="form.phone"
                :placeholder="pageType === 'detail' ? '' : '请输入委托方电话'"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
              />
            </el-form-item>
          </el-col> -->
          <el-col :span="8">
            <el-form-item label="联系人" prop="deliverer">
              <el-input
                v-model="form.deliverer"
                class="full-width-input"
                :placeholder="pageType === 'detail' ? '' : '请输入联系人'"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="联系方式" prop="delivererTel">
              <el-input
                v-model="form.delivererTel"
                class="full-width-input"
                :placeholder="pageType === 'detail' ? '' : '请输入联系方式'"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
              />
            </el-form-item>
          </el-col>
          <el-col :span="16">
            <el-form-item label="委托方地址:" prop="customerAddress">
              <el-input
                v-model="form.customerAddress"
                class="full-width-input"
                type="textarea"
                autosize
                :placeholder="pageType === 'detail' ? '' : '请输入委托方地址'"
                :class="{ 'detail-input': pageType === 'detail' }"
                disabled
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24">
          <el-col :span="8">
            <el-form-item label="现场工作地点" prop="executiveAddress">
              <el-input
                v-model="form.executiveAddress"
                class="full-width-input"
                placeholder="请输入现场工作地点"
                :disabled="pageType === 'detail'"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="供电电压" prop="outputVoltage">
              <el-input
                v-model="form.outputVoltage"
                class="full-width-input"
                placeholder="请输入供电电压"
                :disabled="pageType === 'detail'"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="零地电压" prop="zeroGroundVoltage">
              <el-input
                v-model="form.zeroGroundVoltage"
                class="full-width-input"
                placeholder="请输入零地电压"
                :disabled="pageType === 'detail'"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="温度" prop="temperature">
              <el-input
                v-model="form.temperature"
                class="full-width-input"
                placeholder="请输入温度"
                :disabled="pageType === 'detail'"
              />
            </el-form-item>
          </el-col>
          <el-col :span="8">
            <el-form-item label="相对湿度" prop="humidity">
              <el-input
                v-model="form.humidity"
                class="full-width-input"
                placeholder="请输入相对湿度"
                :disabled="pageType === 'detail'"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24">
          <el-col :span="16">
            <el-form-item label="备注:" prop="remark">
              <el-input
                v-model="form.remark"
                class="full-width-input"
                autosize
                type="textarea"
                :disabled="pageType === 'detail'"
              />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </detail-page>
  </app-container>
</template>