chris преди 1 година
родител
ревизия
ceed43afde
променени са 4 файла, в които са добавени 211 реда и са изтрити 5 реда
  1. 8 0
      src/api/quality.js
  2. 7 3
      src/views/modules/msg-center/approve-add-or-update.vue
  3. 183 0
      src/views/modules/quality/first-detail.vue
  4. 13 2
      src/views/modules/quality/first.vue

+ 8 - 0
src/api/quality.js

@@ -9,6 +9,14 @@ export function getList (params) {
   })
 }
 
+// 首件鉴定详情
+export function getFirstDetail (authenticateId) {
+  return request({
+    url: request.adornUrl(`/biz-service/first/info/${authenticateId}`),
+    method: 'get'
+  })
+}
+
 // 不合格审理单列表
 export function getDisList (params) {
   return request({

+ 7 - 3
src/views/modules/msg-center/approve-add-or-update.vue

@@ -45,9 +45,9 @@
     <div v-show="businessType === 'project_estimate'">
       <cus-quoted-detail ref="cusQuotedDetail" @approveFinished="approveFinished" @onChose="onChose"/>
     </div>
-<!--    <div v-show="businessType === 'first_identify_flow'">-->
-<!--      <cus-quoted-detail ref="cusQuotedDetail" @approveFinished="approveFinished" @onChose="onChose"/>-->
-<!--    </div>-->
+    <div v-show="businessType === 'first_identify_flow'">
+      <first-detail ref="firstDetail" @approveFinished="approveFinished" @onChose="onChose"/>
+    </div>
   </div>
 </template>
 
@@ -67,9 +67,11 @@
   import CommunicateDetail from '@/views/modules/cus/communicate-detail'
   import DisqualificationDetail from '@/views/modules/quality/disqualification-detail'
   import CusQuotedDetail from '@/views/modules/cus/quoted-detail'
+  import FirstDetail from '@/views/modules/quality/first-detail'
 export default {
     name: 'approve-add-or-update',
     components: {
+      FirstDetail,
       CommunicateDetail,
       InventoryDetail,
       stockOrderDetail,
@@ -131,6 +133,8 @@ export default {
           this.display ? this.$refs.disqualificationDetail.init(this.businessId) : this.$refs.disqualificationDetail.init(this.businessId, businessType)
         } else if (this.businessType === 'project_estimate') {
           this.display ? this.$refs.cusQuotedDetail.init(this.businessId) : this.$refs.cusQuotedDetail.init(this.businessId, businessType)
+        } else if (this.businessType === 'first_identify_flow') {
+          this.display ? this.$refs.firstDetail.init(this.businessId) : this.$refs.firstDetail.init(this.businessId, businessType)
         } else {
           this.$message.error('流程类别不支持,请联系管理员!')
         }

+ 183 - 0
src/views/modules/quality/first-detail.vue

@@ -0,0 +1,183 @@
+<template>
+  <div>
+    <div class="my-title">查看</div>
+    <div style="margin-left: 20px; margin-right: 20px">
+      <!-- 工作流 -->
+      <div v-show="dataForm.workFlowBusinessExt">
+        <el-steps
+          :active="
+            dataForm.workFlowBusinessExt &&
+            dataForm.workFlowBusinessExt.workFlowProcessStepList
+              ? dataForm.workFlowBusinessExt.workFlowProcessStepList.length + 2
+              : 0
+          "
+          align-center
+          style="margin-bottom: 20px"
+        >
+          <template v-for="(item, i) in stepList">
+            <el-step
+              :icon="item.icon"
+              :title="item.title"
+              :description="item.description"
+            ></el-step>
+          </template>
+        </el-steps>
+        <el-collapse style="margin-bottom: 20px">
+          <el-collapse-item>
+            <template slot="title">
+              <span style="color: red">审批日志(展开查看更多):</span>
+            </template>
+            <template v-for="(item, i) in logList">
+              <div>
+                {{ ++i }}:{{ item.approverName }} {{ item.createTime }}
+                {{ item.approvalValue }}
+              </div>
+            </template>
+          </el-collapse-item>
+        </el-collapse>
+      </div>
+      <div v-if="isFlow">
+        <approve-component ref="approve" @approveFinished="approveFinished" />
+      </div>
+      <e-desc title="基本信息" column="3">
+        <e-desc-item label="首件鉴定编码">{{ dataForm.authenticateCode }}</e-desc-item>
+        <e-desc-item label="任务单编码">{{ dataForm.orderCode }}</e-desc-item>
+        <e-desc-item label="物料名称">{{ dataForm.productName }}</e-desc-item>
+
+        <e-desc-item label="物料编号">{{ dataForm.productNumber }}</e-desc-item>
+        <e-desc-item label="批次号">{{ dataForm.batchNumber }}</e-desc-item>
+        <e-desc-item label="评审状态">{{dataForm.approveState?approveStateOption.find(item => item.value === dataForm.approveState).label:''}}</e-desc-item>
+      </e-desc>
+      <e-desc label="首件生产流程记录表">
+        <e-desc-item span="3" label="首件生产流程记录表">
+          <div v-for="(item, index) in dataForm.attachList1" style="display: inline">
+            <span v-if="index > 0">, </span>
+            <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
+          </div>
+        </e-desc-item>
+      </e-desc>
+      <e-desc label="首件生产过程原始记录">
+        <e-desc-item span="3" label="首件生产过程原始记录">
+          <div v-for="(item, index) in dataForm.attachList2" style="display: inline">
+            <span v-if="index > 0">, </span>
+            <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
+          </div>
+        </e-desc-item>
+      </e-desc>
+      <e-desc label="首件鉴定检验报告">
+        <e-desc-item span="3" label="首件鉴定检验报告">
+          <div v-for="(item, index) in dataForm.attachList3" style="display: inline">
+            <span v-if="index > 0">, </span>
+            <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
+          </div>
+        </e-desc-item>
+      </e-desc>
+      <e-desc label="首件鉴定审查报告">
+        <e-desc-item span="3" label="首件鉴定审查报告">
+          <div v-for="(item, index) in dataForm.attachList4" style="display: inline">
+            <span v-if="index > 0">, </span>
+            <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
+          </div>
+        </e-desc-item>
+      </e-desc>
+      <e-desc label="首件鉴定评审结论">
+        <e-desc-item span="3" label="首件鉴定评审结论">
+          <div v-for="(item, index) in dataForm.attachList5" style="display: inline">
+            <span v-if="index > 0">, </span>
+            <a :key="item.fileName + index" type="primary" href="#" @click="previewFile(item.fileName, item.url)">{{ item.fileName }}</a>
+          </div>
+        </e-desc-item>
+      </e-desc>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="onChose">返回</el-button>
+    </span>
+    <!-- 文件预览 -->
+    <preview-component v-if="previewVisible" ref="preview"/>
+  </div>
+</template>
+
+<script>
+import {getFirstDetail} from '@/api/quality'
+import { dealStepData, dealStepLogs } from '@/api/util'
+import EDesc from '../common/e-desc'
+import EDescItem from '../common/e-desc-item'
+import ApproveComponent from '../common/approve-component'
+import UploadComponent from '../common/upload-component-v2'
+import {approveStateOption} from '@/utils/enums'
+import PreviewComponent from '@/views/modules/common/preview-component'
+export default {
+  name: 'first-detail',
+  components: { PreviewComponent, EDesc, EDescItem, ApproveComponent, UploadComponent },
+  data () {
+    return {
+      visible: false,
+      isFlow: false,
+      previewVisible: false,
+      id: 0,
+      approveStateOption: approveStateOption,
+      dataForm: {},
+      stepList: [],
+      logList: []
+    }
+  },
+  mounted () {},
+  methods: {
+    onChose () {
+      this.$emit('onChose')
+    },
+    async init (id, businessType) {
+      this.visible = true
+      this.isFlow = !!(businessType && businessType !== '')
+      this.id = id || 0
+      this.dataForm = {
+        workFlowBusinessExt: null
+      }
+      this.stepList = []
+      this.logList = []
+      this.getDetails(businessType)
+    },
+    getDetails (businessType) {
+      getFirstDetail(this.id).then(({ data }) => {
+        if (data && data.code === '200' && data.data) {
+          this.dataForm = data.data
+          // 流程图展示
+          dealStepData(
+            data.data.workFlowBusinessExt.workFlowProcessStepList,
+            this.stepList
+          )
+          dealStepLogs(
+            data.data.workFlowBusinessExt.processLogList,
+            this.logList
+          )
+          // 初始化审批Form
+          this.showApproveForm(businessType, this.id)
+        }
+      })
+    },
+      // 初始化审批Form
+    showApproveForm (businessType, businessId) {
+      if (this.isFlow) {
+        this.$nextTick(() => {
+          this.$refs.approve.init(businessType, businessId)
+        })
+      }
+    },
+    // 审批完成
+    approveFinished () {
+      this.onChose()
+      this.$emit('approveFinished')
+    },
+    // 预览
+    previewFile (fileName, url) {
+      this.previewVisible = true
+      this.$nextTick(() => {
+        this.$refs.preview.init(fileName, url)
+      })
+    }
+  }
+}
+</script>
+
+<style lang="scss" scoped>
+</style>

+ 13 - 2
src/views/modules/quality/first.vue

@@ -1,7 +1,7 @@
 <!-- 首件鉴定 -->
 <template>
   <div>
-    <template v-if="!updateVisible">
+    <template v-if="!updateVisible && !detailVisible">
       <el-form :inline="true" :model="dataForm" @keyup.enter.native="search()">
         <el-form-item label="物料名称">
           <el-input
@@ -200,6 +200,7 @@
           label="操作"
         >
           <template slot-scope="scope">
+            <el-button type="text" size="small" @click="detailHandle(scope.row.authenticateId)">详情</el-button>
             <el-button
               v-if="isAuth('first:authenticate:update')"
               type="text"
@@ -223,6 +224,7 @@
     </template>
     <quality-first-update ref="update" v-if="updateVisible" @onChose="onChose" />
     <attach-detail-dialog ref="attachDetail" v-if="attachVisible" />
+    <first-detail ref="detail" v-if="detailVisible"/>
   </div>
 </template>
 
@@ -231,13 +233,15 @@ import {getList} from '@/api/quality'
 import QualityFirstUpdate from './first-update'
 import AttachDetailDialog from '../common/attach-detail-dialog'
 import {approveStateOption} from '@/utils/enums'
+import FirstDetail from '@/views/modules/quality/first-detail'
 export default {
   name: 'quality-first',
-  components: {QualityFirstUpdate, AttachDetailDialog},
+  components: {FirstDetail, QualityFirstUpdate, AttachDetailDialog},
   data () {
     return {
       updateVisible: false,
       attachVisible: false,
+      detailVisible: false,
       approveStateOption: approveStateOption,
       dataForm: {},
       dataList: [],
@@ -254,6 +258,7 @@ export default {
   methods: {
     onChose () {
       this.updateVisible = false
+      this.detailVisible = false
     },
     search () {
       this.pageIndex = 1
@@ -306,6 +311,12 @@ export default {
       this.$nextTick(() => {
         this.$refs.update.init(item)
       })
+    },
+    detailHandle (id) {
+      this.detailVisible = true
+      this.$nextTick(() => {
+        this.$refs.detail.init(id)
+      })
     }
   }
 }