Sfoglia il codice sorgente

fix(硬件交付工单)硬件交付工单优化及bug处理:
1.硬件交付工单页面优化:增加详情页面,展示工单的基本信息。
2.点击发货后,销售处拉取不出到货验收的按钮操作。
3.硬件交付工单增加按照项目状态查询。
4.审批钉钉回调结果不显示。

lk 2 anni fa
parent
commit
b7433ddaf5

+ 244 - 0
src/views/work/deliver/components/detailWork.vue

@@ -0,0 +1,244 @@
+<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">
+          <el-form-item label="要求发货时间:" style="margin: 0px">
+            {{ parseTime(theDeliverOrder.requiredDeliveryTime, '{y}-{m}-{d}') }}
+          </el-form-item>
+        </el-col>
+        <el-col v-if="theProgress.progressType != ''" :span="12">
+          <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-form-item label="任务标题:" style="margin: 0px">
+            {{ form.progressTitle }}
+          </el-form-item>
+        </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-form-item label="负责人:" style="margin: 0px">
+            {{ form.principalPerson }}
+          </el-form-item>
+        </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-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>
+</template>
+
+<script>
+  import orderWorkApi from '@/api/work/deliver'
+  import to from 'await-to-js'
+
+  export default {
+    name: 'WorkOrderFeedback',
+    components: {},
+    data() {
+      return {
+        theDeliverOrder: {},
+        theProgress: {},
+        form: {
+          progressTitle: undefined,
+          progressType: '',
+          progressContext: '',
+          startDate: '',
+          endDate: '',
+          progressLevel: '10',
+          principalPersonId: '',
+          principalPerson: '',
+          remark: undefined,
+        },
+        rules: {
+          progressTitle: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
+          progressContext: [{ required: true, message: '不能为空', trigger: ['blur', 'change'] }],
+          principalPerson: [{ required: true, trigger: 'change', message: '请选择负责人' }],
+        },
+        dialogFormVisible: false,
+        planId: 0,
+        workId: 0,
+        title: '',
+        orderId: '',
+        products: [],
+        allProducts: [],
+      }
+    },
+    mounted() {},
+    methods: {
+      open(planId, orderId, row) {
+        this.theProgress = row
+        this.planId = planId
+        this.orderId = orderId
+        this.workId = row.id
+        this.title = '详情'
+        this.form = {
+          progressTitle: row.progressTitle,
+          progressType: row.progressType,
+          progressContext: row.progressContext,
+          startDate: row.startDate,
+          endDate: row.endDate,
+          progressLevel: row.progressLevel,
+          principalPersonId: row.principalPersonId,
+          principalPerson: row.principalPerson,
+          remark: row.remark,
+        }
+        this.getOrderDetails()
+        this.dialogFormVisible = true
+      },
+      close() {
+        this.dialogFormVisible = false
+      },
+      // 查看附件
+      showFile(url, fileName) {
+        const xhr = new XMLHttpRequest()
+        xhr.open('GET', 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()
+      },
+      // 获取详细信息
+      async getOrderDetails() {
+        this.products = []
+        this.allProducts = []
+        let progressProducts = []
+        this.theDeliverOrder = {}
+        const [err, res] = await to(orderWorkApi.getDeliverOrder({ id: this.orderId }))
+        if (err) return
+        if (res.code == 200 && res.data) {
+          this.theDeliverOrder = res.data
+          this.allProducts = res.data.product
+          progressProducts = res.data.progressProducts ? res.data.progressProducts : []
+        }
+        for (let p of progressProducts) {
+          p = JSON.parse(JSON.stringify(p))
+          // 10发货任务单/20组装任务单/30部署安装单
+          if (
+            (p.deliverProgressId == this.workId && this.form.progressType == '10') ||
+            (p.assembleProgressId == this.workId && this.form.progressType == '20') ||
+            (p.installProgressId == this.workId && this.form.progressType == '30')
+          ) {
+            this.products.push(p)
+          }
+        }
+      },
+    },
+  }
+</script>

+ 1 - 12
src/views/work/deliver/components/editWork.vue

@@ -7,11 +7,6 @@
             <el-input v-model="form.progressTitle" :disabled="!editable" placeholder="请输入任务标题" />
           </el-form-item>
         </el-col>
-        <!-- <el-col :span="12">
-          <el-form-item label="任务内容" prop="progressContext">
-            <el-input v-model="form.progressContext" placeholder="请输入任务内容" />
-          </el-form-item>
-        </el-col> -->
         <el-col v-if="form.progressType != ''" :span="12">
           <el-form-item label="任务类型" prop="progressType">
             <el-select v-model="form.progressType" disabled placeholder="请选择任务类型" style="width: 100%">
@@ -356,7 +351,7 @@
           this.allProducts = res.data.product
           progressProducts = res.data.progressProducts ? res.data.progressProducts : []
         }
-        if (this.form.progressType == '10') {
+        if (this.form.progressType == '10' && this.workId == 0) {
           orderWorkApi
             .getHardwareUserInfo({ name: '丁岳嵩' })
             .then((res) => {
@@ -395,9 +390,6 @@
           ) {
             this.selfProducts.push(p)
           }
-          // if (p.isComplete == '20') {
-          //   this.installProducts.push(p)
-          // }
         }
         this.$forceUpdate()
         if (this.workId != 0) {
@@ -407,9 +399,6 @@
             this.productEditable = true
             this.products = this.deliverProducts
           }
-          //  else if (this.form.progressType == '30') {
-          //   this.products = this.installProducts
-          // }
         }
       },
     },

+ 15 - 3
src/views/work/deliver/index.vue

@@ -9,6 +9,16 @@
           <el-form-item prop="custName">
             <el-input v-model="queryForm.custName" placeholder="客户名称" @keyup.enter.native="restFetchData" />
           </el-form-item>
+          <el-form-item prop="orderStatus">
+            <el-select
+              v-model="queryForm.orderStatus"
+              clearable
+              placeholder="工单状态"
+              style="width: 100%"
+              @keyup.enter.native="fetchData">
+              <el-option v-for="item in deliveryStatusOptions" :key="item.key" :label="item.value" :value="item.key" />
+            </el-select>
+          </el-form-item>
           <el-form-item prop="orderType">
             <el-select
               v-model="queryForm.orderType"
@@ -143,6 +153,7 @@
           contractCode: '',
           custName: '',
           orderType: '',
+          orderStatus: '',
           projectManName: '',
           pageNum: 1,
           pageSize: 10,
@@ -304,10 +315,11 @@
         this.queryForm = {
           pageNum: 1,
           pageSize: 10,
-          name: '',
-          orderTypeName: '',
+          contractCode: '',
+          custName: '',
+          orderType: '',
           orderStatus: '',
-          assignUserName: '',
+          projectManName: '',
         }
         this.fetchData()
       },

+ 12 - 4
src/views/work/deliver/plan.vue

@@ -172,6 +172,7 @@
           </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 &&
@@ -265,7 +266,7 @@
           @size-change="handleSizeChange" />
       </div>
       <edit-plan ref="plan" @fetch-data="fetchPlanList" />
-      <edit-work ref="work" @fetch-data="fetchWorkListPage1" />
+      <edit-work ref="editWork" @fetch-data="fetchWorkListPage1" />
       <select-status ref="status" @fetch-data="fetchPlanList" />
       <!-- 完成 -->
       <completeProgress ref="complete" @fetch-data="fetchWorkListPage1" />
@@ -273,6 +274,8 @@
       <deliver ref="deliver" @fetch-data="fetchPlanList" />
       <!-- 验收 -->
       <inspect ref="inspect" @fetch-data="fetchWorkListPage1" />
+      <!-- 详情 -->
+      <detailWork ref="detailWork" />
     </div>
   </div>
 </template>
@@ -284,6 +287,7 @@
   import TableTool from '@/components/table/TableTool'
   import EditPlan from '@/views/work/deliver/components/editPlan'
   import EditWork from '@/views/work/deliver/components/editWork'
+  import detailWork from '@/views/work/deliver/components/detailWork'
   import selectStatus from './components/selectStatus'
   import to from 'await-to-js'
   import completeProgress from '@/views/work/deliver/components/completeProgress'
@@ -293,7 +297,7 @@
 
   export default {
     name: 'Product',
-    components: { EditPlan, EditWork, TableTool, selectStatus, completeProgress, deliver, inspect },
+    components: { EditPlan, EditWork, detailWork, TableTool, selectStatus, completeProgress, deliver, inspect },
     data() {
       return {
         orderType: '',
@@ -520,11 +524,15 @@
       },
       // 新增工作项
       openAddWork(type) {
-        this.$refs.work.open(this.curPlanId, parseInt(this.id), type, true)
+        this.$refs.editWork.open(this.curPlanId, parseInt(this.id), type, true)
+      },
+      //工作项详情
+      handleWorkEdit(row) {
+        this.$refs['editWork'].open(this.planId, parseInt(this.id), '', row.progressStatus != 30, row)
       },
       //工作项详情
       handleWorkDetail(row) {
-        this.$refs['work'].open(this.planId, parseInt(this.id), '', row.progressStatus != 30, row)
+        this.$refs['detailWork'].open(this.planId, parseInt(this.id), row)
       },
       // 开始工作项
       async handleStartWork(row) {

+ 13 - 4
src/views/work/deliver/progress.vue

@@ -100,6 +100,7 @@
       </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"
             type="text"
@@ -185,8 +186,10 @@
     <deliver ref="deliver" @fetch-data="fetchData" />
     <!-- 验收 -->
     <inspect ref="inspect" @fetch-data="fetchData" />
-    <!-- 编辑、详情 -->
-    <edit-work ref="work" @fetch-data="fetchData" />
+    <!-- 编辑 -->
+    <edit-work ref="editWork" @fetch-data="fetchData" />
+    <!-- 详情 -->
+    <detailWork ref="detailWork" />
   </div>
 </template>
 
@@ -199,10 +202,11 @@
   import deliver from '@/views/work/deliver/components/deliver'
   import inspect from '@/views/work/deliver/components/inspect'
   import EditWork from '@/views/work/deliver/components/editWork'
+  import detailWork from '@/views/work/deliver/components/detailWork'
 
   export default {
     name: 'Progress',
-    components: { TableTool, completeProgress, deliver, inspect, EditWork },
+    components: { TableTool, completeProgress, deliver, inspect, EditWork, detailWork },
     data() {
       return {
         progressStatusObj: {
@@ -322,6 +326,7 @@
       async fetchData() {
         this.listLoading = true
         const params = { ...this.queryForm }
+        params.isPage = '1'
         const [err, res] = await to(deliverWorkApi.list({ ...params }))
         this.listLoading = false
         if (err) return (this.listLoading = false)
@@ -351,8 +356,12 @@
         this.fetchData()
       },
       //工作项详情
+      handleWorkEdit(row) {
+        this.$refs['editWork'].open(row.planId, row.deliverOrderId, '', row.progressStatus != 30, row)
+      },
+      //工作项详情
       handleWorkDetail(row) {
-        this.$refs['work'].open(row.planId, row.deliverOrderId, '', row.progressStatus != 30, row)
+        this.$refs['detailWork'].open(row.planId, row.deliverOrderId, row)
       },
       // 获取任务类型
       getProgressType(type) {