ソースを参照

添加上传附件功能

lex 3 年 前
コミット
0821f9d7aa

+ 54 - 45
src/api/process/work-order.js

@@ -1,134 +1,143 @@
-import request from '@/utils/request'
-import qs from 'qs'
+import request from "@/utils/request";
+import qs from "qs";
 
 // 流程结构
 export function processStructure(params) {
   return request({
-    url: '/api-oa/api/v1/work-order/process-structure',
-    method: 'get',
+    url: "/api-oa/api/v1/work-order/process-structure",
+    method: "get",
     params
-  })
+  });
 }
 
 // 新建工单
 export function createWorkOrder(data) {
   return request({
-    url: '/api-oa/api/v1/work-order/create',
-    method: 'post',
+    url: "/api-oa/api/v1/work-order/create",
+    method: "post",
     data
-  })
+  });
 }
 
 // 新建工单
 export function checkCourseReturnFee(data) {
   return request({
-    url: '/api-web/oa/checkCourseReturnFee',
-    method: 'post',
+    url: "/api-web/oa/checkCourseReturnFee",
+    method: "post",
     data
-  })
+  });
 }
 
 // 工单列表
 export function workOrderList(params) {
   return request({
-    url: '/api-oa/api/v1/work-order/list',
-    method: 'get',
+    url: "/api-oa/api/v1/work-order/list",
+    method: "get",
     params
-  })
+  });
 }
 
 // 处理工单
 export function handleWorkOrder(data) {
   return request({
-    url: '/api-oa/api/v1/work-order/handle',
-    method: 'post',
+    url: "/api-oa/api/v1/work-order/handle",
+    method: "post",
     data
-  })
+  });
 }
 
-// 
+//
 export function asyncPlayLog(data) {
   return request({
-      url: 'api-web/oa/syncPayLog',
-      method: 'post',
-      requestType: 'form',
-      data: qs.stringify(data)
-  })
+    url: "api-web/oa/syncPayLog",
+    method: "post",
+    requestType: "form",
+    data: qs.stringify(data)
+  });
 }
 
 // 结束工单
 export function unityWorkOrder(params) {
   return request({
-    url: '/api-oa/api/v1/work-order/unity',
-    method: 'get',
+    url: "/api-oa/api/v1/work-order/unity",
+    method: "get",
     params
-  })
+  });
 }
 
 // 转交工单
 export function inversionWorkOrder(data) {
   return request({
-    url: '/api-oa/api/v1/work-order/inversion',
-    method: 'post',
+    url: "/api-oa/api/v1/work-order/inversion",
+    method: "post",
     data
-  })
+  });
 }
 
 // 催办工单
 export function urgeWorkOrder(params) {
   return request({
-    url: '/api-oa/api/v1/work-order/urge',
-    method: 'get',
+    url: "/api-oa/api/v1/work-order/urge",
+    method: "get",
     params
-  })
+  });
 }
 
 // 主动接单
 export function activeOrder(data, workOrderId) {
   return request({
     url: `/api-oa/api/v1/work-order/active-order/${workOrderId}`,
-    method: 'put',
+    method: "put",
     data
-  })
+  });
 }
 
 // 删除工单
 export function deleteWorkOrder(workOrderId) {
   return request({
     url: `/api-oa/api/v1/work-order/delete/${workOrderId}`,
-    method: 'delete'
-  })
+    method: "delete"
+  });
 }
 
 // 删除工单
 export function reopenWorkOrder(id) {
   return request({
     url: `/api-oa/api/v1/work-order/reopen/${id}`,
-    method: 'post'
-  })
+    method: "post"
+  });
 }
 
 // 获取所有分部
 export function queryAllOrgan() {
   return request({
     url: `/api-web/eduOrganization/queryAllOrgan`,
-    method: 'get'
-  })
+    method: "get"
+  });
 }
 
 export function queryUserInfo(data) {
   return request({
-    url: '/api-web/employee/queryUserInfo',
-    method: 'get',
+    url: "/api-web/employee/queryUserInfo",
+    method: "get",
     params: data
-  })
+  });
 }
 
 // 获取合作单位
 export function getOrganCooperation(params) {
   return request({
     url: `/api-web/eduOrganization/getOrganCooperation`,
-    method: 'get',
+    method: "get",
     params
-  })
+  });
+}
+
+// 添加评论
+export function orderComment(data) {
+  return request({
+    url: "/api-oa/api/v1/work-order/comment",
+    method: "post",
+    data
+  });
 }

+ 13 - 1
src/views/process/list/all.vue

@@ -16,6 +16,7 @@
         <!-- <el-table-column label="标题" prop="title" :show-overflow-tooltip="true" /> -->
         <el-table-column
           label="流程"
+          width="150"
           prop="process_name"
           :show-overflow-tooltip="true"
         />
@@ -88,10 +89,21 @@
           </template>
         </el-table-column>
         <el-table-column
+          label="最后修改时间"
+          align="center"
+          prop="update_time"
+          width="180"
+        >
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.update_time) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
           label="操作"
           align="center"
           class-name="small-padding fixed-width"
           width="240"
+          fixed="right"
         >
           <template slot-scope="scope">
             <el-button
@@ -140,7 +152,7 @@
         </el-table-column>
       </el-table>
 
-      <el-dialog title="转交工单" :visible.sync="dialogVisible" width="30%">
+      <el-dialog title="转交工单" :visible.sync="dialogVisible" width="40%">
         <TransferInversion
           v-if="dialogVisible"
           :selectItem="selectItem"

+ 174 - 8
src/views/process/list/handle.vue

@@ -25,6 +25,7 @@
                 :key="index"
                 :title="item.state || item.label"
               >
+                <!-- &&item.state !== '评论' -->
                 <template #description>
                   <!-- 判断是否有审核数据 -->
                   <template v-if="!item.create_time">
@@ -57,7 +58,6 @@
                           {{ item.assignUsers[0].username }}
                         </template>
                         {{ activeIndex == index ? `(审批中)` : null }}
-                        <!-- {{ item.assignUsers[0].username }}{{ activeIndex == index ? `(审批中)` : null }} -->
                       </template>
                     </p>
                   </template>
@@ -160,7 +160,7 @@
         </div>
       </el-card>
 
-      <el-card class="box-card" style="margin-top: 15px;">
+      <el-card class="box-card" style="margin-top: 15px">
         <div slot="header" class="clearfix">
           <span>表单信息</span>
           <!-- {{ (currentNode.hideTpls!==undefined &&
@@ -191,7 +191,12 @@
         </div>
         <div v-if="processStructureValue.userAuthority && is_end == 0">
           <hr
-            style="background-color: #d9d9d9; border:0; height:1px; margin-bottom: 15px"
+            style="
+              background-color: #d9d9d9;
+              border: 0;
+              height: 1px;
+              margin-bottom: 15px;
+            "
           />
           <el-form
             ref="dataFrom"
@@ -215,7 +220,14 @@
                 show-word-limit
               />
             </el-form-item>
-            <div class="text item" style="text-align: center;margin-top:18px">
+
+            <el-form-item>
+              <Upload v-model="fileUrl" ref="upload" />
+            </el-form-item>
+            <div class="text item" style="text-align: center; margin-top: 18px">
+              <el-button round @click="handleCommit(endNodeDetail)"
+                >评论</el-button
+              >
               <el-button
                 type="warning"
                 round
@@ -279,11 +291,62 @@
             <el-table-column prop="processor" label="处理人" />
             <el-table-column prop="create_time" label="处理时间" />
             <el-table-column prop="remarks" label="备注" />
+            <el-table-column label="图片">
+              <template slot-scope="scope">
+                <div
+                  v-if="
+                    scope.row.fileUrl.image &&
+                      scope.row.fileUrl.image.length > 0
+                  "
+                >
+                  <el-image
+                    style="width: 40px; height: 40px"
+                    :src="scope.row.fileUrl.image[0]"
+                    :preview-src-list="scope.row.fileUrl.image"
+                  >
+                  </el-image>
+                </div>
+              </template>
+            </el-table-column>
+            <el-table-column label="附件" width="300">
+              <template slot-scope="scope">
+                <div
+                  v-if="
+                    scope.row.fileUrl.file && scope.row.fileUrl.file.length > 0
+                  "
+                >
+                  <div
+                    v-for="(uploadUrlItem, uploadUrlIndex) of scope.row.fileUrl
+                      .file"
+                    :key="uploadUrlIndex"
+                    style="margin-bottom: 3px"
+                  >
+                    <i style="color: #909399;" class="el-icon-document" />
+                    <span>{{ uploadUrlItem.name || uploadUrlItem.url }}</span>
+                    <el-button
+                      round
+                      size="mini"
+                      @click="onDownload(uploadUrlItem, 'download')"
+                      >下载</el-button
+                    >
+                    <el-button
+                      round
+                      type="primary"
+                      @click="onDownload(uploadUrlItem)"
+                      v-if="checkFileSuffix(uploadUrlItem.url)"
+                      size="mini"
+                      >预览</el-button
+                    >
+                    <!-- <a :href="uploadUrlItem.url" target="_blank">{{ uploadUrlItem.name || uploadUrlItem.url }}</a> -->
+                  </div>
+                </div>
+              </template>
+            </el-table-column>
           </el-table>
         </div>
       </el-card>
     </div>
-    <el-dialog title="转交工单" :visible.sync="dialogVisible" width="30%">
+    <el-dialog title="转交工单" :visible.sync="dialogVisible" width="40%">
       <TransferInversion
         v-if="dialogVisible"
         :selectItem="selectItem"
@@ -295,6 +358,7 @@
 </template>
 
 <script>
+import Upload from "./model/upload";
 import Vue from "vue";
 import { GenerateForm } from "@/components/VueFormMaking";
 import "form-making/dist/FormMaking.css";
@@ -306,7 +370,8 @@ import {
   activeOrder,
   asyncPlayLog,
   queryUserInfo,
-  queryAllOrgan
+  queryAllOrgan,
+  orderComment
 } from "@/api/process/work-order";
 import store from "@/store";
 import { getInfo } from "@/api/user";
@@ -318,7 +383,8 @@ import load from "@/utils/loading";
 import { mapGetters } from "vuex";
 export default {
   components: {
-    TransferInversion
+    TransferInversion,
+    Upload
   },
   data() {
     const query = this.$route.query;
@@ -335,6 +401,7 @@ export default {
       dataList: {
         remarks: "" // 备注信息
       },
+      fileUrl: [],
       userInfo: {},
       alertMessage: "",
       nodeStepList: [],
@@ -406,6 +473,86 @@ export default {
     }
   },
   methods: {
+    // 获取学校列表
+    onDownload(item, type) {
+      if (type == "download") {
+        window.location.href = item.url;
+        return;
+      }
+
+      let urlArr = item.url.split(".");
+      let suffix = urlArr[urlArr.length - 1];
+      if (suffix != "pdf") {
+        this.previewUrl =
+          "https://view.officeapps.live.com/op/view.aspx?src=" + item.url;
+        window.open(this.previewUrl);
+        return;
+      } else {
+        this.previewUrl =
+          this.validManageUrl() + "/pdf/web/viewer.html?file=" + item.url;
+        window.open(this.previewUrl);
+        return;
+      }
+    },
+    // 教务地址
+    validManageUrl() {
+      let url = window.location.href;
+      let returnUrl = "";
+      if (/dev/.test(url)) {
+        // dev 环境
+        returnUrl = "http://mandev.dayaedu.com";
+      } else if (/test/.test(url)) {
+        // dev 环境
+        returnUrl = "http://mantest.dayaedu.com";
+      } else if (/online/.test(url)) {
+        //线上
+        returnUrl = "https://manonline.dayaedu.com";
+      } else {
+        // 默认dev环境
+        returnUrl = "http://mandev.dayaedu.com";
+      }
+      return returnUrl;
+    },
+    checkFileSuffix(url) {
+      let urlArr = url.split(".");
+      let suffix = urlArr[urlArr.length - 1];
+      if (
+        suffix == "xlsx" ||
+        suffix == "xls" ||
+        suffix == "doc" ||
+        suffix == "docx" ||
+        suffix == "pdf"
+      ) {
+        return true;
+      } else {
+        return false;
+      }
+    },
+    async handleCommit() {
+      try {
+        // orderComment
+        this.$refs["dataFrom"].validate(async _ => {
+          if (_) {
+            const res = await orderComment({
+              workOrderId: parseInt(this.workOrderId),
+              remarks: this.dataList.remarks,
+              fileUrl: JSON.stringify(this.fileUrl || [])
+            });
+            console.log(res, "res");
+            if (res.code == 200) {
+              this.$message.success("评论成功");
+              this.dataList.remarks = "";
+              this.fileUrl = [];
+              this.$refs.upload.onClear();
+            } else {
+              this.$message.error(res.message);
+            }
+          }
+        });
+      } catch {
+        //
+      }
+    },
     async handleInversion() {
       let workOrder = this.processStructureValue.workOrder;
       this.selectItem.work_order_id = workOrder.id;
@@ -506,6 +653,24 @@ export default {
           JSON.stringify(this.circulationHistoryList)
         );
 
+        this.circulationHistoryList.forEach(item => {
+          const file = item.file_url ? JSON.parse(item.file_url) : [];
+
+          const tempFile = {
+            image: [],
+            file: []
+          };
+          file.forEach(item => {
+            if (item.type == "image") {
+              tempFile.image.push(item.url);
+            } else if (item.type == "file") {
+              tempFile.file.push(item);
+            }
+          });
+          item.fileUrl = tempFile;
+        });
+        console.log(this.circulationHistoryList, "circulationHistoryList");
+
         // 获取当前展示节点列表
         // this.nodeStepList = this.processStructureValue.circulationHistory
 
@@ -588,7 +753,7 @@ export default {
         });
 
         // console.log(this.nodeStepList);
-        // console.log(this.circulationList);
+        console.log(this.circulationList, "this.circulationList");
 
         // if(this.processStructureValue.nodes) {
         // for (var i = 0; i < this.processStructureValue.nodes.length; i++) {
@@ -809,6 +974,7 @@ export default {
                   : parseInt(item.flowProperties),
               work_order_id: parseInt(this.$route.query.workOrderId),
               remarks: this.dataList.remarks,
+              fileUrl: JSON.stringify(this.fileUrl || []),
               tpls: this.tpls
             }).then(async response => {
               if (response.code === 200) {

+ 10 - 1
src/views/process/list/model/transferInversion.vue

@@ -45,6 +45,9 @@
     <el-form-item label="备注">
       <el-input v-model="ruleForm.remarks" type="textarea" size="small" />
     </el-form-item>
+    <el-form-item>
+      <Upload :fileUrl="fileUrl" />
+    </el-form-item>
     <el-form-item style="text-align: right">
       <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
       <el-button @click="$listeners.close()">关闭</el-button>
@@ -56,6 +59,7 @@
 import { inversionWorkOrder } from "@/api/process/work-order";
 import store from "@/store";
 import load from "@/utils/loading";
+import Upload from "./upload";
 export default {
   name: "transferInversion",
   props: {
@@ -64,6 +68,7 @@ export default {
       default: {}
     }
   },
+  components: { Upload },
   data() {
     return {
       users: [],
@@ -75,6 +80,7 @@ export default {
         user_id: "",
         remarks: ""
       },
+      fileUrl: [],
       rules: {
         node_id: [{ required: true, message: "请选择节点", trigger: "change" }],
         user_id: [{ required: true, message: "请选择用户", trigger: "change" }]
@@ -93,7 +99,10 @@ export default {
       this.$refs[formName].validate(valid => {
         if (valid) {
           load.startLoading();
-          inversionWorkOrder(this.ruleForm).then(response => {
+          inversionWorkOrder({
+            ...this.ruleForm,
+            fileUrl: JSON.stringify(this.fileUrl || [])
+          }).then(response => {
             load.endLoading();
             if (response.code === 200) {
               this.$message.success("转交成功");

+ 195 - 0
src/views/process/list/model/upload.vue

@@ -0,0 +1,195 @@
+<template>
+  <div>
+    <div class="preview-container">
+      <div class="preview-list">
+        <div
+          class="preview-item"
+          v-for="(item, index) in tempFileUrl"
+          :key="index"
+        >
+          <div class="preview-item-img" v-if="item.type == 'image'">
+            <el-image :src="item.url" fit="cover" />
+          </div>
+          <div class="preview-item-img" v-if="item.type == 'file'">
+            <i class="el-icon-document van-uploader__file-icon"></i>
+            <span
+              style="white-space: nowrap;overflow: hidden;text-overflow: ellipsis;width: 64px; font-size: 13px; padding-top: 5px;line-height: 1.3 "
+              >{{ item.name }}</span
+            >
+          </div>
+          <div class="preview-item-close">
+            <i class="el-icon-close" @click="onDelete(item)"></i>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="upload_section">
+      <el-upload
+        action="/api-web/import/oaUploadFile"
+        :on-success="handleSuccess"
+        :on-exceed="handleExceed"
+        :before-upload="beforeUpload"
+        :show-file-list="false"
+        accept="image/*"
+        :limit="5"
+      >
+        <el-button
+          size="small"
+          :loading="uploadLoading"
+          icon="el-icon-picture"
+          round
+          type="primary"
+          >上传图片</el-button
+        >
+      </el-upload>
+
+      <el-upload
+        action="/api-web/import/oaUploadFile"
+        style="margin-left: 8px"
+        :on-success="handleSuccess"
+        :on-exceed="handleExceedFile"
+        :before-upload="beforeUploadFile"
+        :show-file-list="false"
+        :limit="3"
+        accept="image/*, *.xlsx, *.xls,application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/vnd.ms-excel, application/msword,application/vnd.openxmlformats-officedocument.wordprocessingml.document, *.txt, *.pdf"
+      >
+        <el-button
+          size="small"
+          :loading="uploadFileLoading"
+          icon="el-icon-document"
+          round
+          type="primary"
+          >上传附件</el-button
+        >
+      </el-upload>
+    </div>
+  </div>
+</template>
+
+<script>
+export default {
+  name: "FileUpload",
+  props: ["fileUrl"],
+  data() {
+    return {
+      tempFileUrl: this.fileUrl || [],
+      type: "image",
+      uploadLoading: false,
+      uploadFileLoading: false
+    };
+  },
+  methods: {
+    onClear() {
+      this.tempFileUrl = [];
+    },
+    onDelete(item) {
+      const index = this.tempFileUrl.indexOf(item);
+      this.tempFileUrl.splice(index, 1);
+      this.$emit("fileUrl", this.tempFileUrl);
+    },
+    beforeUpload(file) {
+      const isLt2M = file.size / 1024 / 1024 < 5;
+      if (!isLt2M) {
+        this.$message.error("上传图片大小不能超过 5MB!");
+      }
+      this.uploadLoading = true;
+      this.type = "image";
+      return isLt2M;
+    },
+    beforeUploadFile(file) {
+      const isLt2M = file.size / 1024 / 1024 < 5;
+      if (!isLt2M) {
+        this.$message.error("上传图片大小不能超过 5MB!");
+      }
+      this.uploadFileLoading = true;
+      this.type = "file";
+      return isLt2M;
+    },
+    handleExceed(files, fileList) {
+      this.$message.warning(`最多允许上传 5 张图片。`);
+    },
+    handleExceedFile(files, fileList) {
+      this.$message.warning(`最多允许上传 3 个文件。`);
+    },
+    handleSuccess(response, file, fileList) {
+      console.log(response, file, fileList);
+      this.uploadLoading = false;
+      this.uploadFileLoading = false;
+      if (response.code === 200) {
+        this.tempFileUrl.push({
+          uid: file.uid,
+          name: file.name,
+          url: response.data.url,
+          type: this.type,
+          file: {
+            name: file.name
+          }
+        });
+        console.log(this.tempFileUrl);
+        this.$emit("fileList", this.tempFileUrl);
+      } else {
+        const index = fileList.findIndex(item => item.uid === file.uid);
+        fileList.splice(index, 1);
+
+        this.$message.error(response.msg);
+      }
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.upload_section {
+  display: flex;
+}
+
+.preview-container::-webkit-scrollbar {
+  display: none;
+}
+.preview-container {
+  width: 100%;
+  overflow: hidden;
+  overflow-y: hidden;
+  overflow-x: auto;
+}
+.preview-list {
+  display: flex;
+}
+.preview-item {
+  position: relative;
+  margin: 0 8px 8px 0;
+  border-radius: 4px;
+  overflow: hidden;
+}
+.preview-item,
+.preview-item-img {
+  background: #f7f8fa;
+  width: 64px;
+  height: 64px;
+  display: flex;
+  align-items: center;
+  flex-direction: column;
+  justify-content: center;
+}
+
+.preview-item-close {
+  position: absolute;
+  top: 0;
+  right: 0;
+  width: 14px;
+  height: 14px;
+  background-color: rgba(0, 0, 0, 0.7);
+  border-radius: 0 0 0 12px;
+
+  .el-icon-close {
+    position: absolute;
+    top: -2px;
+    right: -2px;
+    color: #fff;
+    font-size: 16px;
+    -webkit-transform: scale(0.5);
+    transform: scale(0.5);
+    cursor: pointer;
+  }
+}
+</style>

+ 12 - 0
src/views/process/list/my-create.vue

@@ -18,6 +18,7 @@
         <el-table-column
           label="标题"
           prop="title"
+          width="150"
           :show-overflow-tooltip="true"
         />
         <el-table-column
@@ -88,10 +89,21 @@
           </template>
         </el-table-column>
         <el-table-column
+          label="最后修改时间"
+          align="center"
+          prop="update_time"
+          width="180"
+        >
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.update_time) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
           label="操作"
           align="center"
           class-name="small-padding fixed-width"
           width="180"
+          fixed="right"
         >
           <template slot-scope="scope">
             <el-button

+ 27 - 55
src/views/process/list/related.vue

@@ -18,6 +18,7 @@
         <el-table-column
           label="标题"
           prop="title"
+          width="150"
           :show-overflow-tooltip="true"
         />
         <el-table-column
@@ -88,10 +89,21 @@
           </template>
         </el-table-column>
         <el-table-column
+          label="最后修改时间"
+          align="center"
+          prop="update_time"
+          width="180"
+        >
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.update_time) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
           label="操作"
           align="center"
           class-name="small-padding fixed-width"
           width="180"
+          fixed="right"
         >
           <template slot-scope="scope">
             <el-button
@@ -106,59 +118,13 @@
         </el-table-column>
       </el-table>
 
-      <el-dialog title="转交工单" :visible.sync="dialogVisible" width="30%">
-        <el-form
-          ref="ruleForm"
-          :model="ruleForm"
-          :rules="rules"
-          label-width="60px"
-          class="demo-ruleForm"
-        >
-          <el-form-item label="节点" prop="node_id">
-            <el-select
-              v-model="ruleForm.node_id"
-              placeholder="选择节点"
-              size="small"
-              style="width: 100%"
-            >
-              <el-option
-                v-for="(item, index) in nodeList"
-                :key="index"
-                :label="item.label"
-                :value="item.id"
-              />
-            </el-select>
-          </el-form-item>
-          <el-form-item label="用户" prop="user_id">
-            <el-select
-              v-model="ruleForm.user_id"
-              placeholder="选择用户"
-              size="small"
-              style="width: 100%"
-            >
-              <el-option
-                v-for="(item, index) in users"
-                :key="index"
-                :label="item.nickName"
-                :value="item.userId"
-              >
-                <span style="float: left">{{ item.nickName }}</span>
-                <span style="float: right; color: #8492a6; font-size: 13px">{{
-                  item.phone
-                }}</span>
-              </el-option>
-            </el-select>
-          </el-form-item>
-          <el-form-item label="备注">
-            <el-input v-model="ruleForm.remarks" type="textarea" size="small" />
-          </el-form-item>
-          <el-form-item style="text-align: right">
-            <el-button type="primary" @click="submitForm('ruleForm')"
-              >提交</el-button
-            >
-            <el-button @click="dialogVisible = false">关闭</el-button>
-          </el-form-item>
-        </el-form>
+      <el-dialog title="转交工单" :visible.sync="dialogVisible" width="40%">
+        <TransferInversion
+          v-if="dialogVisible"
+          :selectItem="selectItem"
+          @getList="getList"
+          @close="dialogVisible = false"
+        />
       </el-dialog>
 
       <pagination
@@ -174,12 +140,12 @@
 
 <script>
 import { workOrderList } from "@/api/process/work-order";
-
+import TransferInversion from "./model/transferInversion";
 // 搜索
 import WorkOrderSearch from "./components/search/index";
 
 export default {
-  components: { WorkOrderSearch },
+  components: { WorkOrderSearch, TransferInversion },
   data() {
     return {
       users: [],
@@ -193,6 +159,12 @@ export default {
         page: 1,
         per_page: 10
       },
+      selectItem: {
+        work_order_id: "",
+        node_id: null,
+        nodeList: [],
+        users: []
+      },
       ruleForm: {
         work_order_id: "",
         node_id: "",

+ 13 - 1
src/views/process/list/upcoming.vue

@@ -18,6 +18,7 @@
         <el-table-column
           label="标题"
           prop="title"
+          width="150"
           :show-overflow-tooltip="true"
         />
         <el-table-column
@@ -88,10 +89,21 @@
           </template>
         </el-table-column>
         <el-table-column
+          label="最后修改时间"
+          align="center"
+          prop="update_time"
+          width="180"
+        >
+          <template slot-scope="scope">
+            <span>{{ parseTime(scope.row.update_time) }}</span>
+          </template>
+        </el-table-column>
+        <el-table-column
           label="操作"
           align="center"
           class-name="small-padding fixed-width"
           width="180"
+          fixed="right"
         >
           <template slot-scope="scope">
             <el-button
@@ -115,7 +127,7 @@
         </el-table-column>
       </el-table>
 
-      <el-dialog title="转交工单" :visible.sync="dialogVisible" width="30%">
+      <el-dialog title="转交工单" :visible.sync="dialogVisible" width="40%">
         <TransferInversion
           v-if="dialogVisible"
           :selectItem="selectItem"