Newer
Older
xc-business-system / src / views / quality / review / work / components / detail.vue
liyaguang on 5 Mar 6 KB bug修复
<!-- 管理评审工作详情页面 -->
<script name="QualityReviewWorkHandler" lang="ts" setup>
import type { FormInstance, FormRules, UploadUserFile } from 'element-plus'
import { ElLoading, ElMessage, ElMessageBox } from 'element-plus'
import dayjs from 'dayjs'
import fileList from './fileList.vue'
import addFileDialog from './addOtherDialog.vue'
import { getDictByCode } from '@/api/system/dict'
import useUserStore from '@/store/modules/user'
import { getUserList } from '@/api/system/user'
import { addReviewWork, detailReviewWork, updateReviewWork } from '@/api/quality/review/work'
const $route = useRoute()
const $router = useRouter()
const userStore = useUserStore()
const ruleFormRef = ref<FormInstance>() // from组件
const ruleForm = ref({
  yearTime: '',
  yearNum: '',
  workName: '',
  bizLabCode: '',
  beginTime: '',
  endTime: '',
  commanderId: '',
  currentStageName: '',
  commanderName: '',
  currentStage: '0',
  reviewFileList: [] as any,
}) // 表单
const rules = ref<FormRules>({
}) // 表单验证规则
const isShowHandler = ref(true)
onMounted(() => {
  detailReviewWork({ id: $route.query.id }).then((res) => {
    console.log(res.data, '详情')
    ruleForm.value = res.data
    isShowHandler.value = new Date(dayjs(ruleForm.value.endTime).format()).getTime() - new Date().getTime() > 0
  })
})
// const currentStageList = ref<{ id: string; value: string; name: string }[]>()// 归档状态+
// // 获取字典值
// const fetchDict = () => {
//   getDictByCode('managementReviewCurrentStage').then((res) => {
//     currentStageList.value = res.data
//   })
// }
// fetchDict()
// 编辑
const updateRow = () => {
  $router.push({
    path: '/qreviewwork/update',
    query: { ...$route.query },
  })
}
const { proxy } = getCurrentInstance() as any
const btnList = ref([
  {
    name: '创建管理评审计划',
    url: '/qreviewplan/create?approvalStatusName=全部',
  },
  {
    name: '创建质量管理体系运行报告',
    url: '/qreviewrun/create',
  },
  {
    name: '创建质量目标评测报告',
    url: '/qreviewtarget/create',
  },
  {
    name: '创建其他评审材料',
    url: 'other',
  },
  {
    name: '创建有效性综合分析报告',
    url: '/qrevieweffectiveness/create',
  },
  {
    name: '创建技术能力分析报告',
    url: '/qreviewtechnology/create',
  },
  {
    name: '创建会议记录',
    url: '/meetinglist/create',
  },
  {
    name: '创建管理审核报告',
    url: '/qreviewreport/create?approvalStatusName=全部',
  },
  {
    name: '创建纠正措施处理单',
    url: '/correcthandle/create?approvalStatusName=全部',
  },
  {
    name: '创建预防措施处理单',
    url: '/preventhandle/create',
  },
])
// 创建其他评审材料
const fileRefD = ref()
const shortcut = (url: string) => {
  if (url === 'other') {
    fileRefD.value?.initDialog({ handlerType: 'other' })
    return
  }
  $router.push({
    path: url,
    query: {
      data: JSON.stringify(ruleForm.value),
    },
  })
}
const confirm = () => {
  detailReviewWork({ id: $route.query.id }).then((res) => {
    console.log(res.data, '详情')
    ruleForm.value = res.data
  })
}
</script>

<template>
  <app-container style="overflow: hidden;">
    <!-- 创建其他评审材料 -->
    <add-file-dialog ref="fileRefD" @confirm="confirm" />
    <detail-page title="管理评审工作管理">
      <template #btns>
        <!-- <el-button v-if="proxy.hasPerm('/quality/review/work/update')" type="primary" @click="updateRow">
          编辑
        </el-button> -->
        <el-button v-if="proxy.hasPerm('/quality/review/work/download')" type="primary">
          下载
        </el-button>
        <el-button type="info" @click="() => $router.go(-1)">
          关闭
        </el-button>
      </template>
    </detail-page>
    <detail-block title="">
      <el-form ref="ruleFormRef" :model="ruleForm" :class="$route.path.includes('detail') ? 'isDetail' : ''" :rules="rules" label-position="right" label-width="120px" class="form" :disabled="$route.path.includes('detail')">
        <el-row :gutter="24" class="marg">
          <el-col :span="6">
            <el-form-item label="审核工作名称" prop="createName">
              <el-input v-model="ruleForm.workName" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="开始时间" prop="beginTime">
              <el-date-picker
                v-model="ruleForm.beginTime"
                type="date"
                placeholder="开始时间"
                style="width: 100%;"
                value-format="YYYY-MM-DD"
                format="YYYY-MM-DD"
              />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="结束时间" prop="endTime">
              <el-date-picker
                v-model="ruleForm.endTime"
                type="date"
                placeholder="结束时间"
                style="width: 100%;"
                value-format="YYYY-MM-DD"
                format="YYYY-MM-DD"
              />
            </el-form-item>
          </el-col>
        </el-row>
        <el-row :gutter="24" class="marg">
          <el-col :span="6">
            <el-form-item label="质量负责人" prop="commanderId">
              <el-input v-model="ruleForm.commanderName" />
            </el-form-item>
          </el-col>
          <el-col :span="6">
            <el-form-item label="归档状态" prop="currentStage">
              <el-input v-model="ruleForm.currentStageName" />
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </detail-block>
    <detail-block v-if="$route.path.includes('detail') && isShowHandler" title="快捷操作">
      <el-form :model="{}" label-width="120px">
        <el-row :gutter="24">
          <el-col :span="24">
            <el-form-item label=" ">
              <div class="btn-container">
                <el-button v-for="item in btnList" :key="item.name" type="primary" @click="shortcut(item.url)">
                  {{ item.name }}
                </el-button>
              </div>
            </el-form-item>
          </el-col>
        </el-row>
      </el-form>
    </detail-block>
    <file-list ref="fileRef" :data="ruleForm.reviewFileList" />
  </app-container>
</template>

<style lang="scss" scoped>
.user-container {
  width: 100%;
  height: 120px;
  overflow-y: scroll;
  border: 1px solid #dcdfe6;
  border-radius: 5px;
}

.mx-1 {
  margin-top: 5px;
  margin-right: 5px;
  margin-left: 5px;
}
</style>