浏览代码

Merge branch 'dev' into 'master'

Dev to master

See merge request new-business/drp-web!10
黄梓星 2 年之前
父节点
当前提交
c88944e83f

+ 3 - 0
src/components/PopDialog/drug.vue

@@ -29,6 +29,9 @@
                   @node-click="clickTree"
                   :filter-node-method="filterNode"
                   ref="tree">
+                  <span slot-scope="{ node, data}">
+                    <span>{{data.code +' '+ node.label }}</span>
+                  </span>
                 </el-tree>
               </el-col>
             </el-row>

文件差异内容过多而无法显示
+ 436 - 422
src/views/business/spd/bo/basic/details.vue


+ 1 - 1
src/views/business/spd/bo/basic/index.vue

@@ -197,7 +197,7 @@
 
     <!-- 添加或修改商机基础信息对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="1000px" append-to-body>
-      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px" :disabled="this.form.winningState != 0">
         <el-divider content-position="left">
           <dev style="width: 50px; height: 40px; font-size: 18px">基本信息</dev>
         </el-divider>

+ 5 - 3
src/views/business/spd/bo/behavior/AA.vue

@@ -3,6 +3,7 @@
     <el-upload
       multiple
       :action="uploadImgUrl"
+      :auto-upload="false"
       list-type="picture-card"
       :on-success="handleUploadSuccess"
       :before-upload="handleBeforeUpload"
@@ -19,7 +20,7 @@
     >
       <i class="el-icon-plus"></i>
     </el-upload>
-
+    
     <!-- 上传提示 -->
     <div class="el-upload__tip" slot="tip" v-if="showTip">
       请上传
@@ -77,11 +78,11 @@ export default {
       dialogVisible: false,
       hideUpload: false,
       baseUrl: process.env.VUE_APP_BASE_API,
-      uploadImgUrl: process.env.VUE_APP_BASE_API + "/mk/bo/behaviorA", // 上传的图片服务器地址
+      uploadImgUrl: process.env.VUE_APP_BASE_API + "/common/upload", // 上传的图片服务器地址
       headers: {
         Authorization: "Bearer " + getToken(),
       },
-      fileList: ['https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg']
+      fileList: []
     };
   },
   watch: {
@@ -223,3 +224,4 @@ export default {
     transform: translateY(0);
 }
 </style>
+

+ 11 - 208
src/views/business/spd/bo/behavior/behaviorList.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-row :gutter="10" class="mb8">
+    <el-row :gutter="10" class="mb8" v-if="this.source == 'BoDetails' ? this.bo.winningState == 0 ? true : false : true">
       <el-col :span="1.5">
         <el-button
           type="primary"
@@ -74,7 +74,7 @@
       <el-table-column label="销售组织" align="center" prop="salesOrgName" v-if="source == 'Behavior'"/>
       <el-table-column label="部门" align="center" prop="deptName" v-if="source == 'Behavior'"/>
 
-      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width" v-if="this.source == 'BoDetails' ? this.bo.winningState == 0 ? true : false : true">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -233,76 +233,7 @@
         <el-divider content-position="left">
           <dev style="width: 50px; height: 40px; font-size: 18px">照片信息</dev>
         </el-divider>
-        <AA :value = "fileList"/>
-        <!-- <el-row :gutter="10" class="mb8">
-          <el-col :span="1.5">
-            <el-button
-              type="info"
-              plain
-              icon="el-icon-upload2"
-              size="small"
-              @click="handleImport(`P`)"
-              >上传</el-button
-            >
-          </el-col>
-        </el-row>
-        <el-image
-          style="width: 100px; height: 100px"
-          :src="url"
-          :preview-src-list="srcList">
-        </el-image> -->
-        <!-- <el-divider content-position="left">附件</el-divider>
-          <el-row :gutter="10" class="mb8">
-            <el-col :span="1.5">
-              <el-button
-                type="info"
-                plain
-                icon="el-icon-upload2"
-                size="mini"
-                @click="handleImport(`A`)"
-                >上传</el-button
-              >
-            </el-col>
-          </el-row>
-          <el-table v-loading="loading" :data="form.accessory">
-            <el-table-column type="selection" width="55" align="center" />
-            <el-table-column
-              type="index"
-              label="序号"
-              width="55"
-              align="center"
-            />
-            <el-table-column label="名称" align="center" prop="fileName" />
-            <el-table-column
-              label="操作"
-              align="center"
-              class-name="small-padding fixed-width"
-            >
-              <template slot-scope="scope">
-                <el-row>
-                  <el-col :span="1.5">
-                    <el-button
-                      size="mini"
-                      type="text"
-                      icon="el-icon-delete"
-                      @click="deleteBehaviorA('list', scope.row)"
-                      >删除</el-button
-                    >
-                  </el-col>
-                  <el-col :span="1.5">
-                    <el-button
-                      type="warning"
-                      plain
-                      icon="el-icon-download"
-                      size="mini"
-                      @click="exportAccessory(scope.row.url, scope.row.Name)"
-                      >下载</el-button
-                    >
-                  </el-col>
-                </el-row>
-              </template>
-            </el-table-column>
-          </el-table> -->
+        <AA :limit="2" v-model="fileList"></AA>
         <div class="md-auditInfo">
           <el-divider content-position="left">
             <dev style="width: 50px; height: 40px; font-size: 18px">其它信息</dev>
@@ -338,33 +269,6 @@
         <el-button @click="cancel">取 消</el-button>
       </div>
     </el-dialog>
-    <!-- 上传对话框 -->
-    <el-dialog
-      :title="upload.title"
-      :visible.sync="upload.open"
-      width="400px"
-      append-to-body
-    >
-      <el-upload
-        ref="upload"
-        :limit="1"
-        accept=".xlsx, .xls,.doc,docx"
-        :headers="upload.headers"
-        :action="1"
-        :disabled="upload.isUploading"
-        :on-progress="handleFileUploadProgress"
-        :on-success="handleFileSuccess"
-        :auto-upload="false"
-        drag
-      >
-        <i class="el-icon-upload"></i>
-        <div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
-      </el-upload>
-      <div slot="footer" class="dialog-footer">
-        <el-button type="primary" @click="submitFileForm">确 定</el-button>
-        <el-button @click="upload.open = false">取 消</el-button>
-      </div>
-    </el-dialog>
     <!-- 联系人参照 -->
     <ContactRef
       ref="contactSelect"
@@ -383,11 +287,8 @@
 
 <script>
 import { listBehavior, getBehavior, delBehavior, addBehavior, updateBehavior } from "@/api/business/spd/bo/behavior";
-import {delBehaviorA} from "@/api/business/spd/bo/behaviorA";
 import ContactRef from '@/views/business/spd/bo/refer/contact/index.vue';
 import SaleaeaRef from '@/views/business/spd/bo/refer/saleaea/index.vue';
-import axios from "axios";
-import { getToken } from "@/utils/auth";
 import AA from '@/views/business/spd/bo/behavior/AA.vue';
 
 export default {
@@ -397,8 +298,7 @@ export default {
   components: {ContactRef,SaleaeaRef,AA},
   data() {
     return {
-      fileList: [
-      ],
+      fileList: [],
       // 遮罩层
       loading: true,
       // 选中数组
@@ -462,28 +362,6 @@ export default {
           { required: true, message: "拜访效果不能为空", trigger: "blur" }
         ],
       },
-      // 上传参数
-      upload: {
-        // 是否显示弹出层
-        open: false,
-        // 弹出层标题
-        title: "",
-        // 是否禁用上传
-        isUploading: false,
-        // 上传类型
-        type: "",
-        // 设置上传的请求头部
-        headers: { Authorization: "Bearer " + getToken() },
-        // 上传的地址
-        url: process.env.VUE_APP_BASE_API + "/mk/bo/behaviorA",
-      },
-      url: [
-        'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
-      ],
-      srcList: [
-        'https://fuss10.elemecdn.com/8/27/f01c15bb73e1ef3793e64e6b7bbccjpeg.jpeg',
-        'https://fuss10.elemecdn.com/1/8e/aeffeb4de74e2fde4bd74fc7b4486jpeg.jpeg'
-      ],
     };
   },
   created() {
@@ -500,6 +378,12 @@ export default {
     this.getList();
   },
   methods: {
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        console.log(this.form.photos.split(','));
+      });
+    },
     /** 查询行动列表 */
     getList() {
       this.loading = true;
@@ -607,6 +491,7 @@ export default {
         this.open = true;
         this.title = "修改行动";
       });
+      this.getPictureList(); 
     },
     /** 提交按钮 */
     submitForm() {
@@ -638,88 +523,6 @@ export default {
         this.$modal.msgSuccess("删除成功");
       }).catch(() => {});
     },
-    /** 导出按钮操作 */
-    handleExport() {
-      this.download('system/behavior/export', {
-        ...this.queryParams
-      }, `behavior_${new Date().getTime()}.xlsx`)
-    },
-    /** 上传按钮操作 */
-    handleImport(type) {
-      this.upload.open = true;
-      this.upload.type = type;
-      console.log('this.upload',this.upload);
-    },
-    // 提交上传文件
-    submitFileForm() {
-      this.$refs.upload.submit();
-    },
-    // 文件上传中处理
-    handleFileUploadProgress(event, file, fileList) {
-      this.upload.isUploading = true;
-    },
-    // 文件上传成功处理
-    handleFileSuccess(response, file, fileList) {
-      this.upload.open = false;
-      this.upload.isUploading = false;
-      this.$refs.upload.clearFiles();
-      this.$alert(
-        "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
-          response.msg +
-          "</div>",
-        "上传结果",
-        { dangerouslyUseHTMLString: true }
-      );
-    },
-    //下载附件
-    exportBehaviorA(urlId, fileName) {
-      let resUrl =
-        "https://test-sy.derom.com/document-center/fastdfs/download?id=" +
-        urlId;
-      axios
-        .create({
-          timeout: 3000,
-          responseType: "blob", // 响应类型, 将响应数据转换为二进制数据
-          headers: {},
-        })
-        .get(resUrl)
-        .then((res) => {
-          console.log(res);
-          // 地址转换
-          let url = window.URL.createObjectURL(res.data);
-          const a = document.createElement("a");
-          a.setAttribute("href", url);
-          a.setAttribute("download", fileName);
-          document.body.append(a);
-          a.click();
-          document.body.removeChild(a);
-        });
-    },
-    //删除附件
-    deleteBehaviorA(row) {
-      this.$modal
-        .confirm("是否确认删除?")
-        .then(function () {})
-        .then(() => {
-          delBehaviorA(row.id).then((res) => {
-            if (res.code == 200) {
-              if (this.upload.flag == "list") {
-                listAccessory(this.form.basic.id).then((response) => {
-                  this.form.accessory = response.rows;
-                });
-              } else {
-                getBasic(this.$route.params.id).then((response) => {
-                  this.form.basic = response.data;
-                });
-              }
-              this.$modal.msgSuccess("删除成功");
-            } else {
-              this.$modal.msgSuccess("删除失败");
-            }
-          });
-        })
-        .catch(() => {});
-    },
     // 触发联系人参照列表
     refereContact() {
       this.$refs.contactSelect.init()

+ 27 - 7
src/views/business/spd/bo/contact/contactList.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-row :gutter="10" class="mb8">
+    <el-row :gutter="10" class="mb8" v-if="this.source == 'BoDetails' ? this.bo.winningState == 0 ? true : false : true">
       <el-col :span="1.5">
         <el-button
           type="primary"
@@ -102,7 +102,7 @@
       <el-table-column label="联系人分类" align="center" prop="contactClassification" />
 
       <el-table-column label="所属客户编码" align="center" prop="customerCode" /> -->
-      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width" v-if="this.source == 'BoDetails' ? this.bo.winningState == 0 ? true : false : true">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -223,8 +223,10 @@
         </el-divider>
         <el-row>
           <el-col :span="8">
-            <el-form-item label="上级联系人" prop="superiorContact">
-              <el-input v-model="form.superiorContact" placeholder="请输入上级联系人" />
+            <el-form-item label="上级联系人" prop="superiorContactName">
+              <el-input v-model="form.superiorContactName" >
+                <el-button slot="append" icon="el-icon-more" @click="refereContact"></el-button>
+              </el-input>
             </el-form-item>
           </el-col>
           <el-col :span="8">
@@ -391,6 +393,13 @@
       @doSubmit="customerSelectionsToInput"
       :single="true"
     />
+    <!-- 联系人参照 -->
+    <ContactRef
+      ref="contactSelect"
+      @doSubmit="contactSelectionsToInput"
+      :single="true"
+      :outerQueryParams="this.bo"
+    />
   </div>
 </template>
 
@@ -399,12 +408,13 @@ import { listContact, getContact, delContact, addContact, updateContact } from "
 import CustomerRef from '@/views/business/spd/bo/refer/customer/index.vue';
 import EducationList from '../education/educationList.vue';
 import RelationshipList from '../relationship/relationshipList.vue';
+import ContactRef from '@/views/business/spd/bo/refer/contact/index.vue';
 
 export default {
   name: "contactList",
   props:["source","bo"],
   dicts: ['sys_user_sex','mk_bo_contact_state','mk_bo_section','mk_bo_position','mk_bo_job_title','mk_bo_power','mk_bo_support','mk_bo_field_expertise','sys_yes_no','mk_bo_contact_type'],
-  components: {CustomerRef,EducationList,RelationshipList},
+  components: {CustomerRef,ContactRef,EducationList,RelationshipList},
   data() {
     return {
       // 遮罩层
@@ -536,6 +546,7 @@ export default {
         position: null,
         section: null,
         superiorContact: null,
+        superiorContactName: null,
         state: null,
         hobby: null,
         birthplace: null,
@@ -577,7 +588,7 @@ export default {
       }
       this.form.state = '1';
       this.open = true;
-      this.title = "添加联系人管理";
+      this.title = "添加联系人";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
@@ -587,7 +598,7 @@ export default {
       getContact(id).then(response => {
         this.form = response.data;
         this.open = true;
-        this.title = "修改联系人管理";
+        this.title = "修改联系人";
         this.timer = new Date().getTime();
       });
     },
@@ -636,6 +647,15 @@ export default {
       this.form.customer = selections[0].id;
       this.form.customerName = selections[0].name;
     },
+    // 触发联系人参照列表
+    refereContact() {
+      this.$refs.contactSelect.init()
+    },
+    //联系人参照列表选择后
+    contactSelectionsToInput (selections) {
+      this.form.superiorContact = selections[0].id;
+      this.form.superiorContactName = selections[0].name;
+    },
   }
 };
 </script>

+ 2 - 4
src/views/business/spd/bo/task/taskList.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="app-container">
-    <el-row :gutter="10" class="mb8">
+    <el-row :gutter="10" class="mb8" v-if="this.source == 'BoDetails' ? this.bo.winningState == 0 ? true : false : true">
       <el-col :span="1.5">
         <el-button
           type="primary"
@@ -65,7 +65,7 @@
         </template>
       </el-table-column>
       <el-table-column label="任务内容" align="center" prop="content" />
-      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width">
+      <el-table-column label="操作" fixed="right" align="center" class-name="small-padding fixed-width" v-if="this.source == 'BoDetails' ? this.bo.winningState == 0 ? true : false : true">
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -539,10 +539,8 @@ export default {
     },
     //联系人参照列表选择后
     contactSelectionsToInput (selections) {
-      console.log('selections',selections);
       this.form.linkman = selections[0].id;
       this.form.linkmanName = selections[0].name;
-      console.log('this.form',this.form);
     },
     // 触发组织参照列表
     refereOrg() {

+ 3 - 3
src/views/monitor/job/index.vue

@@ -78,7 +78,7 @@
           v-hasPermi="['monitor:job:export']"
         >导出</el-button>
       </el-col>
-      <el-col :span="1.5">
+<!--      <el-col :span="1.5">
         <el-button
           type="info"
           plain
@@ -87,7 +87,7 @@
           @click="handleJobLog"
           v-hasPermi="['monitor:job:query']"
         >日志</el-button>
-      </el-col>
+      </el-col>-->
 
       <el-col :span="1.5">
         <el-button
@@ -175,7 +175,7 @@
             </el-form-item>
           </el-col>
           <el-col :span="12">
-            <el-form-item label="员工工号" prop="empno">
+            <el-form-item label="任务员工" prop="empno">
               <el-input v-model="form.empno" placeholder="请输入员工工号" />
             </el-form-item>
           </el-col>

+ 235 - 63
src/views/monitor/job/log.vue

@@ -1,6 +1,13 @@
 <template>
   <div class="app-container">
-    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+    <el-form
+      :model="queryParams"
+      ref="queryForm"
+      size="small"
+      :inline="true"
+      v-show="showSearch"
+      label-width="68px"
+    >
       <el-form-item label="任务名称" prop="jobName">
         <el-input
           v-model="queryParams.jobName"
@@ -52,8 +59,16 @@
         ></el-date-picker>
       </el-form-item>
       <el-form-item>
-        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
-        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+        <el-button
+          type="primary"
+          icon="el-icon-search"
+          size="mini"
+          @click="handleQuery"
+          >搜索</el-button
+        >
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
+          >重置</el-button
+        >
       </el-form-item>
     </el-form>
 
@@ -67,7 +82,8 @@
           :disabled="multiple"
           @click="handleDelete"
           v-hasPermi="['monitor:job:remove']"
-        >删除</el-button>
+          >删除</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -77,7 +93,8 @@
           size="mini"
           @click="handleClean"
           v-hasPermi="['monitor:job:remove']"
-        >清空</el-button>
+          >清空</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -87,7 +104,8 @@
           size="mini"
           @click="handleExport"
           v-hasPermi="['monitor:job:export']"
-        >导出</el-button>
+          >导出</el-button
+        >
       </el-col>
       <el-col :span="1.5">
         <el-button
@@ -96,48 +114,144 @@
           icon="el-icon-close"
           size="mini"
           @click="handleClose"
-        >关闭</el-button>
+          >关闭</el-button
+        >
       </el-col>
-      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+      <right-toolbar
+        :showSearch.sync="showSearch"
+        @queryTable="getList"
+      ></right-toolbar>
     </el-row>
 
-    <el-table v-loading="loading" :data="jobLogList" @selection-change="handleSelectionChange">
+    <el-table
+      v-loading="loading"
+      :data="jobLogList"
+      @selection-change="handleSelectionChange"
+      @row-dblclick="dblclick"
+    >
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="日志编号" width="80" align="center" prop="jobLogId" />
+      <el-table-column label="编号" width="80" align="center" prop="jobLogId" />
+      <el-table-column
+        label="任务名称"
+        width="180"
+        align="center"
+        prop="jobName"
+        :show-overflow-tooltip="false"
+      />
 
+      <el-table-column
+        label="任务员工"
+        width="80"
+        align="center"
+        prop="nickName"
+      />
+      <el-table-column
+        label="任务大类"
+        width="80"
+        align="center"
+        prop="jobType"
+      />
+      <el-table-column
+        label="任务小类"
+        width="80"
+        align="center"
+        prop="jobTypeS"
+      />
+      <el-table-column
+        label="任务内容"
+        width="200"
+        align="center"
+        prop="cont"
+      />
 
-        <el-table-column label="员工工号" width="80" align="center" prop="enpno" />
-        <el-table-column label="任务大类" width="80" align="center" prop="jobType" />
-        <el-table-column label="任务小类" width="80" align="center" prop="jobTypeS" />
-        <el-table-column label="任务内容" width="80" align="center" prop="cont" />
-        <el-table-column label="超时时间" width="80" align="center" prop="timeout" />
-        <el-table-column label="预计时长" width="80" align="center" prop="duration" />
+      <el-table-column
+        label="执行时间"
+        align="center"
+        prop="createTime"
+        width="180"
+      >
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column
+        label="完成时间"
+        width="180"
+        align="center"
+        prop="executionTime"
+      />
+      <el-table-column
+        label="完成时长"
+        width="180"
+        align="center"
+        prop="tqaaaa"
+      />
+      <el-table-column
+        label="预计时长"
+        width="80"
+        align="center"
+        prop="durations"
+      />
+      <el-table-column
+        label="超时时长"
+        width="180"
+        align="center"
+        prop="tqbbbb"
+      />
 
-      <el-table-column label="任务名称" align="center" prop="jobName" :show-overflow-tooltip="true" />
-      <el-table-column label="任务组名" align="center" prop="jobGroup" :show-overflow-tooltip="true">
+      <el-table-column
+        label="oa执行状态"
+        width="80"
+        align="center"
+        prop="completionStatus"
+      >
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_job_group" :value="scope.row.jobGroup"/>
+          <dict-tag
+            :options="dict.type.sys_oa_back_state"
+            :value="scope.row.completionStatus"
+          />
         </template>
       </el-table-column>
-      <el-table-column label="调用目标字符串" align="center" prop="invokeTarget" :show-overflow-tooltip="true" />
-      <el-table-column label="日志信息" align="center" prop="jobMessage" :show-overflow-tooltip="true" />
-      <el-table-column label="执行状态" align="center" prop="status">
+
+      <el-table-column
+        label="任务组名"
+        align="center"
+        prop="jobGroup"
+        :show-overflow-tooltip="true"
+      >
         <template slot-scope="scope">
-          <dict-tag :options="dict.type.sys_common_status" :value="scope.row.status"/>
+          <dict-tag
+            :options="dict.type.sys_job_group"
+            :value="scope.row.jobGroup"
+          />
         </template>
       </el-table-column>
-      <el-table-column label="执行时间" align="center" prop="createTime" width="180">
+      <!--      <el-table-column label="调用目标字符串" align="center" prop="invokeTarget" :show-overflow-tooltip="true" />-->
+      <el-table-column
+        label="日志信息"
+        align="center"
+        prop="jobMessage"
+        :show-overflow-tooltip="true"
+      />
+      <el-table-column label="任务执行状态" align="center" prop="status">
         <template slot-scope="scope">
-          <span>{{ parseTime(scope.row.createTime) }}</span>
+          <dict-tag
+            :options="dict.type.sys_common_status"
+            :value="scope.row.status"
+          />
         </template>
       </el-table-column>
+      <!--      <el-table-column label="执行时间" align="center" prop="createTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.createTime) }}</span>
+        </template>
+      </el-table-column>-->
 
-
-
-
-
-
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+      <el-table-column
+        label="操作"
+        align="center"
+        class-name="small-padding fixed-width"
+      >
         <template slot-scope="scope">
           <el-button
             size="mini"
@@ -145,13 +259,14 @@
             icon="el-icon-view"
             @click="handleView(scope.row)"
             v-hasPermi="['monitor:job:query']"
-          >详细</el-button>
+            >详细</el-button
+          >
         </template>
       </el-table-column>
     </el-table>
 
     <pagination
-      v-show="total>0"
+      v-show="total > 0"
       :total="total"
       :page.sync="queryParams.pageNum"
       :limit.sync="queryParams.pageSize"
@@ -159,7 +274,12 @@
     />
 
     <!-- 调度日志详细 -->
-    <el-dialog title="调度日志详细" :visible.sync="open" width="700px" append-to-body>
+    <el-dialog
+      title="调度日志详细"
+      :visible.sync="open"
+      width="700px"
+      append-to-body
+    >
       <el-form ref="form" :model="form" label-width="100px" size="mini">
         <el-row>
           <el-col :span="12">
@@ -169,13 +289,19 @@
           </el-col>
           <el-col :span="12">
             <el-form-item label="任务分组:">{{ form.jobGroup }}</el-form-item>
-            <el-form-item label="执行时间:">{{ form.createTime }}</el-form-item>
+            <el-form-item label="执行时间:">{{
+              form.createTime
+            }}</el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="调用方法:">{{ form.invokeTarget }}</el-form-item>
+            <el-form-item label="调用方法:">{{
+              form.invokeTarget
+            }}</el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="日志信息:">{{ form.jobMessage }}</el-form-item>
+            <el-form-item label="日志信息:">{{
+              form.jobMessage
+            }}</el-form-item>
           </el-col>
           <el-col :span="24">
             <el-form-item label="执行状态:">
@@ -184,7 +310,9 @@
             </el-form-item>
           </el-col>
           <el-col :span="24">
-            <el-form-item label="异常信息:" v-if="form.status == 1">{{ form.exceptionInfo }}</el-form-item>
+            <el-form-item label="异常信息:" v-if="form.status == 1">{{
+              form.exceptionInfo
+            }}</el-form-item>
           </el-col>
         </el-row>
       </el-form>
@@ -196,12 +324,12 @@
 </template>
 
 <script>
-import { getJob} from "@/api/monitor/job";
+import { getJob } from "@/api/monitor/job";
 import { listJobLog, delJobLog, cleanJobLog } from "@/api/monitor/jobLog";
 
 export default {
   name: "JobLog",
-  dicts: ['sys_common_status', 'sys_job_group'],
+  dicts: ["sys_common_status", "sys_job_group","sys_oa_back_state"],
   data() {
     return {
       // 遮罩层
@@ -228,14 +356,14 @@ export default {
         pageSize: 10,
         jobName: undefined,
         jobGroup: undefined,
-        status: undefined
-      }
+        status: undefined,
+      },
     };
   },
   created() {
     const jobId = this.$route.params && this.$route.params.jobId;
     if (jobId !== undefined && jobId != 0) {
-      getJob(jobId).then(response => {
+      getJob(jobId).then((response) => {
         this.queryParams.jobName = response.data.jobName;
         this.queryParams.jobGroup = response.data.jobGroup;
         this.getList();
@@ -245,16 +373,48 @@ export default {
     }
   },
   methods: {
+    dblclick({ executionTime, createTime }, column) {
+      console.log(
+        (new Date(executionTime).getTime() - new Date(createTime).getTime()) /
+          1000 +
+          "s"
+      );
+    },
     /** 查询调度日志列表 */
     getList() {
       this.loading = true;
-      listJobLog(this.addDateRange(this.queryParams, this.dateRange)).then(response => {
-          this.jobLogList = response.rows;
+      listJobLog(this.addDateRange(this.queryParams, this.dateRange)).then(
+        (response) => {
+          this.jobLogList = response.rows.map((item) => {
+            const { executionTime, createTime, duration } = item;
+
+            const durations=`${duration}h`;
+
+            const tqaaaa = (
+              parseInt (
+                new Date(executionTime).getTime() - new Date(createTime).getTime()
+              ) /
+              1000 /
+              60 /
+              60
+            ).toFixed(2)+'h';
+            const tqbbbb =
+              tqaaaa - duration > 0 ? `超时${tqaaaa - duration}h` : `未超时`;
+
+            return {
+              ...item,
+              tqaaaa,
+              tqbbbb,
+              durations,
+            };
+          });
           this.total = response.total;
           this.loading = false;
         }
       );
     },
+
+    // new Date(scope.row.executionTime).getTime()-new Date(scope.row.createTime).getTime())/1000+'s'
     // 返回按钮
     handleClose() {
       const obj = { path: "/monitor/job" };
@@ -273,7 +433,7 @@ export default {
     },
     // 多选框选中数据
     handleSelectionChange(selection) {
-      this.ids = selection.map(item => item.jobLogId);
+      this.ids = selection.map((item) => item.jobLogId);
       this.multiple = !selection.length;
     },
     /** 详细按钮操作 */
@@ -284,28 +444,40 @@ export default {
     /** 删除按钮操作 */
     handleDelete(row) {
       const jobLogIds = this.ids;
-      this.$modal.confirm('是否确认删除调度日志编号为"' + jobLogIds + '"的数据项?').then(function() {
-        return delJobLog(jobLogIds);
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("删除成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm('是否确认删除调度日志编号为"' + jobLogIds + '"的数据项?')
+        .then(function () {
+          return delJobLog(jobLogIds);
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("删除成功");
+        })
+        .catch(() => {});
     },
     /** 清空按钮操作 */
     handleClean() {
-      this.$modal.confirm('是否确认清空所有调度日志数据项?').then(function() {
-        return cleanJobLog();
-      }).then(() => {
-        this.getList();
-        this.$modal.msgSuccess("清空成功");
-      }).catch(() => {});
+      this.$modal
+        .confirm("是否确认清空所有调度日志数据项?")
+        .then(function () {
+          return cleanJobLog();
+        })
+        .then(() => {
+          this.getList();
+          this.$modal.msgSuccess("清空成功");
+        })
+        .catch(() => {});
     },
     /** 导出按钮操作 */
     handleExport() {
-      this.download('/monitor/jobLog/export', {
-        ...this.queryParams
-      }, `log_${new Date().getTime()}.xlsx`)
-    }
-  }
+      this.download(
+        "/monitor/jobLog/export",
+        {
+          ...this.queryParams,
+        },
+        `log_${new Date().getTime()}.xlsx`
+      );
+    },
+  },
 };
 </script>

部分文件因为文件数量过多而无法显示