Просмотр исходного кода

feature(硬件交付工单): 硬件交付-安装工单流程优化

lk 2 лет назад
Родитель
Сommit
31d39cd6c5

+ 192 - 105
src/views/work/deliver/components/detailWork.vue

@@ -1,28 +1,29 @@
 <template>
-  <el-dialog :title="title" :visible.sync="dialogFormVisible" @close="close">
-    <el-form ref="form" :model="form" :rules="rules" style="margin: 0px">
-      <el-row :gutter="20" style="margin: 0px">
-        <el-col :span="12">
-          <el-form-item label="客户名称:" style="margin: 0px">
-            {{ theDeliverOrder.custName }}
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="项目名称:" style="margin: 0px">
-            {{ theDeliverOrder.projectName }}
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="合同编号:" style="margin: 0px">
-            {{ theDeliverOrder.contractCode }}
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
-          <el-form-item label="工单编号:" style="margin: 0px">
-            {{ theDeliverOrder.orderCode }}
-          </el-form-item>
-        </el-col>
-        <el-col v-if="theProgress.progressType != ''" :span="12">
+  <div>
+    <el-dialog :title="title" :visible.sync="dialogFormVisible" @close="close">
+      <el-form ref="form" :model="form" :rules="rules" style="margin-top: -24px">
+        <el-row :gutter="20" style="margin: 0px">
+          <el-col :span="12">
+            <el-form-item label="客户名称:" style="margin: 0px">
+              {{ theDeliverOrder.custName }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="项目名称:" style="margin: 0px">
+              {{ theDeliverOrder.projectName }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="合同编号:" style="margin: 0px">
+              {{ theDeliverOrder.contractCode }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="12">
+            <el-form-item label="工单编号:" style="margin: 0px">
+              {{ theDeliverOrder.orderCode }}
+            </el-form-item>
+          </el-col>
+          <!-- <el-col v-if="theProgress.progressType != ''" :span="12">
           <el-form-item label="要求发货时间:" style="margin: 0px">
             {{ parseTime(theDeliverOrder.requiredDeliveryTime, '{y}-{m}-{d}') }}
           </el-form-item>
@@ -31,117 +32,168 @@
           <el-form-item label="收货信息:" style="margin: 0px">
             {{ theDeliverOrder.receivingInfo }}
           </el-form-item>
-        </el-col>
-        <el-col v-if="theProgress.progressType != ''" :span="24">
-          <el-form-item label="特殊要求说明:" style="margin: 0px">
-            {{ theDeliverOrder.specialRequirements }}
-          </el-form-item>
-        </el-col>
-        <el-col :span="12">
+        </el-col> -->
+          <el-col v-if="theProgress.progressType != ''" :span="24">
+            <el-form-item label="特殊要求说明:" style="margin: 0px">
+              {{ theDeliverOrder.specialRequirements }}
+            </el-form-item>
+          </el-col>
+          <!-- <el-col :span="12">
           <el-form-item label="任务标题:" style="margin: 0px">
             {{ form.progressTitle }}
           </el-form-item>
-        </el-col>
-        <el-col v-if="form.progressType != ''" :span="12">
+        </el-col> -->
+          <!-- <el-col v-if="form.progressType != ''" :span="12">
           <el-form-item label="任务类型:" style="margin: 0px">
             <span v-show="form.progressType == '10'">发货任务单</span>
             <span v-show="form.progressType == '20'">组装任务单</span>
             <span v-show="form.progressType == '30'">部署安装单</span>
           </el-form-item>
-        </el-col>
-        <el-col :span="12">
+        </el-col> -->
+          <!-- <el-col :span="12">
           <el-form-item label="负责人:" style="margin: 0px">
             {{ form.principalPerson }}
           </el-form-item>
-        </el-col>
-        <el-col :span="12">
+        </el-col> -->
+          <!-- <el-col :span="12">
           <el-form-item label="优先级:" style="margin: 0px">
             <span v-show="form.progressLevel == '10'">最高</span>
             <span v-show="form.progressLevel == '20'">普通</span>
             <span v-show="form.progressLevel == '30'">较低</span>
           </el-form-item>
-        </el-col>
-        <el-col :span="12">
+        </el-col> -->
+          <!-- <el-col :span="12">
           <el-form-item label="开始/截止日期:">
             {{ parseTime(form.startDate, '{y}-{m}-{d}') }} 至
             {{ parseTime(form.endDate, '{y}-{m}-{d}') }}
           </el-form-item>
-        </el-col>
-        <el-col :span="24">
-          <el-table ref="productTable" :data="products" style="width: 100%">
-            <el-table-column label="产品名称" prop="productName" />
-            <el-table-column label="产品编号" prop="productCode" />
-            <el-table-column v-if="!workId" label="数量" prop="num" />
-            <el-table-column v-if="form.progressType == '10'" label="组装/采购数量" prop="productNum" />
-            <el-table-column v-if="form.progressType != '10'" label="数量" prop="productNum" />
-            <el-table-column v-if="form.progressType == '10'" label="获取方式" prop="operateType" />
-          </el-table>
-        </el-col>
-        <el-col v-if="theProgress && theProgress.deliverStatus >= 30" :span="12">
-          <el-form-item label="快递名称:" style="margin-top: 10px; margin-bottom: 0px">
-            {{ theProgress.expressName }}
-          </el-form-item>
-        </el-col>
-        <el-col v-if="theProgress && theProgress.deliverStatus >= 30" :span="12">
-          <el-form-item label="快递单号:" style="margin-top: 10px; margin-bottom: 0px">
-            {{ theProgress.expressCode }}
-          </el-form-item>
-        </el-col>
-        <el-col v-if="theProgress && theProgress.deliverStatus >= 30" :span="12">
-          <el-form-item label="预计到货时间:" style="margin: 0px">
-            {{ parseTime(theProgress.estimatedArrivalTime, '{y}-{m}-{d}') }}
-          </el-form-item>
-        </el-col>
-        <el-col v-if="theProgress && theProgress.deliverStatus >= 40" :span="12">
-          <el-form-item label="到货时间:" style="margin: 0px">
-            {{ parseTime(theProgress.arrivalTime, '{y}-{m}-{d}') }}
-          </el-form-item>
-        </el-col>
-        <el-col :span="24" style="margin-top: 10px">
-          <el-button
-            v-if="theProgress && theProgress.assembleFileName != ''"
-            size="mini"
-            type="primary"
-            @click="showFile(theProgress.assembleFileUrl, theProgress.assembleFileName)">
-            组装报告:{{ theProgress.assembleFileName }}
-          </el-button>
-          <el-button
-            v-if="theProgress && theProgress.checkFileName != ''"
-            size="mini"
-            type="primary"
-            @click="showFile(theProgress.checkFileUrl, theProgress.checkFileName)">
-            验收单:{{ theProgress.checkFileName }}
-          </el-button>
-          <el-button
-            v-if="theProgress && theProgress.installCheckFileName != ''"
-            size="mini"
-            type="primary"
-            @click="showFile(theProgress.installCheckFileUrl, theProgress.installCheckFileName)">
-            安装验收单:{{ theProgress.installCheckFileName }}
-          </el-button>
-        </el-col>
-        <el-col :span="24">
-          <el-form-item label="备注:" style="margin: 0px">
-            {{ form.remark }}
-          </el-form-item>
-        </el-col>
-      </el-row>
-    </el-form>
-    <template #footer>
-      <el-button @click="close">关 闭</el-button>
-    </template>
-  </el-dialog>
+        </el-col> -->
+          <el-col v-if="form.progressType == '30'" :span="12">
+            <el-form-item label="期望安装时间:" style="margin: 0px">
+              {{ parseTime(form.expectInstallTime, '{y}-{m}-{d}') }}
+            </el-form-item>
+          </el-col>
+          <el-col v-if="form.progressType == '30'" :span="12">
+            <el-form-item label="安装时间:" style="margin: 0px">
+              {{ parseTime(form.installBeginTime, '{y}-{m}-{d}') }} 至
+              {{ parseTime(form.installEndTime, '{y}-{m}-{d}') }}
+            </el-form-item>
+          </el-col>
+          <el-col v-if="form.progressType == '30'" :span="12">
+            <el-form-item label="审核人:" style="margin: 0px">
+              {{ form.auditUser }}
+            </el-form-item>
+          </el-col>
+          <el-col v-if="form.progressType == '30'" :span="12">
+            <el-form-item label="审核时间:" style="margin: 0px">
+              {{ form.auditTime }}
+            </el-form-item>
+          </el-col>
+          <el-col v-if="form.progressType == '30'" :span="24">
+            <el-form-item label="审核描述:" style="margin: 0px">
+              {{ form.auditDesc }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="24">
+            <el-table ref="productTable" :data="products" style="width: 100%; margin-top: 10px">
+              <el-table-column label="产品名称" prop="productName" />
+              <el-table-column label="产品编号" prop="productCode" />
+              <el-table-column v-if="!workId" label="数量" prop="num" />
+              <el-table-column v-if="form.progressType == '10'" label="组装/采购数量" prop="productNum" />
+              <el-table-column v-if="form.progressType != '10'" label="数量" prop="productNum" />
+              <el-table-column v-if="form.progressType == '10'" label="获取方式" prop="operateType" />
+              <el-table-column v-if="form.progressType == '30'" label="安装图片" prop="pictures">
+                <template #default="{ row }">
+                  <el-button v-if="row.pictures != ''" type="text" @click="showPictures(row)">查看</el-button>
+                  <el-button
+                    v-if="theProgress.progressStatus == '20' || theProgress.progressStatus == '30'"
+                    type="text"
+                    @click="showUploadPicturesDialog(row)">
+                    上传
+                  </el-button>
+                </template>
+              </el-table-column>
+              <el-table-column v-if="form.progressType == '30'" label="安装描述" prop="desc">
+                <template #default="{ row }">
+                  <el-input
+                    v-model="row.desc"
+                    :disabled="theProgress.progressStatus != '20' && theProgress.progressStatus != '30'"
+                    @change="updateProduceInfo(row)" />
+                </template>
+              </el-table-column>
+            </el-table>
+          </el-col>
+          <el-col v-if="theProgress && theProgress.deliverStatus >= 30" :span="12">
+            <el-form-item label="快递名称:" style="margin-top: 10px; margin-bottom: 0px">
+              {{ theProgress.expressName }}
+            </el-form-item>
+          </el-col>
+          <el-col v-if="theProgress && theProgress.deliverStatus >= 30" :span="12">
+            <el-form-item label="快递单号:" style="margin-top: 10px; margin-bottom: 0px">
+              {{ theProgress.expressCode }}
+            </el-form-item>
+          </el-col>
+          <el-col v-if="theProgress && theProgress.deliverStatus >= 30" :span="12">
+            <el-form-item label="预计到货时间:" style="margin: 0px">
+              {{ parseTime(theProgress.estimatedArrivalTime, '{y}-{m}-{d}') }}
+            </el-form-item>
+          </el-col>
+          <el-col v-if="theProgress && theProgress.deliverStatus >= 40" :span="12">
+            <el-form-item label="到货时间:" style="margin: 0px">
+              {{ parseTime(theProgress.arrivalTime, '{y}-{m}-{d}') }}
+            </el-form-item>
+          </el-col>
+          <el-col :span="24" style="margin-top: 10px">
+            <el-button
+              v-if="theProgress && theProgress.assembleFileName != ''"
+              size="mini"
+              type="primary"
+              @click="showFile(theProgress.assembleFileUrl, theProgress.assembleFileName)">
+              组装报告:{{ theProgress.assembleFileName }}
+            </el-button>
+            <el-button
+              v-if="theProgress && theProgress.checkFileName != ''"
+              size="mini"
+              type="primary"
+              @click="showFile(theProgress.checkFileUrl, theProgress.checkFileName)">
+              验收单:{{ theProgress.checkFileName }}
+            </el-button>
+            <el-button
+              v-if="theProgress && theProgress.installCheckFileName != ''"
+              size="mini"
+              type="primary"
+              @click="showFile(theProgress.installCheckFileUrl, theProgress.installCheckFileName)">
+              安装验收单:{{ theProgress.installCheckFileName }}
+            </el-button>
+          </el-col>
+          <el-col :span="24">
+            <el-form-item label="备注:" style="margin: 0px">
+              {{ form.remark }}
+            </el-form-item>
+          </el-col>
+        </el-row>
+      </el-form>
+      <template #footer>
+        <el-button @click="close">关 闭</el-button>
+      </template>
+    </el-dialog>
+    <!-- 产品图片 -->
+    <pictures ref="pictures" @submit="uploadPictures" />
+  </div>
 </template>
 
 <script>
   import orderWorkApi from '@/api/work/deliver'
+  import deliverWorkApi from '@/api/work/deliverWork'
   import to from 'await-to-js'
+  import pictures from './pictrues.vue'
 
   export default {
     name: 'WorkOrderFeedback',
-    components: {},
+    components: { pictures },
     data() {
       return {
+        theProduct: {},
         theDeliverOrder: {},
         theProgress: {},
         form: {
@@ -154,6 +206,13 @@
           principalPersonId: '',
           principalPerson: '',
           remark: undefined,
+          expectInstallTime: '',
+          installBeginTime: '',
+          installEndTime: '',
+          auditUser: '',
+          auditTime: '',
+          auditDesc: '',
+          deliverStatus: '',
         },
         rules: {
           progressTitle: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
@@ -187,6 +246,13 @@
           principalPersonId: row.principalPersonId,
           principalPerson: row.principalPerson,
           remark: row.remark,
+          expectInstallTime: row.expectInstallTime,
+          installBeginTime: row.installBeginTime,
+          installEndTime: row.installEndTime,
+          auditUser: row.auditUser,
+          auditTime: row.auditTime,
+          auditDesc: row.auditDesc,
+          deliverStatus: row.deliverStatus,
         }
         this.getOrderDetails()
         this.dialogFormVisible = true
@@ -239,6 +305,27 @@
           }
         }
       },
+      // 保存产品信息
+      async updateProduceInfo(row) {
+        const [err, res] = await to(
+          deliverWorkApi.updateProgressProductInfo({ id: row.id, pictures: row.pictures, desc: row.desc })
+        )
+        if (err) return
+      },
+      // 展示图片
+      showPictures(row) {
+        this.$refs['pictures'].showPictures(row.pictures)
+      },
+      // 上传图片
+      showUploadPicturesDialog(row) {
+        this.theProduct = row
+        this.$refs['pictures'].uploadPictures(row)
+      },
+      // 更新图片信息
+      uploadPictures(pictures) {
+        this.theProduct.pictures = pictures
+        this.updateProduceInfo(this.theProduct)
+      },
     },
   }
 </script>

+ 181 - 0
src/views/work/deliver/components/pictrues.vue

@@ -0,0 +1,181 @@
+<template>
+  <div>
+    <el-dialog title="上传图片" :visible.sync="dialogFormVisible" width="550px">
+      <el-form label-position="top">
+        <el-form-item label="" prop="fileUrl">
+          <el-upload
+            ref="uploadRef"
+            accept=".jpg,.jpeg,.gif,.png,.jfif"
+            action="#"
+            :before-upload="
+              (file) => {
+                return beforeAvatarUpload(file)
+              }
+            "
+            :file-list="fileList"
+            :http-request="uploadRequest"
+            multiple
+            :on-preview="showPicture">
+            <el-button size="mini" type="primary">点击上传</el-button>
+          </el-upload>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <el-button @click="dialogFormVisible = false">取消</el-button>
+        <el-button type="primary" @click="save">保存</el-button>
+      </template>
+    </el-dialog>
+    <el-dialog title="查看" :visible.sync="pictureShowVisible" width="550px">
+      <div style="height: 350px; overflow: auto">
+        <el-row v-for="pic in pictureDetalis" :key="pic.url">
+          <el-col :span="24">
+            <el-image fit="contain" :src="pic.url" />
+          </el-col>
+        </el-row>
+      </div>
+      <template #footer>
+        <el-button @click="pictureShowVisible = false">关闭</el-button>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+  import axios from 'axios'
+  import asyncUploadFile from '@/utils/uploadajax'
+
+  export default {
+    name: 'Pictrues',
+    components: {},
+    props: {},
+    data() {
+      return {
+        // 查看图片
+        pictureDetalis: [],
+        pictureShowVisible: false,
+        // 编辑图片
+        fileMap: {},
+        fileList: [],
+        product: {},
+        dialogFormVisible: false,
+        fileSettings: {
+          // 文件配置信息
+          fileSize: 52428800,
+          fileTypes: '.doc,.docx,.zip,.xls,.xlsx,.rar,.jpg,.jpeg,.gif,.png,.jfif,.txt',
+          pictureSize: 52428800,
+          pictureTypes: '.jpg,.jpeg,.gif,.png,.jfif',
+          types: '.doc,.docx,.zip,.xls,.xlsx,.rar,.jpg,.jpeg,.gif,.png,.jfif,.mp4,.txt',
+          videoSize: 104857600,
+          videoType: '.mp4',
+        },
+      }
+    },
+    mounted() {},
+    methods: {
+      // 展示图片
+      showPictures(pictures) {
+        this.pictureDetalis.splice(0, this.pictureDetalis.length)
+        if (pictures) {
+          this.pictureDetalis = JSON.parse(pictures)
+        }
+        this.pictureShowVisible = true
+      },
+      // 打开弹窗
+      uploadPictures(row) {
+        this.product = row
+        this.fileList.splice(0, this.fileList.length)
+        if (this.$refs.uploadRef) {
+          this.$refs.uploadRef.clearFiles() //去掉文件列表
+        }
+        if (row.pictures) {
+          this.fileList = JSON.parse(row.pictures)
+        }
+        this.dialogFormVisible = true
+      },
+      // 上传附件
+      beforeAvatarUpload(file) {
+        let flag1 = file.size < this.fileSettings.pictureSize
+        if (!flag1) {
+          this.$message.warning('文件过大,请重新选择!')
+          return false
+        }
+        let flag2 = this.fileSettings.pictureTypes.split(',').includes('.' + file.name.split('.').pop())
+        if (!flag2) {
+          this.$message.warning('文件类型不符合,请重新选择!')
+          return false
+        }
+        return true
+      },
+      // 上传
+      uploadRequest(option) {
+        let _this = this
+        let url = process.env.VUE_APP_UPLOAD_WEED
+        axios
+          .post(url)
+          .then(function (res) {
+            if (res.data && res.data.fid && res.data.fid !== '') {
+              option.action = `${process.env.VUE_APP_PROTOCOL}${res.data.publicUrl}/${res.data.fid}`
+              asyncUploadFile(option).then(() => {
+                _this.fileMap[option.file.uid] = option.action
+              })
+            } else {
+              _this.$message({
+                type: 'warning',
+                message: '未上传成功!请刷新界面重新上传!',
+              })
+            }
+          })
+          .catch(function () {
+            _this.$message({
+              type: 'warning',
+              message: '未上传成功!请重新上传!',
+            })
+          })
+      },
+      // 查看附件
+      showPicture(picture) {
+        // 直接查看
+        if (picture.url) {
+          window.open(picture.url)
+        } else {
+          window.open(this.fileMap[picture.uid])
+        }
+        // 下载附件
+        // let fileName = picture.name
+        // const xhr = new XMLHttpRequest()
+        // xhr.open('GET', picture.url, true)
+        // xhr.responseType = 'blob' // 通过文件下载url拿到对应的blob对象
+        // xhr.onload = () => {
+        //   if (xhr.status === 200) {
+        //     let link = document.createElement('a')
+        //     let body = document.querySelector('body')
+        //     link.href = window.URL.createObjectURL(xhr.response)
+        //     link.download = fileName
+        //     link.click()
+        //     this.$message.success('下载成功')
+        //     body.removeChild(link)
+        //     window.URL.revokeObjectURL(link.href)
+        //   }
+        // }
+        // xhr.send()
+      },
+      // 保存数据
+      save() {
+        let temp = []
+        let pictures = ''
+        for (let item of this.$refs.uploadRef.uploadFiles) {
+          if (item.url) {
+            temp.push({ name: item.name, url: item.url })
+          } else {
+            temp.push({ name: item.name, url: this.fileMap[item.uid] })
+          }
+        }
+        if (temp.length > 0) {
+          pictures = JSON.stringify(temp)
+        }
+        this.dialogFormVisible = false
+        this.$emit('submit', pictures)
+      },
+    },
+  }
+</script>

+ 7 - 7
src/views/work/deliver/plan.vue

@@ -172,7 +172,12 @@
           </el-table-column>
           <el-table-column align="center" fixed="right" label="操作" show-overflow-tooltip width="180">
             <template #default="{ row }">
-              <el-button v-if="row.progressStatus != 30" type="text" @click="handleWorkEdit(row)">编辑</el-button>
+              <el-button
+                v-if="row.progressStatus != 30 && row.progressStatus != 40"
+                type="text"
+                @click="handleWorkEdit(row)">
+                编辑
+              </el-button>
               <!-- 非部署安装任务的开始 -->
               <el-button
                 v-if="
@@ -266,12 +271,7 @@
                 完成
               </el-button>
               <el-button
-                v-if="
-                  row.progressStatus == 20 &&
-                  row.progressType == '30' &&
-                  row.deliverStatus == '20' &&
-                  userId == row.principalPersonId
-                "
+                v-if="row.progressStatus == 20 && row.progressType == '30' && userId == row.principalPersonId"
                 type="text"
                 @click="handleComplete(row)">
                 完成

+ 75 - 3
src/views/work/deliver/progress.vue

@@ -100,13 +100,46 @@
       </el-table-column>
       <el-table-column align="center" fixed="right" label="操作" show-overflow-tooltip width="120">
         <template #default="{ row }">
-          <el-button v-if="row.progressStatus != 30" type="text" @click="handleWorkEdit(row)">编辑</el-button>
           <el-button
-            v-if="row.progressStatus == 10 && userId == row.principalPersonId"
+            v-if="row.progressStatus != 30 && row.progressStatus != 40"
+            type="text"
+            @click="handleWorkEdit(row)">
+            编辑
+          </el-button>
+          <!-- 非部署安装任务的开始 -->
+          <el-button
+            v-if="
+              row.progressStatus == 10 &&
+              workOrderStatus != 20 &&
+              curPlanStatus != 30 &&
+              row.progressType != '30' &&
+              userId == row.principalPersonId
+            "
             type="text"
             @click="handleStartWork(row)">
             开始
           </el-button>
+          <!-- 部署安装任务的开始  有销售发起,填写期望安装时间 -->
+          <!-- 销售人员没有任务单权限 -->
+          <!-- <el-button
+            v-if="
+              row.progressStatus == 10 &&
+              workOrderStatus != 20 &&
+              curPlanStatus != 30 &&
+              row.progressType == '30' &&
+              userId == saleId
+            "
+            type="text"
+            @click="handleStartInstallWork(row)">
+            开始
+          </el-button> -->
+          <!-- 安装人员确认安装时间 -->
+          <el-button
+            v-if="row.progressStatus == 15 && row.progressType == '30' && userId == row.principalPersonId"
+            type="text"
+            @click="confirmInstallInfo(row)">
+            确认安装时间
+          </el-button>
           <el-button
             v-if="
               row.progressStatus == 20 &&
@@ -164,6 +197,14 @@
             @click="handleComplete(row)">
             完成
           </el-button>
+          <!-- 部署安装任务审核 -->
+          <el-button
+            v-show="row.progressStatus == 30 && row.progressType == '30'"
+            v-permissions="['order:delivery:work:auditinstall']"
+            type="text"
+            @click="auditInstall(row)">
+            审核
+          </el-button>
           <!-- <el-button v-show="row.progressStatus == 10" type="text" @click="handleDelete(row)">删除</el-button> -->
         </template>
       </el-table-column>
@@ -190,6 +231,12 @@
     <edit-work ref="editWork" @fetch-data="fetchData" />
     <!-- 详情 -->
     <detailWork ref="detailWork" />
+    <!-- 销售发起部署安装任务 -->
+    <StartInstall ref="StartInstall" @fetch-data="fetchWorkListPage1" />
+    <!-- 确认安装信息 -->
+    <ConfirmInstall ref="ConfirmInstall" @fetch-data="fetchWorkListPage1" />
+    <!-- 安装审核 -->
+    <AuditInstall ref="AuditInstall" @fetch-data="fetchWorkListPage1" />
   </div>
 </template>
 
@@ -203,10 +250,23 @@
   import inspect from '@/views/work/deliver/components/inspect'
   import EditWork from '@/views/work/deliver/components/editWork'
   import detailWork from '@/views/work/deliver/components/detailWork'
+  import StartInstall from '@/views/work/deliver/components/startInstall'
+  import ConfirmInstall from '@/views/work/deliver/components/confirmInstall'
+  import AuditInstall from '@/views/work/deliver/components/auditInstall'
 
   export default {
     name: 'Progress',
-    components: { TableTool, completeProgress, deliver, inspect, EditWork, detailWork },
+    components: {
+      TableTool,
+      completeProgress,
+      deliver,
+      inspect,
+      EditWork,
+      detailWork,
+      StartInstall,
+      ConfirmInstall,
+      AuditInstall,
+    },
     data() {
       return {
         progressStatusObj: {
@@ -430,6 +490,18 @@
             console.log('取消输入')
           })
       },
+      // 部署安装任务开始
+      handleStartInstallWork(row) {
+        this.$refs['StartInstall'].open(row)
+      },
+      // 确认安装时间
+      confirmInstallInfo(row) {
+        this.$refs['ConfirmInstall'].open(row)
+      },
+      // 安装审核
+      auditInstall(row) {
+        this.$refs['AuditInstall'].open(row)
+      },
       // 完成工作项
       async handleFinishWork(row) {
         this.$prompt('你确定要完成当前任务吗', '提示', {