zhengnaiwen_citu 5 月之前
父節點
當前提交
ef627d87af
共有 1 個文件被更改,包括 32 次插入2 次删除
  1. 32 2
      src/views/workOrder/components/ApprovalDetails.vue

+ 32 - 2
src/views/workOrder/components/ApprovalDetails.vue

@@ -1,5 +1,5 @@
 <template>
-  <m-dialog ref="dialog" title="申请单" v-bind="$attrs" v-on="$listeners" hideFooter>
+  <m-dialog ref="dialog" title="申请单" v-bind="$attrs" v-on="$listeners" hideFooter @close="onClose">
     <el-form label-width="120px" v-loading="loading">
       <el-form-item label="审核状态">
         <div class="justify-between align-center" :class="{'d-flex': itemData.status === 0}">
@@ -23,11 +23,23 @@
             <template slot="label">
               {{ item.title }}
             </template>
-            {{ items[item.column] }}
+            <template v-if="item.columnType === 1">
+              <m-button size="mini" type="orange" @click="onOpenPreview(items[item.column])">查看附件 ({{ items[item.column]?.length ?? 0 }})</m-button>
+            </template>
+            <template v-else>
+              {{items[item.column]}}
+            </template>
           </el-descriptions-item>
         </el-descriptions>
       </el-form-item>
     </el-form>
+    <el-image
+      ref="hiddenPreview"
+      style="display: none;"
+      :src="previewUrl.length ? previewUrl[0] : ''"
+      :preview-src-list="previewUrl"
+      @load="onLoad"
+    ></el-image>
     <template #button-after>
       <slot name="button-after" :item="itemData"></slot>
     </template>
@@ -45,6 +57,7 @@ export default {
   name: 'ApprovalDetails',
   data () {
     return {
+      previewUrl: [],
       statusList: APPROVAL_STATUS,
       headers: [],
       items: [],
@@ -53,6 +66,23 @@ export default {
     }
   },
   methods: {
+    onClose () {
+      this.previewUrl = []
+      this.$emit('close')
+    },
+    onLoad (e) {
+      if (!this.previewUrl.length) {
+        return
+      }
+      const img = this.$refs.hiddenPreview.$el.querySelector('img')
+      img && img.click()
+    },
+    onOpenPreview (items) {
+      this.previewUrl = []
+      this.$nextTick(() => {
+        this.previewUrl = items
+      })
+    },
     close () {
       this.$refs.dialog.close()
     },