jiangbiao 1 рік тому
батько
коміт
3c89d3bdd0

+ 28 - 7
master/src/main/java/com/ruoyi/project/training/bccnew/controller/TTsNewController.java

@@ -136,6 +136,10 @@ public class TTsNewController extends BaseController {
                     List<TTsFirstplan> firstplanAll = tTsFirstplanService.selectTTsFirstplanListByNewId(tTsFirstplan);
                     tTsFirstplan.setPlanStatus(5L);
                     List<TTsFirstplan> firstplanNow = tTsFirstplanService.selectTTsFirstplanListByNewId(tTsFirstplan);
+                    if (firstplanNow.isEmpty()) {
+                        tTsFirstplan.setPlanStatus(3L);
+                        firstplanNow = tTsFirstplanService.selectTTsFirstplanListByNewId(tTsFirstplan);
+                    }
                     Integer firstAll = firstplanAll.size();
                     Integer firstNow = firstplanNow.size();
                     Integer secAll = 0;
@@ -146,6 +150,10 @@ public class TTsNewController extends BaseController {
                         List<TTsLjplan> ljPlansAll = tTsLjplanService.selectTTsLjplanListByNewId(tTsLjplan);
                         tTsLjplan.setPlanStatus(5L);
                         List<TTsLjplan> ljPlansNow = tTsLjplanService.selectTTsLjplanListByNewId(tTsLjplan);
+                        if (ljPlansNow.isEmpty()) {
+                            tTsLjplan.setPlanStatus(3L);
+                            ljPlansNow = tTsLjplanService.selectTTsLjplanListByNewId(tTsLjplan);
+                        }
                         secAll = ljPlansAll.size();
                         secNow = ljPlansNow.size();
                     } else if (t.getPlanType() == 2) {
@@ -154,6 +162,10 @@ public class TTsNewController extends BaseController {
                         List<TTsYsplan> ysPlansAll = tTsYsplanService.selectTTsYsplanListByNewId(tTsYsplan);
                         tTsYsplan.setPlanStatus(5L);
                         List<TTsYsplan> ysPlansNow = tTsYsplanService.selectTTsYsplanListByNewId(tTsYsplan);
+                        if (ysPlansNow.isEmpty()) {
+                            tTsYsplan.setPlanStatus(3L);
+                            ysPlansNow = tTsYsplanService.selectTTsYsplanListByNewId(tTsYsplan);
+                        }
                         secAll = ysPlansAll.size();
                         secNow = ysPlansNow.size();
                     } else if (t.getPlanType() == 3) {
@@ -162,6 +174,10 @@ public class TTsNewController extends BaseController {
                         List<TTsFlplan> flPlansAll = tTsFlplanService.selectTTsFlplanListByNewId(tTsFlplan);
                         tTsFlplan.setPlanStatus(5L);
                         List<TTsFlplan> flPlansNow = tTsFlplanService.selectTTsFlplanListByNewId(tTsFlplan);
+                        if (flPlansNow.isEmpty()) {
+                            tTsFlplan.setPlanStatus(3L);
+                            flPlansNow =  tTsFlplanService.selectTTsFlplanListByNewId(tTsFlplan);
+                        }
                         secAll = flPlansAll.size();
                         secNow = flPlansNow.size();
                     } else if (t.getPlanType() == 4) {
@@ -170,6 +186,10 @@ public class TTsNewController extends BaseController {
                         List<TTsFtplan> ftPlansAll = tTsFtplanService.selectTTsFtplanListByNewId(tTsFtplan);
                         tTsFtplan.setPlanStatus(5L);
                         List<TTsFtplan> ftPlansNow = tTsFtplanService.selectTTsFtplanListByNewId(tTsFtplan);
+                        if (ftPlansNow.isEmpty()) {
+                            tTsFtplan.setPlanStatus(3L);
+                            ftPlansNow =  tTsFtplanService.selectTTsFtplanListByNewId(tTsFtplan);
+                        }
                         secAll = ftPlansAll.size();
                         secNow = ftPlansNow.size();
                     }
@@ -373,12 +393,6 @@ public class TTsNewController extends BaseController {
         String staffId = tTsNew.getStaffId();
         SysUser mentor = sysUserService.selectUserByStaffId(mentorStaffId);
         SysUser apprentice = sysUserService.selectUserByStaffId(staffId);
-        List<TTsApprove> tTsApproves = tsApproveService.selectTTsApproveByNewId(tTsNew.getNewId());
-        if (CollectionUtils.isNotEmpty(tTsApproves)) {
-            SysUser manager = sysUserService.selectUserById(Long.valueOf(tTsApproves.get(0).getApprover()));
-            if (StringUtils.isNotEmpty(manager.getSignUrl()))
-                params.put("mgrSign", Pictures.ofLocal(fileName(manager.getSignUrl())).size(100, 40).create());
-        }
         if (StringUtils.isNotEmpty(mentor.getSignUrl()))
             params.put("tutorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
         if (StringUtils.isNotEmpty(apprentice.getSignUrl()))
@@ -465,6 +479,13 @@ public class TTsNewController extends BaseController {
         String staffId = tTsNew.getStaffId();
         SysUser mentor = sysUserService.selectUserByStaffId(mentorStaffId);
         SysUser apprentice = sysUserService.selectUserByStaffId(staffId);
+        List<TTsApprove> tTsApproves = tsApproveService.selectTTsApproveByNewId(tTsNew.getNewId());
+        if (CollectionUtils.isNotEmpty(tTsApproves)) {
+            SysUser manager = sysUserService.selectUserById(Long.valueOf(tTsApproves.get(0).getApprover()));
+            if (StringUtils.isNotEmpty(manager.getSignUrl()))
+                params.put("mgrSign", Pictures.ofLocal(fileName(manager.getSignUrl())).size(100, 40).create());
+            params.put("mentorComments",Texts.of(tTsNew.getMentorComments()).create());
+        }
         if (StringUtils.isNotEmpty(mentor.getSignUrl()))
             params.put("tutorSignature", Pictures.ofLocal(fileName(mentor.getSignUrl())).size(100, 40).create());
         if (StringUtils.isNotEmpty(apprentice.getSignUrl()))
@@ -685,7 +706,7 @@ public class TTsNewController extends BaseController {
     private String fileName(String filepath) {
         String newFilePath = filepath.replace("/profile", "");
         String pathName = RuoYiConfig.getProfile() + newFilePath;
-        if (new File(pathName).exists()) {
+        if (!new File(pathName).exists()) {
             genSignImage(pathName);
         }
         return pathName;

+ 1 - 0
master/src/main/java/com/ruoyi/project/training/bccnew/service/impl/TTsApproveServiceImpl.java

@@ -162,6 +162,7 @@ public class TTsApproveServiceImpl implements ITTsApproveService {
         taskService.addComment(taskId, processInstancesId, devTask.getComment());
         taskService.complete(taskId, param);
         tTsNewService.updateTTsNew(tTsNew);
+        tTsApproveMapper.updateTTsApprove(tTsApprove);
         return AjaxResult.success();
     }
 

BIN
master/src/main/resources/static/word/training/appraisalForm.docx


+ 248 - 111
ui/src/views/training/bccnew/tsnew/index_s.vue

@@ -52,13 +52,62 @@
       </el-form-item>
     </el-form>
 
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['newstaff:tnNew:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['newstaff:tnNew:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['newstaff:tnNew:remove']"
+        >删除</el-button>
+      </el-col>
+      <!--        <el-col :span="1.5">-->
+      <!--            <el-button-->
+      <!--                    type="info"-->
+      <!--                    icon="el-icon-upload2"-->
+      <!--                    size="mini"-->
+      <!--                    @click="handleImport"-->
+      <!--                    v-hasPermi="['newstaff:tnNew:edit']"-->
+      <!--            >导入</el-button>-->
+      <!--        </el-col>-->
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['newstaff:tnNew:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
 
-    <el-table v-loading="loading" :data="tnNewList" @selection-change="handleSelectionChange" :height="clientHeight"
-              border>
-      <el-table-column type="selection" width="55" align="center"/>
+    <el-table v-loading="loading" :data="tnNewList" @selection-change="handleSelectionChange" :height="clientHeight" border>
+      <el-table-column type="selection" width="55" align="center" />
       <!--      <el-table-column label="培训员工编号" align="center" prop="staffId" :show-overflow-tooltip="true"/>-->
-      <el-table-column label="新员工" align="center" prop="staffName" width="100"/>
-      <el-table-column label="培训状态" align="center" prop="planStatus" width="120" :formatter="planStatusFormat">
+      <el-table-column label="新员工" align="center" prop="staffName" width="100" />
+      <el-table-column label="培训状态" align="center" prop="planStatus" width="120" :formatter="planStatusFormat" >
         <template slot-scope="scope">
           <el-tag v-if="scope.row.planStatus == 2" size="small" type="warning">待考试</el-tag>
           <el-tag v-if="scope.row.planStatus == 3" size="small" type="success">已完成</el-tag>
@@ -84,7 +133,7 @@
         </template>
       </el-table-column>
       <!--      <el-table-column label="导师员工编号" align="center" prop="mentorStaffId" :show-overflow-tooltip="true"/>-->
-      <el-table-column label="导师" align="center" prop="mentorStaffName" width="100"/>
+      <el-table-column label="导师" align="center" prop="mentorStaffName" width="100" />
       <el-table-column label="岗位" align="center" prop="planType" width="100">
         <template slot-scope="scope">
           <span v-if="scope.row.planType == 1" size="small" type="success">裂解</span>
@@ -95,51 +144,83 @@
       </el-table-column>
       <el-table-column label="三级教育记录卡" align="center" prop="three" width="80">
         <template slot-scope="scope">
-          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-three')"
-                     circle></el-button>
+          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-three')" circle></el-button>
         </template>
       </el-table-column>
 
       <el-table-column label="上岗能力评测表" align="center" prop="firstplan-score" width="80">
         <template slot-scope="scope">
-          <el-button icon="el-icon-folder" style="color:#6e96fa;"
-                     @click="handleDoc(scope.row , 'tsNew-firstplan-score')" circle></el-button>
+          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-firstplan-score')" circle></el-button>
         </template>
       </el-table-column>
       <el-table-column label="导师提名表" align="center" prop="agreement" width="80">
         <template slot-scope="scope">
-          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-teacher-order')"
-                     circle></el-button>
+          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDoc(scope.row , 'tsNew-teacher-order')" circle></el-button>
         </template>
       </el-table-column>
       <el-table-column label="带徒协议" align="center" prop="agreement" width="80">
         <template slot-scope="scope">
-          <el-button icon="el-icon-folder" style="color:#6e96fa;"
-                     @click="handleDownloadWord(scope.row, 'mentorAgreement')" circle></el-button>
+          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDownloadWord(scope.row, 'mentorAgreement')" circle></el-button>
         </template>
       </el-table-column>
       <el-table-column label="带徒目标" align="center" prop="target" width="80">
         <template slot-scope="scope">
-          <el-button icon="el-icon-folder" style="color:#6e96fa;" @click="handleDownloadWord(scope.row, 'targetPlan')"
-                     circle></el-button>
+          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDownloadWord(scope.row, 'targetPlan')" circle></el-button>
         </template>
       </el-table-column>
       <el-table-column label="培训考评" align="center" prop="tnNew-score" width="80">
         <template slot-scope="scope">
-          <el-button icon="el-icon-folder" style="color:#6e96fa;"
-                     @click="handleDownloadWord(scope.row, 'appraisalForm')" circle></el-button>
+          <el-button  icon="el-icon-folder" style="color:#6e96fa;" @click="handleDownloadWord(scope.row, 'appraisalForm')" circle></el-button>
         </template>
       </el-table-column>
       <el-table-column label="备注" align="center" prop="remarks" :show-overflow-tooltip="true" width="100"/>
-      <el-table-column label="操作" align="center" fixed="right" class-name="small-padding fixed-width">
+      <el-table-column label="操作" align="center" fixed="right"  class-name="small-padding fixed-width">
         <template slot-scope="scope">
           <el-button
             size="mini"
             type="text"
             icon="el-icon-view"
             @click="planList(scope.row)"
-          >培训计划
-          </el-button>
+          >培训计划</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['newstaff:tnNew:edit']"
+          >修改 </el-button>
+          <!--          <el-dropdown  size="mini">-->
+          <!--            <span class="el-dropdown-link">-->
+          <!--              <el-button-->
+          <!--                type="text"-->
+          <!--                size="mini"-->
+          <!--                icon="el-icon-download"-->
+          <!--              >下载<i class="el-icon-arrow-down"></i></el-button>-->
+          <!--            </span>-->
+          <!--            <el-dropdown-menu slot="dropdown">-->
+          <!--              <el-dropdown-item>-->
+          <!--                <el-button-->
+          <!--                  size="mini"-->
+          <!--                  type="text"-->
+          <!--                  @click="handleDownloadWord(scope.row, 'mentorAgreement')"-->
+          <!--                >师徒协议</el-button>-->
+          <!--              </el-dropdown-item>-->
+          <!--              <el-dropdown-item>-->
+          <!--                <el-button-->
+          <!--                  size="mini"-->
+          <!--                  type="text"-->
+          <!--                  @click="handleDownloadWord(scope.row, 'targetPlan')"-->
+          <!--                >导师带徒目标及计划</el-button>-->
+          <!--              </el-dropdown-item>-->
+          <!--              <el-dropdown-item>-->
+          <!--                <el-button-->
+          <!--                  size="mini"-->
+          <!--                  type="text"-->
+          <!--                  @click="handleDownloadWord(scope.row, 'appraisalForm')"-->
+          <!--                >导师带徒考评表</el-button>-->
+          <!--              </el-dropdown-item>-->
+          <!--            </el-dropdown-menu>-->
+          <!--          </el-dropdown>-->
         </template>
       </el-table-column>
     </el-table>
@@ -155,8 +236,8 @@
     <!-- 添加或修改新员工培训对话框 -->
     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
       <el-form ref="form" :model="form" :rules="rules" label-width="80px">
-        <el-form-item label="培训员工" prop="mentorStaffId">
-          <el-select v-model="form.staffId" filterable :placeholder="$t('请选择')+$t('培训员工')">
+        <el-form-item label="培训员工" prop="staffId">
+          <el-select v-model="form.staffId" filterable :placeholder="$t('请选择')+$t('培训员工')" :disabled="isEdit">
             <el-option
               v-for="item in userOption"
               :key="item.staffid"
@@ -166,8 +247,8 @@
             </el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="培训状态">
-          <el-select v-model="form.planStatus" placeholder="请选择培训状态">
+        <el-form-item label="培训状态"  prop="planStatus">
+          <el-select v-model="form.planStatus" placeholder="请选择培训状态" disabled>
             <el-option
               v-for="dict in planStatusOptions"
               :key="dict.dictValue"
@@ -176,20 +257,16 @@
             ></el-option>
           </el-select>
         </el-form-item>
-        <el-form-item label="开始时间" prop="startdate">
-          <el-date-picker clearable size="small" style="width: 200px"
-                          v-model="form.startdate"
-                          type="date"
-                          value-format="yyyy-MM-dd"
-                          placeholder="选择开始时间">
-          </el-date-picker>
-        </el-form-item>
-        <el-form-item label="结束时间" prop="enddate">
-          <el-date-picker clearable size="small" style="width: 200px"
-                          v-model="form.enddate"
-                          type="date"
-                          value-format="yyyy-MM-dd"
-                          placeholder="选择结束时间">
+        <el-form-item label="培训时间" prop="trainingDate">
+          <el-date-picker
+            v-model="form.trainingDate"
+            type="daterange"
+            :picker-options="pickerOptions"
+            value-format="yyyy-MM-dd"
+            range-separator="至"
+            start-placeholder="开始日期"
+            end-placeholder="结束日期"
+            align="right">
           </el-date-picker>
         </el-form-item>
         <el-form-item label="导师员工" prop="mentorStaffId">
@@ -208,27 +285,23 @@
             <el-radio
               key="1"
               :label="1"
-            >裂解
-            </el-radio>
+            >裂解</el-radio>
             <el-radio
               key="2"
               :label="2"
-            >压缩
-            </el-radio>
+            >压缩</el-radio>
             <el-radio
               key="3"
               :label="3"
-            >分离
-            </el-radio>
+            >分离</el-radio>
             <el-radio
               key="4"
               :label="4"
-            >芳烃
-            </el-radio>
+            >芳烃</el-radio>
           </el-radio-group>
         </el-form-item>
         <el-form-item label="备注" prop="remarks">
-          <el-input v-model="form.remarks" placeholder="请输入备注"/>
+          <el-input v-model="form.remarks" placeholder="请输入备注" />
         </el-form-item>
       </el-form>
       <div slot="footer" class="dialog-footer">
@@ -256,8 +329,7 @@
           <em>点击上传</em>
         </div>
         <div class="el-upload__tip" slot="tip">
-          <el-checkbox v-model="upload.updateSupport"/>
-          是否更新已经存在的用户数据
+          <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的用户数据
           <el-link type="info" style="font-size:12px" @click="importTemplate">下载模板</el-link>
         </div>
         <div class="el-upload__tip" style="color:red" slot="tip">提示:仅允许导入“xls”或“xlsx”格式文件!</div>
@@ -268,8 +340,7 @@
       </div>
     </el-dialog>
     <!-- 报告附件对话框 -->
-    <el-dialog :close-on-click-modal="false" v-dialogDrag :title="doc.title" :visible.sync="doc.open" width="1000px"
-               append-to-body>
+    <el-dialog  :close-on-click-modal="false" v-dialogDrag :title="doc.title" :visible.sync="doc.open" width="1000px" append-to-body >
       <el-upload v-hasPermi="['training:trainingrecords:file']"
                  ref="doc"
                  :limit="50"
@@ -290,13 +361,12 @@
       <el-table :data="doc.commonfileList" border>
         <el-table-column :label="$t('文件名')" align="center" prop="fileName" :show-overflow-tooltip="true">
           <template slot-scope="scope">
-            <a class="link-type" @click="handleDownload(scope.row)">
+            <a  class="link-type"  @click="handleDownload(scope.row)">
               <span>{{ scope.row.fileName }}</span>
             </a>
           </template>
         </el-table-column>
-        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true"
-                         width="80"/>
+        <el-table-column :label="$t('大小(Kb)')" align="center" prop="fileSize" :show-overflow-tooltip="true" width="80" />
         <el-table-column :label="$t('上传人')" align="center" prop="creator" :show-overflow-tooltip="true" width="120"/>
         <!--        <el-table-column :label="$t('培训日期')" align="center" prop="pDate"  width="150">-->
         <!--          <template slot-scope="scope">-->
@@ -318,38 +388,29 @@
               type="text"
               icon="el-icon-view"
               @click="handleSee(scope.row)"
-            >{{ $t('预览') }}
-            </el-button>
-            <el-button v-hasPermi="['training:trainingrecords:file']" type="text" size="small" v-if="scope.row.isEdit"
-                       @click="save(scope.row)">保存
-            </el-button>
-            <el-button type="text" size="small" v-if="scope.row.isEdit" @click="cancelFile(scope.row, scope.$index)">
-              取消
-            </el-button>
+            >{{ $t('预览') }}</el-button>
+            <el-button v-hasPermi="['training:trainingrecords:file']"  type="text" size="small" v-if="scope.row.isEdit" @click="save(scope.row)">保存</el-button>
+            <el-button type="text" size="small" v-if="scope.row.isEdit" @click="cancelFile(scope.row, scope.$index)">取消</el-button>
             <!--            <el-button v-hasPermi="['training:trainingrecords:file']" v-if="!scope.row.isEdit" @click="edit(scope.row)" icon="el-icon-edit" type="text" size="mini">编辑</el-button>-->
             <el-button
               size="mini"
               type="text"
               icon="el-icon-download"
               @click="handleDownload(scope.row)"
-            >{{ $t('下载') }}
-            </el-button>
+            >{{ $t('下载') }}</el-button>
             <el-button
               size="mini"
               type="text"
               icon="el-icon-delete"
               @click="handleDeleteDoc(scope.row)"
               v-hasPermi="['training:trainingrecords:file']"
-            >{{ $t('删除') }}
-            </el-button>
+            >{{ $t('删除') }}</el-button>
           </template>
         </el-table-column>
       </el-table>
-      <el-dialog :close-on-click-modal="false" v-dialogDrag :title="pdf.title" :visible.sync="pdf.open" width="1300px"
-                 append-to-body>
+      <el-dialog  :close-on-click-modal="false" v-dialogDrag :title="pdf.title" :visible.sync="pdf.open" width="1300px" append-to-body>
         <div style="margin-top: -60px;float: right;margin-right: 40px;">
-          <el-button size="mini" type="text" @click="openPdf">{{ $t('新页面打开PDF') }}</el-button>
-        </div>
+          <el-button size="mini" type="text" @click="openPdf">{{$t('新页面打开PDF')}}</el-button></div>
         <div style="margin-top: -30px">
           <iframe :src="pdf.pdfUrl" frameborder="0" width="100%" height="700px"></iframe>
         </div>
@@ -368,6 +429,7 @@ import {
   addTsnew,
   delTsnew,
   exportTsnew,
+  genAppraisalFormWord,
   getTsnew,
   importTemplate,
   listTsnew,
@@ -379,12 +441,43 @@ import Treeselect from "@riophae/vue-treeselect";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
 import {listStaff} from "@/api/training/newstaff/tnNew";
 import {allFileList, delCommonfile} from "@/api/common/commonfile";
+import { Loading } from 'element-ui';
+import {date} from "mockjs/src/mock/random/date";
+import {listUserNoPage} from "@/api/system/user";
+import {listStaffmgrByDeptAndTeam} from "@/api/plant/staffmgr";
 
 export default {
   name: "Tsnew",
-  components: {Treeselect},
+  components: { Treeselect },
   data() {
     return {
+      pickerOptions: {
+        shortcuts: [{
+          text: '最近一个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            end.setTime(start.getTime() + 3600 * 1000 * 24 * 30);
+            picker.$emit('pick', [start, end]);
+          }
+        }, {
+          text: '最近三个月',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            end.setTime(start.getTime() + 3600 * 1000 * 24 * 90);
+            picker.$emit('pick', [start, end]);
+          }
+        },{
+          text: '最近一年',
+          onClick(picker) {
+            const end = new Date();
+            const start = new Date();
+            end.setTime(start.getTime() + 3600 * 1000 * 24 * 365);
+            picker.$emit('pick', [start, end]);
+          }
+        }, ]
+      },
       // 遮罩层
       loading: true,
       // 选中数组
@@ -403,12 +496,12 @@ export default {
       title: "",
       // 部门树选项
       deptOptions: undefined,
-      clientHeight: 300,
+      clientHeight:300,
       // 培训状态字典
       planStatusOptions: [],
       // 培训类型 1-新员工 2-转岗字典
       planTypeOptions: [],
-      userOption: [],
+      userOption:[],
       // 是否显示弹出层
       open: false,
       // 用户导入参数
@@ -422,7 +515,7 @@ export default {
         // 是否更新已经存在的用户数据
         updateSupport: 0,
         // 设置上传的请求头部
-        headers: {Authorization: "Bearer " + getToken()},
+        headers: { Authorization: "Bearer " + getToken() },
         // 上传的地址
         url: process.env.VUE_APP_BASE_API + "/newstaff/tsNew/importData"
       },
@@ -440,7 +533,7 @@ export default {
         // 报告附件上传位置编号
         ids: 0,
         // 设置上传的请求头部
-        headers: {Authorization: "Bearer " + getToken()},
+        headers: { Authorization: "Bearer " + getToken() },
         // 上传的地址
         url: process.env.VUE_APP_BASE_API + "/common/commonfile/uploadFile",
         commonfileList: null,
@@ -452,7 +545,7 @@ export default {
         pId: null,
         form: {}
       },
-      pdf: {
+      pdf : {
         title: '',
         pdfUrl: '',
         numPages: null,
@@ -472,10 +565,24 @@ export default {
         enddate: null,
         planType: null,
       },
+      isEdit:false,
       // 表单参数
       form: {},
       // 表单校验
-      rules: {}
+      rules: {
+        mentorStaffId: [
+          { required: true, message: this.$t('导师') + this.$t('不能为空'), trigger: "change" }
+        ],
+        staffId: [
+          { required: true, message: this.$t('培训员工') + this.$t('不能为空'), trigger: "change" }
+        ],
+        trainingDate: [
+          { required: true, message: this.$t('培训时间') + this.$t('不能为空'), trigger: "blur" }
+        ],
+        planType: [
+          { required: true, message: this.$t('岗位') + this.$t('不能为空'), trigger: "change" }
+        ],
+      }
     };
   },
   watch: {
@@ -487,7 +594,7 @@ export default {
   created() {
     //设置表格高度对应屏幕高度
     this.$nextTick(() => {
-      this.clientHeight = document.body.clientHeight - 250
+      this.clientHeight = document.body.clientHeight -250
     })
     this.getList();
     this.getTreeselect();
@@ -497,44 +604,55 @@ export default {
     this.getDicts("training_newstaff_type").then(response => {
       this.planTypeOptions = response.data;
     });
-    listStaff(this.queryParams).then(response => {
-      this.userOption = response.data;
-    });
   },
   methods: {
     // 文件下载处理
     handleDownloadWord(row, type) {
+      let name;
+      let url;
       console.log(row)
       if (type == 'mentorAgreement') {
-        var name = row.mentorAgreementWordPath;
-        var url = row.mentorAgreementWordPath;
+        name = row.mentorAgreementWordPath;
+        url = row.mentorAgreementWordPath;
+        const a = document.createElement('a')
+        a.setAttribute('download', name)
+        a.setAttribute('target', '_blank')
+        a.setAttribute('href', process.env.VUE_APP_BASE_API + url)
+        a.click()
       } else if (type == 'targetPlan') {
-        var name = row.targetPlanWordPath;
-        var url = row.targetPlanWordPath;
+        name = row.targetPlanWordPath;
+        url = row.targetPlanWordPath;
+        const a = document.createElement('a')
+        a.setAttribute('download', name)
+        a.setAttribute('target', '_blank')
+        a.setAttribute('href', process.env.VUE_APP_BASE_API + url)
+        a.click()
       } else if (type == 'appraisalForm') {
-        var name = row.appraisalFormWordPath;
-        var url = row.appraisalFormWordPath;
+        genAppraisalFormWord(row.newId).then(res=>{
+          name = res.msg;
+          url = res.msg;
+          console.log(url)
+          const a = document.createElement('a')
+          a.setAttribute('download', name)
+          a.setAttribute('target', '_blank')
+          a.setAttribute('href', process.env.VUE_APP_BASE_API + url)
+          a.click()
+        })
       }
-      var suffix = url.substring(url.lastIndexOf("."), url.length);
-      console.log(url)
-      const a = document.createElement('a')
-      a.setAttribute('download', name)
-      a.setAttribute('target', '_blank')
-      a.setAttribute('href', process.env.VUE_APP_BASE_API + url)
-      a.click()
     },
     /** 查询新员工培训列表 */
     getList() {
       this.loading = true;
       listTsnew(this.queryParams).then(response => {
         this.tnNewList = response.rows;
-        for (let item of this.tnNewList) {
+        for (const item of this.tnNewList) {
           item.planFinish=parseInt(item.planFinish)
         }
         this.total = response.total;
         this.loading = false;
         console.log(this.tnNewList)
       });
+
     },
     /** 查询部门下拉树结构 */
     getTreeselect() {
@@ -558,6 +676,7 @@ export default {
     // 表单重置
     reset() {
       this.form = {
+        trainingDate: null,
         newId: null,
         staffId: null,
         name: null,
@@ -590,44 +709,62 @@ export default {
     // 多选框选中数据
     handleSelectionChange(selection) {
       this.ids = selection.map(item => item.newId)
-      this.single = selection.length !== 1
+      this.single = selection.length!==1
       this.multiple = !selection.length
     },
-    planList(row) {
+    planList(row){
       const newId = row.newId
-      this.$router.push("/training/bccnew/trainingPlan_s/" + newId);
+      this.$router.push("/training/bccnew/trainingPlan/" + newId);
     },
     /** 新增按钮操作 */
     handleAdd() {
+      this.isEdit=false;
       this.reset();
       this.open = true;
       this.title = "添加新员工培训";
     },
     /** 修改按钮操作 */
     handleUpdate(row) {
+      this.isEdit=true;
       this.reset();
       const newId = row.newId || this.ids
       getTsnew(newId).then(response => {
+        response.data.trainingDate=[];
+        response.data.trainingDate[0]=new Date( response.data.startdate);
+        response.data.trainingDate[1]=new Date( response.data.enddate);
         this.form = response.data;
         this.open = true;
         this.title = "修改新员工培训";
+        console.log(this.form)
       });
     },
     /** 提交按钮 */
     submitForm() {
       this.$refs["form"].validate(valid => {
         if (valid) {
+          let options={
+            text:'正在添加新员工导师带徒培训'
+          }
+          let loadingInstance = Loading.service(options);
+          this.form.startdate=this.form.trainingDate[0];
+          this.form.enddate=this.form.trainingDate[1];
           if (this.form.newId != null) {
             updateTsnew(this.form).then(response => {
               this.msgSuccess("修改成功");
               this.open = false;
               this.getList();
+              this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
+                loadingInstance.close();
+              });
             });
           } else {
             addTsnew(this.form).then(response => {
               this.msgSuccess("新增成功");
               this.open = false;
               this.getList();
+              this.$nextTick(() => { // 以服务的方式调用的 Loading 需要异步关闭
+                loadingInstance.close();
+              });
             });
           }
         }
@@ -640,7 +777,7 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning"
-      }).then(function () {
+      }).then(function() {
         return delTsnew(newIds);
       }).then(() => {
         this.getList();
@@ -654,7 +791,7 @@ export default {
         confirmButtonText: "确定",
         cancelButtonText: "取消",
         type: "warning"
-      }).then(function () {
+      }).then(function() {
         return exportTsnew(queryParams);
       }).then(response => {
         this.download(response.msg);
@@ -680,7 +817,7 @@ export default {
       this.upload.open = false;
       this.upload.isUploading = false;
       this.$refs.upload.clearFiles();
-      this.$alert(response.msg, "导入结果", {dangerouslyUseHTMLString: true});
+      this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
       this.getList();
     },
     // 提交上传文件
@@ -688,11 +825,11 @@ export default {
       this.$refs.upload.submit();
     },
     /** 报告附件按钮操作 */
-    handleDoc(row, fileType) {
+    handleDoc(row , fileType) {
       this.doc.pType = fileType
       this.doc.queryParams.pType = fileType
       this.doc.id = row.id;
-      this.doc.title = this.$t('附件');
+      this.doc.title = this.$t('附件') ;
       this.doc.open = true;
       this.doc.queryParams.pId = row.newId
       this.doc.pId = row.newId
@@ -701,7 +838,7 @@ export default {
         this.$refs.doc.clearFiles()
       })
     },
-    getFileList() {
+    getFileList (){
       allFileList(this.doc.queryParams).then(response => {
         response.forEach(element => {
           element["isEdit"] = false
@@ -720,7 +857,7 @@ export default {
     //附件上传成功处理
     handleFileDocSuccess(response, file, fileList) {
       this.doc.isUploading = false;
-      this.$alert(response.msg, this.$t('导入结果'), {dangerouslyUseHTMLString: true});
+      this.$alert(response.msg, this.$t('导入结果'), { dangerouslyUseHTMLString: true });
       this.getFileList()
     },
     // 文件下载处理
@@ -734,14 +871,14 @@ export default {
       a.setAttribute('href', process.env.VUE_APP_BASE_API + url)
       a.click()
     },
-    openPdf() {
+    openPdf(){
       window.open(this.pdf.pdfUrl);//path是文件的全路径地址
     },
-    handleSee(row) {
+    handleSee (row){
       // window.open(process.env.VUE_APP_BASE_API +'/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl);//path是文件的全路径地址
-      this.pdf.open = true
+      this.pdf.open =true
       this.pdf.title = row.fileName
-      this.pdf.pdfUrl = process.env.VUE_APP_BASE_API + '/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl
+      this.pdf.pdfUrl = process.env.VUE_APP_BASE_API +'/pdf/web/viewer.html?file=' + process.env.VUE_APP_BASE_API + row.fileUrl
     },
     /** 删除按钮操作 */
     handleDeleteDoc(row) {
@@ -750,7 +887,7 @@ export default {
         confirmButtonText: this.$t('确定'),
         cancelButtonText: this.$t('取消'),
         type: "warning"
-      }).then(function () {
+      }).then(function() {
         return delCommonfile(ids);
       }).then(() => {
         this.getFileList()