Newer
Older
smart-metering-front / src / views / business / schedule / task / components / distributeDialog.vue
Stephanie on 24 Feb 2023 3 KB feat<views>: 实验室检测联调
<script setup lang="ts" name="DistributeDialog">
import processConfig from './processConfig.vue'
import { getDictByCode } from '@/api/system/dict'
import type { dictType } from '@/global'
import { getTaskDetail } from '@/api/business/task'
// 任务分发弹窗

// 自定义方法:close关闭弹窗
const emit = defineEmits(['close'])
const dialogVisible = ref(false) // 弹窗显示
const sampleId = ref('') // 样品id
const orderId = ref('') // 委托单id

// 委托书-证书类别列表
const certificationTypes = ref<dictType[]>([])
// 获取字典值
function getDict() {
  getDictByCode('certificationType').then((response) => {
    certificationTypes.value = response.data
  })
}

getDict()
// 样品详情
const sampleDetail = ref({
  sampleName: '压力表',
  mesureContent: '压力、ip68',
  certifications: ['1', '2'],
  remark: '这是备注',
  measureProcessList: [],
  measureSendBackList: [],
})

// 获取分发详情
const getInfo = () => {
  // 获取任务详情
  getTaskDetail({ orderId: orderId.value, sampleId: sampleId.value }).then((res) => {
    sampleDetail.value.sampleName = res.data.sampleName
    sampleDetail.value.mesureContent = res.data.mesureContent
    sampleDetail.value.remark = res.data.remark
    sampleDetail.value.certifications = res.data.certifications
    sampleDetail.value.measureProcessList = res.data.measureProcessList
    sampleDetail.value.measureSendBackList = res.data.measureSendBackList
  })
}
// 初始化弹窗
const initDialog = (orderid: string, sampleid: string) => {
  dialogVisible.value = true
  sampleId.value = sampleid
  orderId.value = orderid
  getInfo()
}

// 流程配置组件
const processConfigRef = ref()
// 批量添加流程按钮点击
const batchProcessAdd = () => {
  processConfigRef.value.batchProcessAdd()
}
// 保存流程按钮点击
const saveProcess = () => {
  processConfigRef.value.saveProcess()
  emit('close')
}
function cancel() {
  dialogVisible.value = false
}
// ----------------------- 以下是暴露的方法内容 ----------------------------
defineExpose({ initDialog })
</script>

<template>
  <el-dialog v-model="dialogVisible" title="任务分发" width="1000" @close="cancel">
    <div class="simple-info">
      <div class="simple-info-line">
        <span class="label">样品名称:</span>
        <el-input v-model="sampleDetail.sampleName" disabled />
      </div>
      <div class="simple-info-line">
        <span class="label">证书类别:</span>
        <el-checkbox-group v-model="sampleDetail.certifications" disabled>
          <el-checkbox v-for="item in certificationTypes" :key="item.value" :label="item.value">
            {{ item.name }}
          </el-checkbox>
        </el-checkbox-group>
      </div>
      <div class="simple-info-line">
        <span class="label">检定项目:</span>
        <el-input v-model="sampleDetail.mesureContent" disabled />
      </div>
      <div class="simple-info-line">
        <span class="label">备注:</span>
        <el-input v-model="sampleDetail.remark" disabled />
      </div>
    </div>
    <el-button type="primary" style="margin-top: 5px; margin-bottom: 10px;" @click="batchProcessAdd">
      批量添加
    </el-button>
    <process-config v-if="orderId" ref="processConfigRef" :order-id="orderId" :sample-id="sampleId" :list="sampleDetail.measureProcessList" @save-over="cancel" />
    <template #footer>
      <el-button type="primary" @click="saveProcess">
        确定
      </el-button>
      <el-button @click="cancel">
        取消
      </el-button>
    </template>
  </el-dialog>
</template>

<style lang="scss" scoped>
//  样式
.simple-info {
  margin-top: -10px;
  margin-bottom: 10px;

  .simple-info-line {
    display: flex;
    align-items: center;
    margin: 7px 0;

    .label {
      width: 90px;
    }
  }
}
</style>