Browse Source

项目申请表、实施表和委外表打印优化

ljb 8 months ago
parent
commit
f2b216e676

+ 82 - 41
src/views/project-manage/components/apply-form.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div v-if="operateType === 'edit'" class="tool-btn" style="width: 800px; margin: 0 auto; text-align: right;">
-      <el-button type="primary" v-print="'#applyDoc'">打印</el-button>
+      <el-button size="small" type="primary" icon="el-icon-printer" v-print="printConfig" @click="isPrintPage = true">打印</el-button>
     </div>
     <div id="applyDoc" class="apply-form" v-loading="loading">
       <h3 class="page-title" style="height: 60px; line-height: 60px; margin: 0;">{{ teantData.tenantName }}</h3>
@@ -21,25 +21,28 @@
         <tbody>
           <tr>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>研发项目名称
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>研发项目名称
             </td>
             <td class="doc-input">
-              <el-input v-model="formData.xmmc" placeholder="请输入项目名称" :disabled="isEdit" />
+              <el-input v-if="!isPrintPage" v-model="formData.xmmc" placeholder="请输入项目名称" :disabled="isEdit" />
+              <span v-else style="display: inline-block; padding: 12px 6px;">{{ formData.xmmc }}</span>
             </td>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目编号
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目编号
             </td>
             <td class="doc-input">
-              <el-input v-model="formData.xmbh" placeholder="请输入项目编号" :disabled="isEdit" />
+              <el-input v-if="!isPrintPage" v-model="formData.xmbh" placeholder="请输入项目编号" :disabled="isEdit" />
+              <span v-else style="display: inline-block; padding: 12px 6px;">{{ formData.xmbh }}</span>
             </td>
           </tr>
 
           <tr>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>研发开始时间
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>研发开始时间
             </td>
             <td class="doc-input">
               <el-date-picker
+                v-if="!isPrintPage"
                 v-model="formData.xmkssj"
                 format="yyyy年MM月dd日"
                 value-format="yyyy-MM-dd"
@@ -47,12 +50,14 @@
                 style="width: 100%"
                 :disabled="isEdit"
               ></el-date-picker>
+              <span v-else style="display: inline-block; padding: 12px 6px;">{{ formData.xmkssj }}</span>
             </td>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>研发结束时间
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>研发结束时间
             </td>
             <td class="doc-input">
               <el-date-picker
+                v-if="!isPrintPage"
                 v-model="formData.xmjssj"
                 format="yyyy年MM月dd日"
                 value-format="yyyy-MM-dd"
@@ -60,15 +65,17 @@
                 style="width: 100%"
                 :disabled="isEdit"
               ></el-date-picker>
+              <span v-else style="display: inline-block; padding: 12px 6px;">{{ formData.xmjssj }}</span>
             </td>
           </tr>
 
           <tr>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目申请单位
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目申请单位
             </td>
             <td colspan="3">
               <second-unit-cascader
+                v-show="!isPrintPage"
                 ref="secondUnitCascader"
                 v-model="formData.xmsqdwid"
                 :yearAndMonth="yearAndMonth"
@@ -77,95 +84,116 @@
                 @change="handleSecondUnitChange"
               >
               </second-unit-cascader>
+              <span v-show="isPrintPage" style="display: inline-block; padding: 12px;">{{ xmsqdwName }}</span>
             </td>
           </tr>
           
           <tr>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目负责人
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目负责人
             </td>
             <td class="doc-input">
-              <person-select v-model="formData.xmfzr" :yearAndMonth="xmStartDateYearAndMonth" valueKey="id" :disabled="isEdit" style="width: 100%" />
+              <person-select v-show="!isPrintPage" v-model="formData.xmfzr" :yearAndMonth="xmStartDateYearAndMonth" valueKey="id" :disabled="isEdit" style="width: 100%" />
+              <span v-show="isPrintPage" style="display: inline-block; padding: 12px 6px;">{{ getXmfzrName }}</span>
             </td>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>研究类型
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>研究类型
             </td>
             <td class="doc-input">
               <avue-select
+                v-if="!isPrintPage"
                 v-model="formData.yjlx"
                 placeholder="请选择"
                 :dic="studyTypeList"
                 style="width: 100%"
               ></avue-select>
+              <span v-else style="display: inline-block; padding: 12px;">{{ formData.yjlx }}</span>
             </td>
           </tr>
           <tr>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目来源
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目来源
             </td>
             <td class="doc-input">
               <avue-select
+                v-if="!isPrintPage"
                 v-model="formData.xmly"
                 placeholder="请选择"
                 :dic="projectSourceList"
                 style="width: 100%"
               ></avue-select>
+              <span v-else style="display: inline-block; padding: 12px;">{{ formData.xmly }}</span>
             </td>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目开展形式
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目开展形式
             </td>
             <td class="doc-input">
               <avue-select
+                v-if="!isPrintPage"
                 v-model="formData.xmkzxs"
                 placeholder="请选择"
                 :dic="implementFormatList"
                 style="width: 100%"
               ></avue-select>
+              <span v-else style="display: inline-block; padding: 12px;">{{ formData.xmkzxs }}</span>
             </td>
           </tr>
           <tr>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>预期成果形式
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>预期成果形式
             </td>
             <td class="doc-input">
               <avue-select
+                v-if="!isPrintPage"
                 multiple
                 v-model="formData.yqcgxs"
                 placeholder="请选择"
                 :dic="expectedOutComeFormList"
                 style="width: 100%"
               ></avue-select>
+              <template v-else>
+                <div style="padding: 12px;">
+                  <div v-for="(item, index) of formData.yqcgxs" :key="index">{{ item }}</div>
+                </div>
+              </template>
             </td>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目技术经济目标
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目技术经济目标
             </td>
             <td class="doc-input">
               <avue-select
+                v-if="!isPrintPage"
                 multiple
                 v-model="formData.xmjsjjmb"
                 placeholder="请选择"
                 :dic="economicObjectivesList"
                 style="width: 100%"
               ></avue-select>
+              <template v-else>
+                <div style="padding: 12px;">
+                  <div v-for="(item, index) of formData.xmjsjjmb" :key="index">{{ item }}</div>
+                </div>
+              </template>
             </td>
           </tr>
           <tr>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目预算总额(万元)
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>项目预算总额(万元)
             </td>
             <td class="doc-input">
                 <!-- <el-input-number v-model="formData.xmysze" type="number" :min="0" controls-position="right" :disabled="isEdit" /> -->
                 {{ getXmysze }}
             </td>
             <td class="doc-label">
-              <span style="color: red; padding-right: 3px; font-size: 16px;">*</span>其中
+              <span v-if="!isPrintPage" style="color: red; padding-right: 3px; font-size: 16px;">*</span>其中
             </td>
             <td class="doc-input">
               <div class="year-list">
                 <div class="year-list-item" v-for="year of yearList" :key="year" :style="{ height: yearList.length == 1 ? '51px' : '32px', lineHeight: yearList.length == 1 ? '51px' : '32px' }">
                   <div class="year" >{{ year }}</div>
                   <div class="year-input">
-                    <input v-model="formData[year]" type="number" @input="handleYearInput" style="padding: 0 6px;" :disabled="isEdit" />
+                    <input v-if="!isPrintPage" v-model="formData[year]" type="number" @input="handleYearInput" style="padding: 0 6px;" :disabled="isEdit" />
+                    <span v-else style="padding-left: 12px;">{{ formData[year] }}万元</span>
                   </div>
                 </div>
               </div>
@@ -174,7 +202,7 @@
         </tbody>
       </table>
 
-      <avue-form v-model="formData" :option="option" style="margin-top: 30px; padding: 0;">
+      <avue-form v-show="!isPrintPage" v-model="formData" :option="option" style="margin-top: 30px; padding: 0;">
         <template slot="lxpwLabel">
           <label>立项批文</label>
           <el-link type="primary" style="position: absolute; left: 220px; z-index: 1;">下载模板</el-link>
@@ -188,7 +216,27 @@
           <el-link type="primary" style="position: absolute; left: 220px; z-index: 1;">下载模板</el-link>
         </template>
       </avue-form>
-      <p class="tip">注:可一次上传多个相关文件(文档、表格、图片等)。 支持格式:DOC, PDF, Excel, PNG, JPG, PPT 等。 请确保文件内容清晰有效。</p>
+      <div v-show="isPrintPage" class="file-list" style="margin-top: 30px;">
+        <div class="file-list-item" style="display: flex; margin-bottom: 18px;">
+          <div class="name">立项批文:</div>
+          <div class="file-wrap">
+            <div v-for="(item, idx) of formData.lxpw" :key="idx">{{ item.label }}</div>
+          </div>
+        </div>
+        <div class="file-list-item" style="display: flex; margin-bottom: 18px;">
+          <div class="name">立项报告:</div>
+          <div class="file-wrap">
+            <div v-for="(item, idx) of formData.lxbg" :key="idx">{{ item.label }}</div>
+          </div>
+        </div>
+        <div class="file-list-item" style="display: flex;">
+          <div class="name">其他资料:</div>
+          <div class="file-wrap">
+            <div v-for="(item, idx) of formData.qtzl" :key="idx">{{ item.label }}</div>
+          </div>
+        </div>
+      </div>
+      <p v-if="!isPrintPage" class="tip">注:可一次上传多个相关文件(文档、表格、图片等)。 支持格式:DOC, PDF, Excel, PNG, JPG, PPT 等。 请确保文件内容清晰有效。</p>
 
       <div class="btn-wrap printHide" style="text-align: center;">
         <el-button type="primary" style="width: 160px;" @click="handleSaveBtn">保存</el-button>
@@ -201,7 +249,6 @@
 import secondUnitCascader from "@/components/second-unit-cascader";
 import personSelect from "@/components/person-select";
 import { getDictionary } from "@/api/system/dictbiz";
-import { getList as getTechnicanRosterList } from "@/api/basicResource/technicianRoster";
 import { add, update, getApprove } from "@/api/projectManage/projectList";
 import moment from "moment";
 import { deepClone } from "@/util/util";
@@ -261,7 +308,15 @@ export default {
       xmsqdwName: '',
 
       // 租户信息
-      teantData: {}
+      teantData: {},
+
+      isPrintPage: false,
+      printConfig: {
+        el: '#applyDoc', //被打印部分的id
+        closeCallback: () => {
+          this.isPrintPage = false;
+        }
+      },
     };
   },
   watch: {
@@ -277,7 +332,7 @@ export default {
     },
     'formData.xmysze'(newVal) {
       this.calcBudgetIsExceed(newVal);
-    }
+    },
   },
   computed: {
     ...mapGetters(["userInfo"]),
@@ -482,22 +537,6 @@ export default {
         this.budgetIsExceed = false;
       }
     },
-    /**
-     * 获取人员花名册
-     */
-    // getTechnicanRosterListFunc(yearAndMonth) {
-    //   if (!yearAndMonth) {
-    //     this.fzrList = [];
-    //     return;
-    //   }
-    //   getTechnicanRosterList(1, 99999, { yearAndMonth }).then(res => {
-    //     if (res.data.success) {
-    //       this.fzrList = res.data.data.records.map(item => {
-    //         return { label: item.name, value: item.id };
-    //       });
-    //     }
-    //   });
-    // },
     validForm() {
       let errorText = '';
       if (!this.formData.xmmc) {
@@ -622,7 +661,7 @@ export default {
 
 .project-basic-info .info-row {
   line-height: 26px;
-  color: #666;
+  color: #333;
 }
 
 .apply-form {
@@ -641,6 +680,7 @@ table {
   font-size: 14px;
 }
 .doc-input {
+  width: 300px;
   text-align: center;
   color: #333;
 }
@@ -668,7 +708,7 @@ tr td {
     .year-input {
       input {
         width: 100%;
-        height: 30px;
+        min-height: 30px;
         border: 0;
       }
     }
@@ -689,3 +729,4 @@ tr td {
   font-size: 12px;
 }
 </style>
+

+ 2 - 1
src/views/project-manage/components/change-form.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div class="tool-btn" style="width: 800px; margin: 0 auto; text-align: right;">
-      <el-button type="primary" v-print="'#changeDoc'" :disabled="!disabled">打印</el-button>
+      <el-button size="small" type="primary" icon="el-icon-printer" v-print="'#changeDoc'" :disabled="!disabled">打印</el-button>
     </div>
     <div id="changeDoc" class="doc-page">
       <h3 class="page-title">项目变更申请表</h3>
@@ -466,6 +466,7 @@ table {
   text-align: center;
   color: #333;
   width: 35%;
+  height: 40px;
 }
 
 .el-input__inner {

+ 64 - 25
src/views/project-manage/components/implement-form.vue

@@ -1,7 +1,7 @@
 <template>
   <div>
     <div class="tool-btn">
-      <el-button type="primary" v-print="'#implementDoc'">打印</el-button>
+      <el-button v-if="implementId" size="small" type="primary" icon="el-icon-printer" v-print="printConfig" @click="isPrintPage = true">打印</el-button>
     </div>
     <div id="implementDoc" class="doc-page" v-loading="loading">
       <h3 class="page-title" style="height: 60px; line-height: 60px; margin: 0;">{{ teantData.tenantName }}</h3>
@@ -10,20 +10,21 @@
       <div class="project-basic-info">
         <div class="info-row">
           <span v-if="!disabled">{{ `研发项目名称:${ selProject.xmmc || '' }` }}</span>
-          <span v-else>{{ `研发项目名称:${ formData.xmEntity.xmmc || '' }` }}</span>
+          <span v-else>{{ `研发项目名称:${ formData.xmEntity ? formData.xmEntity.xmmc : '' }` }}</span>
         </div>
         <div class="info-row">
           <span v-if="!disabled">{{ `项目负责人:${ selProject.xmmc || '' }` }}</span>
-          <span v-else>{{ `项目负责人:${ formData.xmEntity.xmfzrxm || '' }` }}</span>
+          <span v-else>{{ `项目负责人:${ formData.xmEntity ? formData.xmEntity.xmfzrxm : '' }` }}</span>
         </div>
         <div class="info-row">
           <span v-if="!disabled">{{ `项目申请单位:${ selProject.xmsqdw || '' }` }}</span>
-          <span v-else>{{ `项目申请单位:${ formData.xmEntity.xmsqdw || '' }` }}</span>
+          <span v-else>{{ `项目申请单位:${ formData.xmEntity ? formData.xmEntity.xmsqdw : '' }` }}</span>
         </div>
         <div class="info-row">{{ `项目执行期:${ getXmDateRange || '' }` }}</div>
         <div class="info-row">
           <span>填报时间:</span>
-          <span><el-date-picker v-model="formData.fillDate" value-format="yyyy-MM-dd" @change="handleFillDateChange" :disabled="disabled" /></span>
+          <span v-if="!disabled"><el-date-picker v-model="formData.fillDate" value-format="yyyy-MM-dd" @change="handleFillDateChange" :disabled="disabled" /></span>
+          <span v-else>{{ formData.fillDate }}</span>
         </div>
       </div>
 
@@ -33,7 +34,7 @@
       <table style="margin-top: 20px;">
         <tbody>
           <tr>
-            <td class="doc-label"><span style="color: red; margin-right: 3px;">*</span>研发项目名称</td>
+            <td class="doc-label"><span v-if="!disabled" style="color: red; margin-right: 3px;">*</span>研发项目名称</td>
             <td class="doc-input">
               <project-select
                 v-if="!disabled"
@@ -43,12 +44,12 @@
                 @change="handleProjectChange"
                 :params="{ yearAndMonth: fillDateYearAndMonth }"
               ></project-select>
-              <span v-else>{{ formData.xmEntity.xmmc }}</span>
+              <span v-else>{{ formData.xmEntity ? formData.xmEntity.xmmc : '' }}</span>
             </td>
             <td class="doc-label">项目申请单位</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.xmsqdw }}</span>
-              <span v-else>{{ formData.xmEntity.xmsqdw }}</span>
+              <span v-else>{{ formData.xmEntity ? formData.xmEntity.xmsqdw : '' }}</span>
             </td>
           </tr>
 
@@ -56,17 +57,19 @@
             <td class="doc-label">项目编号</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.xmbh }}</span>
-              <span v-else>{{ formData.xmEntity.xmbh }}</span>
+              <span v-else>{{ formData.xmEntity ? formData.xmEntity.xmbh : '' }}</span>
             </td>
-            <td class="doc-label"><span style="color: red; margin-right: 3px;">*</span>项目实施类型</td>
+            <td class="doc-label"><span v-if="!disabled" style="color: red; margin-right: 3px;">*</span>项目实施类型</td>
             <td class="doc-input">
               <avue-select
+                v-if="!disabled"
                 v-model="formData.type"
                 placeholder="请选择"
                 :dic="typeList"
                 style="width: 100%"
                 :disabled="disabled"
               ></avue-select>
+              <span v-else>{{ getTypeName }}</span>
             </td>
           </tr>
 
@@ -74,12 +77,12 @@
             <td class="doc-label">项目负责人</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.xmfzrxm }}</span>
-              <span v-else>{{ formData.xmEntity.xmfzrxm }}</span>
+              <span v-else>{{ formData.xmEntity ? formData.xmEntity.xmfzrxm : '' }}</span>
             </td>
             <td class="doc-label">研究类型</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.yjlx }}</span>
-              <span v-else>{{ formData.xmEntity.yjlx }}</span>
+              <span v-else>{{ formData.xmEntity ? formData.xmEntity.yjlx : '' }}</span>
             </td>
           </tr>
 
@@ -87,12 +90,12 @@
             <td class="doc-label">研发开始时间</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.xmkssj }}</span>
-              <span v-else>{{ formData.xmEntity.xmkssj }}</span>
+              <span v-else>{{ formData.xmEntity ? formData.xmEntity.xmkssj : '' }}</span>
             </td>
             <td class="doc-label">研发结束时间</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.xmkssj }}</span>
-              <span v-else>{{ formData.xmEntity.xmjssj }}</span>
+              <span v-else>{{ formData.xmEntity ? formData.xmEntity.xmjssj : '' }}</span>
             </td>
           </tr>
 
@@ -100,12 +103,12 @@
             <td class="doc-label">项目来源</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.xmly }}</span>
-              <span v-else>{{ formData.xmEntity.xmly }}</span>
+              <span v-else>{{ formData.xmEntity ? formData.xmEntity.xmly : '' }}</span>
             </td>
             <td class="doc-label">项目开展形式</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.xmkzxs }}</span>
-              <span v-else>{{ formData.xmEntity.xmkzxs }}</span>
+              <span v-else>{{ formData.xmEntity ? formData.xmEntity.xmkzxs : '' }}</span>
             </td>
           </tr>
 
@@ -113,27 +116,40 @@
             <td class="doc-label">预期成果形式</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.yqcgxs }}</span>
-              <span v-else>{{ formData.xmEntity.yqcgxs }}</span>
+              <div v-else style="text-align: left; padding: 6px 12px;">
+                <div v-for="(item, index) of formData.yqcgxs" :key="index" style="line-height: 22px;">{{ item }}</div>
+              </div>
             </td>
             <td class="doc-label">项目技术经济目标</td>
             <td class="doc-input">
               <span v-if="!disabled">{{ selProject.xmjsjjmb }}</span>
-              <span v-else>{{ formData.xmEntity.xmjsjjmb }}</span>
+              <div v-else style="text-align: left; padding: 6px 12px;">
+                <div v-for="(item, index) of formData.xmjsjjmb" :key="index" style="line-height: 22px;">{{ item }}</div>
+              </div>
             </td>
           </tr>
 
         </tbody>
       </table>
 
-      <avue-form v-model="formData" :option="option" style="margin-top: 30px; padding: 0;">
+      <avue-form v-show="!isPrintPage" v-model="formData" :option="option" style="margin-top: 30px; padding: 0;">
         <template slot="attachmentLabel">
-          <label>附件信息</label>
+          <label>附件信息</label>
           <el-link type="primary" style="position: absolute; left: 290px; z-index: 1;">下载模板</el-link>
         </template>
       </avue-form>
-      <p class="tip">注:可一次上传多个相关文件(文档、表格、图片等)。 支持格式:DOC, PDF, Excel, PNG, JPG, PPT 等。 请确保文件内容清晰有效。</p>
 
-      <div v-if="!disabled" class="btn-wrap printHide" style="text-align: center; margin-top: 30px;">
+      <div v-show="isPrintPage" class="file-list" style="margin-top: 30px;">
+        <div class="file-list-item" style="display: flex; margin-bottom: 18px;">
+          <div class="name">附件信息:</div>
+          <div class="file-wrap">
+            <div v-for="(item, idx) of formData.attachment" :key="idx">{{ item.label }}</div>
+          </div>
+        </div>
+      </div>
+      <p v-if="!disabled" class="tip">注:可一次上传多个相关文件(文档、表格、图片等)。 支持格式:DOC, PDF, Excel, PNG, JPG, PPT 等。 请确保文件内容清晰有效。</p>
+
+      <div v-if="!disabled" class="btn-wrap" style="text-align: center; margin-top: 30px;">
         <el-button type="primary" style="width: 160px;" @click="handleSaveBtn">保存</el-button>
       </div>
     </div>
@@ -174,14 +190,22 @@ export default {
       typeList: [],
 
       teantData: {},
+
+      isPrintPage: false,
+      printConfig: {
+        el: '#implementDoc', //被打印部分的id
+        closeCallback: () => {
+          this.isPrintPage = false;
+        }
+      },
     };
   },
   computed: {
     ...mapGetters(["userInfo"]),
     getXmDateRange() {
       if (this.disabled) {
-        let xmkssj = this.formData.xmEntity.xmkssj ? moment(this.formData.xmEntity.xmkssj).format('yyyy年MM月DD日') : '';
-        let xmjssj = this.formData.xmEntity.xmjssj ? moment(this.formData.xmEntity.xmjssj).format('yyyy年MM月DD日') : '';
+        let xmkssj = this.formData.xmEntity && this.formData.xmEntity.xmkssj ? moment(this.formData.xmEntity.xmkssj).format('yyyy年MM月DD日') : '';
+        let xmjssj = this.formData.xmEntity && this.formData.xmEntity.xmjssj ? moment(this.formData.xmEntity.xmjssj).format('yyyy年MM月DD日') : '';
         return `${xmkssj}至${xmjssj}`;
       } else {
         let xmkssj = this.selProject.xmkssj ? moment(this.selProject.xmkssj).format('yyyy年MM月DD日') : '';
@@ -218,6 +242,10 @@ export default {
           },
         ],
       }
+    },
+    getTypeName() {
+      let currObj = this.typeList.find(item => item.value == this.formData.type);
+      return currObj ? currObj.label : '';
     }
   },
   watch: {
@@ -271,6 +299,16 @@ export default {
             ...data.data,
             attachment: JSON.parse(data.data.attachment)
           };
+          console.log(this.formData)
+
+          if (this.formData.xmEntity && this.formData.xmEntity.yqcgxs) {
+            this.formData.yqcgxs = this.formData.xmEntity.yqcgxs.split(',');
+          }
+          if (this.formData.xmEntity && this.formData.xmEntity.xmjsjjmb) {
+            this.formData.xmjsjjmb = this.formData.xmEntity.xmjsjjmb.split(',');
+          }
+
+          console.log(this.formData)
           this.currProjectId = data.data.xmId;
         }
         
@@ -335,7 +373,7 @@ export default {
 
 .project-basic-info .info-row {
   line-height: 26px;
-  color: #666;
+  color: #333;
 }
 
 .doc-page {
@@ -357,6 +395,7 @@ table {
   text-align: center;
   color: #333;
   width: 35%;
+  height: 40px;
 }
 
 .el-input__inner {

+ 14 - 5
src/views/project-manage/components/outsourcing-doc.vue

@@ -1,19 +1,20 @@
 <template>
   <div v-loading="loading">
     <div class="header-btn">
-      <el-button type="primary" @click="handleAddClick">新增</el-button>
-      <el-button type="primary" v-print="'#outsourcingWrap'">打印</el-button>
+      <el-button size="small" type="primary" icon="el-icon-plus" @click="handleAddClick">新增</el-button>
+      <el-button size="small" type="primary" icon="el-icon-printer" v-print="printConfig" @click="isPrintPage = true">打印</el-button>
     </div>
     
     <div id="outsourcingWrap" class="doc-page">
       <h3 class="page-title">委外项目管理</h3>
-      <year-month-select v-model="params.yearAndMonth" :showMonth="false"></year-month-select>
+      <year-month-select v-show="!isPrintPage" v-model="params.yearAndMonth" :showMonth="false"></year-month-select>
       <table class="doc-table">
         <tbody>
           <tr>
             <td class="doc-label">研发项目名称</td>
             <td class="doc-input">
-              <project-select v-model="params.xmId" @change="handleProjectChange"></project-select>
+              <project-select v-show="!isPrintPage" v-model="params.xmId" @change="handleProjectChange"></project-select>
+              <span v-show="isPrintPage">{{ selProject.xmmc }}</span>
             </td>
             <td class="doc-label">研发项目编号</td>
             <td class="doc-input">{{ selProject.xmbh }}</td>
@@ -31,7 +32,7 @@
                     <td width="8%">技术合同登记类型</td>
                     <td width="8%">技术合同登记金额(万元)</td>
                     <td width="31%">附件上传</td>
-                    <td width="5%" class="operate-col">操作</td>
+                    <td v-show="!isPrintPage" width="5%" class="operate-col">操作</td>
                   </tr>
                 </thead>
                 <tbody>
@@ -118,6 +119,14 @@ export default {
 
       selProject: {},
 
+      isPrintPage: false,
+      printConfig: {
+        el: '#outsourcingWrap', //被打印部分的id
+        closeCallback: () => {
+          this.isPrintPage = false;
+        }
+      },
+
       drawerTitle: '',
       drawerVisible: false,
       option:{