Parcourir la source

人员绩效1 5

yuhan il y a 1 an
Parent
commit
3fcb492d24

+ 10 - 3
itdmWeb/src/views/module-iTDM/itdmYeWu/index.vue

@@ -1,6 +1,6 @@
 <template>
     <a-card :bordered="false">
-        <itdm-xm-shuru :tableData1="tableData1"></itdm-xm-shuru>
+        <itdm-xm-shuru :tableData1="tableData1" @save="runFlowPathSaveData"></itdm-xm-shuru>
         <itdm-xq-pingshen :tableData2="tableData2"></itdm-xq-pingshen>
         <itdm-gc-shishi :tableData3="tableData3"></itdm-gc-shishi>
         <itdm-bg-jiaofu :tableData4="tableData4"></itdm-bg-jiaofu>
@@ -14,13 +14,13 @@ import ItdmXqPingshen from './itdmXqPingshen.vue'
 import ItdmGcShishi from './itdmGcShishi.vue'
 import ItdmBgJiaofu from './itdmBgJiaofu.vue'
 import ItdmXnJiesuan from './itdmXnJiesuan.vue'
-import { getYeWU } from '@/api/api'
+import { getYeWU, runFlowPathSaveData } from '@/api/api'
 export default {
   components: { ItdmXmShuru, ItdmXqPingshen, ItdmGcShishi, ItdmBgJiaofu, ItdmXnJiesuan },
     data() {
       return {
         querys:{
-          id: this.$route.query.id
+          id: this.$route.query.id,
         },
         // 接收后端传的json
         tableData1:[],
@@ -48,6 +48,7 @@ export default {
           this.tableData3.push(res.result.stepList[4])
           this.tableData4.push(res.result.stepList[5])
           this.tableData4.push(res.result.stepList[6])
+          this.tableData5.push(res.result.stepList[0])
           this.tableData5.push(res.result.stepList[7])
           this.tableData5.push(res.result.stepList[8])
           this.tableData5.push(res.result.stepList[9])
@@ -55,6 +56,12 @@ export default {
           this.tableData5.push(res.result.stepList[11])
           // console.log(this.tableData1)
         })
+      },
+      runFlowPathSaveData(saveData){
+        console.log(saveData)
+        runFlowPathSaveData(saveData).then(response => {
+          console.log(response)
+        })
       }
     }
 }

+ 115 - 29
itdmWeb/src/views/module-iTDM/itdmYeWu/itdmGcShishi.vue

@@ -5,36 +5,45 @@
       <tr v-for="(item, index) in tableData.assessmentLog" :key="index">
         <!-- <td :rowspan="12" style="width: 80px">项目成员<br/>考核日志</td> -->
         <td class="title" style="width: 100px">
-          <div>{{ tableData.assessmentLog.length }}</div>
-          <input v-model="item.name" style="width: 80px;text-align: center" />
+          <div>{{index + 1}}</div>
+          <input v-model="item.name" style="width: 80px;text-align: center" placeholder="请输入名字"/>
+          <input v-model="item.job" style="width: 80px;text-align: center" placeholder="请输入职位"/>
         </td>
         <td class="content" colspan="3">
-          <table>
-            <thead>
-              <td style="width: 80px;">序号</td>
-              <td style="width: 80px;">日期</td>
-              <td style="width: 80px;">工时</td>
-              <td style="width: 80px;">强度</td>
-              <td style="width: 80px;">工作量</td>
-              <!-- <td style="width: 80px;">告知数</td>
-              <td style="width: 80px;">差错数</td>
-              <td style="width: 80px;">催促数</td>
-              <td style="width: 80px;">警告数</td> -->
-              <!-- <td style="width: 60px">操作</td> -->
-            </thead>
-            <tr>
-              <td>1</td>
-              <td><input style="width: 80px;" v-model="item.resultData.date" /></td>
-              <td><input style="width: 80px;" v-model="item.resultData.gongshi" /></td>
-              <td><input style="width: 80px;" v-model="item.resultData.qiangdu" /></td>
-              <td><input style="width: 80px;" v-model="item.resultData.gongzuoliang" /></td>
-              <!-- <td><input style="width: 80px;" v-model="item.resultData.gaozhiNum" /></td>
-              <td><input style="width: 80px;" v-model="item.resultData.chacuoNum" /></td>
-              <td><input style="width: 80px;" v-model="item.resultData.cuicuNum" /></td>
-              <td><input style="width: 80px;" v-model="item.resultData.jinggaoNum" /></td> -->
-              <!-- <td><div class="delBtn" @click="delRow(index)" v-show="tableData.cleanPrice.length >= 2">删除</div></td> -->
-            </tr>
-          </table>
+          <div style="display: flex; align-items: flex-end;">
+            <div>
+              <div>——★考核结果★——工作质量10×积极性10×工作量{{item.resultData.gongshi * item.resultData.qiangdu}}=得分{{10*10*item.resultData.gongshi * item.resultData.qiangdu}}</div>
+              <table>
+                <thead>
+                  <td style="width: 80px;">序号</td>
+                  <td style="width: 80px;">日期</td>
+                  <td style="width: 80px;">工时</td>
+                  <td style="width: 80px;">强度</td>
+                  <td style="width: 80px;">工作量</td>
+                  <!-- <td style="width: 80px;">告知数</td>
+                  <td style="width: 80px;">差错数</td>
+                  <td style="width: 80px;">催促数</td>
+                  <td style="width: 80px;">警告数</td> -->
+                  <!-- <td style="width: 60px">操作</td> -->
+                </thead>
+                <tr>
+                  <td>{{index + 1}}</td>
+                  <td><input style="width: 80px;" v-model="item.resultData.date" /></td>
+                  <td><input style="width: 80px;" v-model="item.resultData.gongshi" /></td>
+                  <td><input style="width: 80px;" v-model="item.resultData.qiangdu" /></td>
+                  <td>{{item.resultData.gongshi*item.resultData.qiangdu}}</td>
+                </tr>
+                <!-- <td><input style="width: 80px;" v-model="item.resultData.gaozhiNum" /></td>
+                <td><input style="width: 80px;" v-model="item.resultData.chacuoNum" /></td>
+                <td><input style="width: 80px;" v-model="item.resultData.cuicuNum" /></td>
+                <td><input style="width: 80px;" v-model="item.resultData.jinggaoNum" /></td> -->
+                <!-- <td><div class="delBtn" @click="delRow(index)" v-show="tableData.cleanPrice.length >= 2">删除</div></td> -->
+              </table>
+            </div>
+          </div>
+        </td>
+        <td>
+          <div class="addRow" @click="addRow">添加</div>
         </td>
         <!-- <td class="content" style="width: 100px">量化积分</td> -->
       </tr>
@@ -44,6 +53,10 @@
         </td>
         <td class="title white" style="width: 80px">项目成员<br/>考核汇总</td>
         <td class="content" style="width: 100px" colspan="2">
+          <span>工时:{{ zongGongshi }}</span>
+          <span>强度:{{ zongQiangdu }}</span>
+          <span>工作量:{{ zongGongzuoliang }}</span>
+          <span>总得分:{{ zongFen }}</span>
         </td>
       </tr>
       <tr>
@@ -73,14 +86,87 @@ export default {
     return {
       tableData: {
         assessmentLog: [
-          { name: '', resultData: {} }
+          { name: '', job: '', resultData: {gongshi: 0, qiangdu: 0} }
         ]
       },
     }
   },
+  watch: {
+    tableData3: {
+      handler(newV, oldV){
+        if(newV && newV[0]){
+          console.log(newV)
+        }
+      },
+      // deep: true,
+      immediate: true
+    }
+  },
+  computed: {
+    zongGongshi(){
+      var sum
+      sum = this.tableData.assessmentLog.reduce((prev, curr, index) => {
+        const value = Number(curr.resultData.gongshi);
+        //确定数据是否为空,不为空进行计算,为空返回原值
+        if (!isNaN(value)) {
+          console.log(value)
+          return prev + value
+        } else {
+          return prev;
+        }
+      }, 0);
+      return sum
+    },
+    zongQiangdu(){
+      var sum
+      sum = this.tableData.assessmentLog.reduce((prev, curr, index) => {
+        const value = Number(curr.resultData.qiangdu);
+        //确定数据是否为空,不为空进行计算,为空返回原值
+        if (!isNaN(value)) {
+          return prev + value
+        } else {
+          return prev;
+        }
+      }, 0);
+      return sum
+    },
+    zongGongzuoliang(){
+      var sum
+      sum = this.tableData.assessmentLog.reduce((prev, curr, index) => {
+        const gongshi = Number(curr.resultData.gongshi);
+        const qiangdu = Number(curr.resultData.qiangdu);
+        //确定数据是否为空,不为空进行计算,为空返回原值
+        if (!isNaN(gongshi) && !isNaN(qiangdu) ) {
+          return prev + (gongshi * qiangdu)
+        } else {
+          return prev;
+        }
+      }, 0);
+      return sum
+    },
+    zongFen(){
+      var sum
+      sum = this.tableData.assessmentLog.reduce((prev, curr, index) => {
+        const gongshi = Number(curr.resultData.gongshi);
+        const qiangdu = Number(curr.resultData.qiangdu);
+        //确定数据是否为空,不为空进行计算,为空返回原值
+        if (!isNaN(gongshi) && !isNaN(qiangdu) ) {
+          return prev + (gongshi * qiangdu * 10 * 10)
+        } else {
+          return prev;
+        }
+      }, 0);
+      return sum
+    },
+  },
   created(){
     console.log(33333,this.tableData3)
   },
+  methods: {
+    addRow(){
+      this.tableData.assessmentLog.push({ name: '', job: '', resultData: {gongshi: 0, qiangdu: 0} })
+    }
+  }
 }
 </script>
 

+ 137 - 113
itdmWeb/src/views/module-iTDM/itdmYeWu/itdmXmShuru.vue

@@ -5,79 +5,71 @@
       <tr>
         <td class="title" style="width: 100px">委托单位</td>
         <td class="content" style="width: 360px">
-          <table>
-            <tr>
-              <td>序号</td>
-              <!-- <td>客户行业</td> -->
-              <td>客户名称</td>
-            </tr>
-            <tr>
-              <td style="min-width: 50px">1</td>
-              <!-- <td style="max-width: 130px">
-                <input v-model="tableData.kehuHangye" style="text-align: center; max-width: 130px" />
-              </td> -->
-              <td style="max-width: 130px">
-                {{ tableData.weituoClient }}
-                <!-- <input v-model="tableData.weituoClient" style="text-align: center; max-width: 130px" /> -->
-              </td>
-            </tr>
-          </table>
+          {{ stepEdit.itdmWeituoInfo.weituoClient }}
         </td>
         <td class="title white" style="width: 100px">输入类型</td>
         <td class="content" style="width: 450px">
-          <input v-model="tableData.shuruLeixing" style="text-align: center" />
+          <input v-model="stepEdit.shuruLeixing" style="text-align: center" />
         </td>
       </tr>
       <tr style="height: 150px">
         <td class="title">实验信息</td>
-        <td class="content"><input v-model="tableData.shiyanXinxi" style="text-align: center" /></td>
+        <td class="content">
+          <input v-model="stepEdit.shiyanXinxi" :disabled="step1Parameter.disabled" style="text-align: center" />
+        </td>
         <td class="title">定制需求</td>
         <td class="content">
           <div style="display: flex; align-items: center; justify-content: center">
             方案设计:
-            <input type="radio" name="fangan" value="需要" v-model="tableData.fanganSheji" />需要&nbsp;<input
+            <input type="radio" name="fangan" value="需要" v-model="stepEdit.fanganSheji" :disabled="step1Parameter.disabled" />需要&nbsp;<input
               type="radio"
               name="fangan"
               value="不需要"
-              v-model="tableData.fanganSheji"
+              v-model="stepEdit.fanganSheji"
+              :disabled="step1Parameter.disabled"
             />不需要&nbsp;&nbsp; 工装设计:
-            <input type="radio" name="gongzhuang" value="需要" v-model="tableData.gongzhuangSheji" />需要 &nbsp;<input
+            <input type="radio" name="gongzhuang" value="需要" v-model="stepEdit.gongzhuangSheji" :disabled="step1Parameter.disabled" />需要 &nbsp;<input
               type="radio"
               name="gongzhuang"
               value="不需要"
-              v-model="tableData.gongzhuangSheji"
+              v-model="stepEdit.gongzhuangSheji"
+              :disabled="step1Parameter.disabled"
             />不需要
           </div>
 
           <div style="display: flex; align-items: center; justify-content: center">
             试验评审:
-            <input type="radio" name="shiyan" value="需要" v-model="tableData.shiyanPingshen" />需要 &nbsp;<input
+            <input type="radio" name="shiyan" value="需要" v-model="stepEdit.shiyanPingshen" :disabled="step1Parameter.disabled"/>需要 &nbsp;<input
               type="radio"
               name="shiyan"
               value="不需要"
-              v-model="tableData.shiyanPingshen"
+              v-model="stepEdit.shiyanPingshen"
+              :disabled="step1Parameter.disabled"
             />不需要&nbsp;&nbsp; 用餐安排:
-            <input type="radio" name="yongcan" value="需要" v-model="tableData.yongcanAnpai" />需要 &nbsp;<input
+            <input type="radio" name="yongcan" value="需要" v-model="stepEdit.yongcanAnpai" :disabled="step1Parameter.disabled"/>需要 &nbsp;<input
               type="radio"
               name="yongcan"
               value="不需要"
-              v-model="tableData.yongcanAnpai"
+              v-model="stepEdit.yongcanAnpai"
+              :disabled="step1Parameter.disabled"
             />不需要
           </div>
 
           <div style="display: flex; align-items: center; justify-content: center">
-            用车安排: <input type="radio" name="yongche" value="需要" v-model="tableData.yongcheAnpai" />需要
+            用车安排: <input type="radio" name="yongche" value="需要" v-model="stepEdit.yongcheAnpai" :disabled="step1Parameter.disabled"/>需要
             &nbsp;<input
               type="radio"
               name="yongche"
               value="不需要"
-              v-model="tableData.yongcheAnpai"
+              v-model="stepEdit.yongcheAnpai"
+              :disabled="step1Parameter.disabled"
             />不需要&nbsp;&nbsp; 住宿安排:
-            <input type="radio" name="zhusu" value="需要" v-model="tableData.zhusuAnpai" />需要 &nbsp;<input
+            <input type="radio" name="zhusu" value="需要" v-model="stepEdit.zhusuAnpai" :disabled="step1Parameter.disabled"/>需要 &nbsp;<input
               type="radio"
               name="zhusu"
               value="不需要"
-              v-model="tableData.zhusuAnpai"
+              v-model="stepEdit.zhusuAnpai"
+              :disabled="step1Parameter.disabled"
             />不需要
           </div>
         </td>
@@ -85,52 +77,50 @@
       <tr>
         <td class="title">客户<br />联系信息</td>
         <td class="content">
-          <!-- 姓名:<input style="width: 110px" v-model="tableData.kehuName" /> 电话:<input
-            style="width: 150px"
-            v-model="tableData.kehuPhone"
-          /> -->
-          姓名:{{ tableData.weituoLxr }}  电话:{{ tableData.weituoPhone }}
+          姓名:{{ stepEdit.itdmWeituoInfo.weituoLxr }}  电话:{{ stepEdit.itdmWeituoInfo.weituoPhone }}
         </td>
         <td class="title">合同编号</td>
         <td class="content">
-          <input style="width: 100%; text-align: center" v-model="tableData.hetongBianhao" />
+          <input style="width: 100%; text-align: center" v-model="stepEdit.hetongBianhao" :disabled="step1Parameter.disabled"/>
         </td>
       </tr>
       <tr>
         <td class="title">试验要求</td>
         <td class="content" colspan="3">
-          <input style="width: 100%; text-align: center" v-model="tableData.shiyanYaoqiu" />
+          <input style="width: 100%; text-align: center" v-model="stepEdit.shiyanYaoqiu" :disabled="step1Parameter.disabled"/>
         </td>
       </tr>
       <tr>
         <td class="title">报告体系</td>
         <td class="content" style="display: flex; align-items: center; justify-content: center">
-          <input type="radio" name="baogao" value="海检版" v-model="tableData.baogaoTixi" /> 海检版&nbsp;
-          <input type="radio" name="baogao" value="瑞莱版" v-model="tableData.baogaoTixi" /> 瑞莱版&nbsp;
-          <input type="radio" name="baogao" value="瑞莱海检版" v-model="tableData.baogaoTixi" /> 瑞莱海检版
+          <input type="radio" name="baogao" value="海检版" v-model="stepEdit.baogaoTixi" :disabled="step1Parameter.disabled"/> 海检版&nbsp;
+          <input type="radio" name="baogao" value="瑞莱版" v-model="stepEdit.baogaoTixi" :disabled="step1Parameter.disabled"/> 瑞莱版&nbsp;
+          <input type="radio" name="baogao" value="瑞莱海检版" v-model="stepEdit.baogaoTixi" :disabled="step1Parameter.disabled"/> 瑞莱海检版
         </td>
         <td class="title">资质要求</td>
         <td class="content" style="display: flex; align-items: center; justify-content: center">
-          <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText1" /> CNAS&nbsp;<input
+          <input type="checkbox" v-model="stepEdit.zizhiYaoqiu_dictText1" :disabled="step1Parameter.disabled"/> CNAS&nbsp;<input
             type="checkbox"
-            v-model="tableData.zizhiYaoqiu_dictText2"
+            v-model="stepEdit.zizhiYaoqiu_dictText2"
+            :disabled="step1Parameter.disabled"
           />
-          CMA&nbsp; <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText3" /> ISTA &nbsp;<input
+          CMA&nbsp; <input type="checkbox" v-model="stepEdit.zizhiYaoqiu_dictText3" :disabled="step1Parameter.disabled"/> ISTA &nbsp;<input
             type="checkbox"
-            v-model="tableData.zizhiYaoqiu_dictText4"
+            v-model="stepEdit.zizhiYaoqiu_dictText4"
+            :disabled="step1Parameter.disabled"
           />
-          船级社&nbsp; <input type="checkbox" v-model="tableData.zizhiYaoqiu_dictText5" /> 无
+          船级社&nbsp; <input type="checkbox" v-model="stepEdit.zizhiYaoqiu_dictText5" :disabled="step1Parameter.disabled"/> 无
         </td>
       </tr>
       <tr>
         <td class="title">项目<br />虚拟结算额</td>
         <td class="content" colspan="3">
           <div style="display: flex;align-items: flex-end;">
-            <el-table :data="tableData.xnJiesuanPrice" class="u-dynamic-table" stripe  show-summary :summary-method="getSummaries" border ref="table" style="width: 740px;">
+            <el-table :data="stepEdit.xnJiesuanPrice" class="u-dynamic-table"  show-summary :summary-method="getSummaries" border ref="table">
               <el-table-column type="index" label="序号" align="center" width="60"></el-table-column>
-              <el-table-column prop="eqName" label="试验设备" align="center" width="100">
+              <el-table-column prop="eqName" label="试验设备" align="center" min-width="100">
                 <template slot-scope="scope">
-                  <el-select v-model="scope.row.eqName" placeholder="请选择"   value-key="id" @change="chooseEquipment($event, scope.$index)" style="width: 100%;">
+                  <el-select v-model="scope.row.eqName" placeholder="请选择"   value-key="id" @change="chooseEquipment($event, scope.$index)" style="width: 100%;" :disabled="step1Parameter.disabled">
                     <el-option
                       v-for="item in equipmentOptions"
                       :key="item.id"
@@ -143,43 +133,38 @@
               <el-table-column prop="typeName" label="试验类型" align="center" width="120"></el-table-column>
               <el-table-column prop="time" label="试验时间(h)" align="center" width="120">
                 <template slot-scope="scope">
-                  <el-input v-model="scope.row.time" placeholder="请输入" @input="handleCheng(scope.row, scope.$index)"/>
+                  <el-input v-model="scope.row.time" placeholder="请输入" @input="handleCheng(scope.row, scope.$index)" :readonly="step1Parameter.disabled"/>
                 </template>
               </el-table-column>
               <el-table-column prop="unitPrice" label="试验单价(rmb/h)" align="center" width="140"></el-table-column>
               <el-table-column prop="costPrice" label="试验费用" align="center" width="100"></el-table-column>
               <el-table-column label="操作" width="100">
                 <template slot-scope="scope">
-                  <el-button type="text" size="small" @click="handleDelete(scope.row, scope.$index)">删除</el-button>
+                  <el-button type="text" size="small" @click="handleDelete(scope.row, scope.$index)" :style="{'pointer-events':step1Parameter.disabled?'none':'auto'}">删除</el-button>
                 </template>
               </el-table-column>
             </el-table>
-            <div class="addRow" @click="addRow">添加</div>
+            <div class="addRow" @click="addRow" :style="{'pointer-events':step1Parameter.disabled?'none':'auto'}">添加</div>
           </div>
         </td>
       </tr>
       <tr>
         <td class="title">预计报价</td>
         <td class="content" colspan="3">
-          <input style="width: 100%; text-align: center" v-model="tableData.yujiBaojia" />
-          <div class="btn" style="margin-top:1%" @click="addSubTable">提交</div>
+          <input style="width: 100%; text-align: center" v-model="stepEdit.yujiBaojia" :disabled="step1Parameter.disabled"/>
+          <div class="btn" style="margin-top:1%" @click="submitData" :style="{'pointer-events':step1Parameter.disabled?'none':'auto'}">保存</div>
         </td>
       </tr>
       <tr>
         <td class="title">评审结论</td>
         <td class="content">
-          <input style="width: 100%; text-align: center" v-model="tableData.pingshenJielun" />
+          <input style="width: 100%; text-align: center" v-model="stepReview.reviewResult"  :disabled="stepReview.disabled"/>
         </td>
         <td class="title">主审人</td>
-        <!-- <td class="content">
-          <input style="width: 100px; text-align: center; margin-right: 50px" v-model="tableData.zhushenRen" />
-          时间
-          <input style="width: 100px; text-align: center" v-model="tableData.zhushenShijian" />
-        </td> -->
         <td class="content">
-            {{ tableData.zhushenRen }}
-            时间{{tableData.zhushenShijian}}
-            <div class="btn" @click="submit">提交</div>
+            {{ stepReview.fqUser }}
+            {{stepReview.shenheTime}}
+            <div class="btn" @click="submitReview" :style="{'pointer-events':stepReview.disabled?'none':'auto'}">保存</div>
         </td>
       </tr>
     </table>
@@ -200,27 +185,35 @@ export default {
     // json
     tableData1: {
       type: Array,
-      default: false,
+      default: [],
       required: false
     }
   },
   data() {
     return {
-      tableData: {
-        weituoClient: undefined,
-        weituoLxr: undefined,
-        weituoPhone: undefined,
+      // 获取的流程数据
+      step1Parameter: {
+        disabled: true
+      },
+      // 数据编辑信息
+      stepEdit: {
+        itdmWeituoInfo: {
+          weituoClient: undefined,
+          weituoLxr: undefined,
+          weituoPhone: undefined,
+        },
         xnJiesuanPrice: [{}],
       },
+      // 评审信息
+      stepReview: {
+        disabled: true,
+        reviewResult: null
+      },
+      // 试验设备数据
       equipmentOptions: [],
     }
   },
   created() {
-    // console.log(11111,this.tableData1)
-    // const a = JSON.parse(JSON.stringify(this.tableData1))
-    // console.log(a)
-    // this.tableData.weituoClient =JSON.parse(JSON.stringify(this.tableData1[0].itdmWeituoInfo.weituoClient))
-    // this.tableData.weituoClient =this.tableData1[0].itdmWeituoInfo.weituoClient
     this.getDevicePrice()
   },
   computed: {
@@ -231,36 +224,46 @@ export default {
   watch: {
     tableData1: {
       handler(newV, oldV){
-        if(newV){
-          console.log(newV[0].itdmWeituoInfo, oldV)
-          this.tableData.weituoClient =newV[0].itdmWeituoInfo.weituoClient
-          this.tableData.weituoLxr =newV[0].itdmWeituoInfo.weituoLxr
-          this.tableData.weituoPhone =newV[0].itdmWeituoInfo.weituoPhone
+        if(newV && newV[0]){
+          console.log(newV)
+          var arrData = newV
+          this.step1Parameter = arrData[0]
+          this.step1Parameter.disabled = !(arrData[0].dangqian && arrData[0].isUpdate)
+          this.stepEdit = arrData[0].saveData ? JSON.parse(arrData[0].saveData) : this.stepEdit
+          this.stepReview = arrData[1]
+          this.stepReview.disabled = !(arrData[1].dangqian && arrData[1].isUpdate)
+          this.stepReview.reviewResult = arrData[1].saveData ? JSON.parse(arrData[1].saveData).reviewResult : ''
+
+          if(!arrData[0].saveData){
+            this.stepEdit.itdmWeituoInfo = arrData[0].itdmWeituoInfo
+          }
         }
       },
-      deep: true,
+      // deep: true,
       immediate: true
     }
   },
   methods: {
+    // 获取试验设备列表
     getDevicePrice(){
       getDeviceList().then(response => {
-        // console.log(response)
         this.equipmentOptions = response
       })
     },
+    // 设备下拉选择改变时改变对应值
     chooseEquipment(value, index){
-      var row = this.tableData.xnJiesuanPrice[index]
-      this.tableData.xnJiesuanPrice[index].type = value.zyxbz
-      this.tableData.xnJiesuanPrice[index].typeName = value.zyxbzText
-      this.tableData.xnJiesuanPrice[index].unitPrice = value.danjia
-      this.tableData.xnJiesuanPrice[index].costPrice = row.unitPrice * row.time || 0
+      var row = this.stepEdit.xnJiesuanPrice[index]
+      this.stepEdit.xnJiesuanPrice[index].type = value.zyxbz
+      this.stepEdit.xnJiesuanPrice[index].typeName = value.zyxbzText
+      this.stepEdit.xnJiesuanPrice[index].unitPrice = value.danjia
+      this.stepEdit.xnJiesuanPrice[index].costPrice = row.unitPrice * row.time || 0
     },
+    // input改变时计算相乘
     handleCheng(value, index){
       console.log(value)
-      // console.log(this.$refs.table.summaryMethod())
-      this.tableData.xnJiesuanPrice[index].costPrice = value.unitPrice * value.time || 0
+      this.stepEdit.xnJiesuanPrice[index].costPrice = value.unitPrice * value.time || 0
     },
+    // 项目虚拟结算额求和
     getSummaries(param){
       const { columns, data } = param;
       // console.log(columns, data)
@@ -295,45 +298,66 @@ export default {
       });
       return sums;
     },
+    // 删除当前行
     handleDelete(row, index){
-      this.tableData.xnJiesuanPrice.splice(index, 1)
+      this.stepEdit.xnJiesuanPrice.splice(index, 1)
     },
+    // 添加一行
     addRow() {
-      this.tableData.xnJiesuanPrice.push({})
+      this.stepEdit.xnJiesuanPrice.push({})
     },
 
-
-    submit() {
-
-      let zizhiYaoqiu = []
-      if (this.tableData.zizhiYaoqiu_dictText1) {
-        zizhiYaoqiu.push('CNAS')
-      }
-      if (this.tableData.zizhiYaoqiu_dictText2) {
-        zizhiYaoqiu.push('CMA')
-      }
-      if (this.tableData.zizhiYaoqiu_dictText3) {
-        zizhiYaoqiu.push('ISTA')
-      }
-      if (this.tableData.zizhiYaoqiu_dictText4) {
-        zizhiYaoqiu.push('船级社')
+    submitReview() {
+      var saveData = {
+        runFlowPathStep: this.stepReview.id,
+        saveData: JSON.stringify({reviewResult: this.stepReview.reviewResult}),
       }
-      if (this.tableData.zizhiYaoqiu_dictText5) {
-        zizhiYaoqiu.push('无')
-      }
-      this.tableData.zizhiYaoqiu = zizhiYaoqiu.join(',')
-        console.log(this.tableData)
+      console.log(saveData)
+      this.$emit('save', saveData)
     },
-    addSubTable() {
-      console.log(this.tableData.cleanPrice)
-      console.log(this.tableData)
+    submitData() {
+      var saveData = {
+        runFlowPathStep: this.step1Parameter.id,
+        saveData: JSON.stringify(this.stepEdit),
+      }
+      this.$emit('save', saveData)
     },
   },
 }
 </script>
 
-<style scoped>
+<style lang="less" scoped>
 @import '~@assets/less/common.less';
+
+.el-input__inner{
+  background: transparent;
+}
+.el-select{
+  /deep/.el-input.is-disabled .el-input__inner{
+    color: #606266 !important;
+    background-color: transparent !important;
+    cursor: auto;
+  }
+}
+.el-table{
+  background-color: transparent;
+  border: solid 1px #808080;
+  /deep/ tr{
+    background-color: transparent !important;
+  }
+  /deep/ th.el-table__cell{
+    background-color: transparent !important;
+    border-color: #808080;
+  }
+  /deep/ td.el-table__cell{
+    border-color: #808080;
+  }
+  /deep/ .el-input__inner{
+    background: transparent;
+  }
+}
+
+
 table * {
   box-sizing: border-box;
   font-size: 14px;

+ 155 - 81
itdmWeb/src/views/module-iTDM/itdmYeWu/itdmXnJiesuan.vue

@@ -7,35 +7,35 @@
         <td class="title" style="width: 100px">核准<br/>虚拟结算额</td>
         <td class="content" style="width: 360px">
           <div>
-            <div v-for="(item, index) in tableData.xnJiesuanE" :key="index">{{ item.typeName }}:{{ item.price }};</div>
+            <div v-for="(item, index) in stepEdit.xnJiesuanE" :key="index">{{ item.typeName }}:{{ item.price }};</div>
           </div>
         </td>
         <td class="title white" style="width: 100px">核准<br/>虚拟结算毛利</td>
         <td class="content">
-          <!-- <input v-model="tableData.xnMaoli" style="text-align: center" /> -->
+          <!-- <input v-model="stepEdit.xnMaoli" style="text-align: center" /> -->
           <div>
-            <div v-for="(item, index) in tableData.xnJiesuanE" :key="index">{{ item.typeName }}:{{ item.price * 0.8 }};</div>
+            <div v-for="(item, index) in stepEdit.xnJiesuanE" :key="index">{{ item.typeName }}:{{ item.price * 0.8 }};</div>
           </div>
         </td>
       </tr>
       <tr>
         <td class="title" style="width: 100px">核准<br/>合同总额</td>
         <td class="content" style="width: 360px">
-          <input v-model="tableData.hetongZonge" style="text-align: center" />
+          <input v-model="stepEdit.hetongZonge" style="text-align: center" />
         </td>
         <td class="title white" style="width: 100px">核准<br/>外协外购</td>
         <td class="content" style="width: 350px">
-          <input v-model="tableData.waixieWaigou" style="text-align: center" />
+          <input v-model="stepEdit.waixieWaigou" style="text-align: center" />
         </td>
       </tr>
       <tr>
         <td class="title" style="width: 100px">销售提成<br/>基数</td>
         <td class="content" style="width: 360px">
-          <input v-model="tableData.tichengJishu" style="text-align: center" />
+          <input v-model="stepEdit.tichengJishu" style="text-align: center" />
         </td>
         <td class="title white" style="width: 100px">项目满意度</td>
         <td class="content" style="width: 350px">
-          <input v-model="tableData.manyidu" style="text-align: center" />
+          <el-input-number v-model="stepEdit.manyidu" :precision="0" :min="1" :max="100" label="项目满意度"></el-input-number>
         </td>
       </tr>
       <tr>
@@ -51,7 +51,7 @@
         </td>
         <td class="title white" style="width: 100px">项目绩效<br/>基数计算</td>
         <td class="content" style="width: 350px">
-          <el-table :data="tableData.jixiaoData" style="width: 100%">
+          <el-table :data="stepEdit.jixiaoData" style="width: 100%">
             <el-table-column type="index" label="序号"></el-table-column>
             <!-- <el-table-column prop="type" label="试验类型"></el-table-column> -->
             <el-table-column prop="typeName" label="试验类型"></el-table-column>
@@ -65,74 +65,42 @@
       <tr>
         <td class="title" style="width: 100px">项目得分<br/>(百分制)</td>
         <td class="content" style="width: 360px">
-          <input v-model="tableData.fenshu" style="text-align: center" />
+          <input v-model="stepEdit.fenshu" style="text-align: center" />
         </td>
         <!-- <td class="content" style="width: 100px" colspan="2"></td> -->
         <td class="title white" style="width: 100px">虚拟结算<br/>绩效总额</td>
         <td class="content" style="width: 350px">
           <!-- 乘系数之后的数值数组 -->
-          <!-- <div v-for="(item, index) in tableData.xnJixiaoZongeArr" :key="index">{{ item.typeName }}:{{ item.price }};</div> -->
+          <!-- <div v-for="(item, index) in stepEdit.xnJixiaoZongeArr" :key="index">{{ item.typeName }}:{{ item.price }};</div> -->
           <!-- 乘满意度之后的总额 -->
-          <div>{{ (tableData.xnJixiaoZonge * tableData.manyidu)/100 }}</div>
+          <div>{{ (stepEdit.xnJixiaoZonge * stepEdit.manyidu)/100 }}</div>
         </td>
       </tr>
       <tr>
         <td class="title" style="width: 100px">核准结论</td>
         <td class="content" style="width: 360px">
-          <div></div>
+          <input v-model="stepEdit.reviewResult" style="text-align: center" />
         </td>
         <!-- <td class="content" style="width: 100px" colspan="2"></td> -->
         <td class="title white" style="width: 100px">核准人	</td>
         <td class="content" style="width: 350px">
-          <input v-model="tableData.shuruLeixing" style="text-align: center" />
+          {{ stepEdit.fqUser }}
+            {{stepEdit.shenheTime}}
+            <div class="btn" @click="submitSCReview()" :style="{'pointer-events':stepEdit.stepParameter?'none':'auto'}">保存</div>
         </td>
       </tr>
-      <tr>
-        <td class="title" style="width: 100px; background-color: #E5E0EC;">工程技术部<br/>核准</td>
-        <td class="title" style="width: 100px">核准结论</td>
-        <td class="content" style="width: 360px; background-color: #E5E0EC;">
-          <div></div>
-        </td>
-        <!-- <td class="content" style="width: 100px" colspan="2"></td> -->
-        <td class="title white" style="width: 100px">核准人	</td>
-        <td class="content" style="width: 350px; background-color: #E5E0EC;">
-          <input v-model="tableData.shuruLeixing" style="text-align: center" />
-        </td>
-      </tr>
-      <tr>
-        <td class="title" style="width: 100px; background-color: #F2DCDB;">财务部<br/>核准</td>
-        <td class="title" style="width: 100px">核准结论</td>
-        <td class="content" style="width: 360px; background-color: #F2DCDB;">
-          <div></div>
-        </td>
-        <!-- <td class="content" style="width: 100px" colspan="2"></td> -->
-        <td class="title white" style="width: 100px">核准人	</td>
-        <td class="content" style="width: 350px; background-color: #F2DCDB;">
-          <input v-model="tableData.shuruLeixing" style="text-align: center" />
-        </td>
-      </tr>
-      <tr>
-        <td class="title" style="width: 100px; background-color: #E5B9B7;">总经理审批</td>
-        <td class="title" style="width: 100px">批准结论</td>
-        <td class="content" style="width: 360px; background-color: #E5B9B7;">
-          <div></div>
+      <!-- 其余核准循环 -->
+      <tr v-for="(item, index) in reviewLists" :key="index" :style="{'background-color': item.bgc}">
+        <td class="" style="width: 100px;">{{item.title}}</td>
+        <td class="title" style="width: 100px">{{item.name}}</td>
+        <td class="content" style="width: 360px;">
+          <input v-model="item.reviewResult" style="text-align: center" :disabled="item.disabled"/>
         </td>
         <!-- <td class="content" style="width: 100px" colspan="2"></td> -->
-        <td class="title white" style="width: 100px">总经理	</td>
-        <td class="content" style="width: 350px; background-color: #E5B9B7;">
-          <input v-model="tableData.shuruLeixing" style="text-align: center" />
-        </td>
-      </tr>
-      <tr>
-        <td class="title" style="width: 100px; background-color: #DBEEF3;">归档</td>
-        <td class="title" style="width: 100px">合同信息</td>
-        <td class="content" style="width: 360px">
-          <div></div>
-        </td>
-        <!-- <td class="content" style="width: 100px" colspan="2"></td> -->
-        <td class="title white" style="width: 100px">核准人	</td>
-        <td class="content" style="width: 350px">
-          <input v-model="tableData.shuruLeixing" style="text-align: center" />
+        <td class="title white" style="width: 100px">{{item.person}}	</td>
+        <td class="content" style="width: 350px;">
+          {{ item.fqUser }} {{item.shenheTime}}
+          <div class="btn" @click="submitReview(item)" :style="{'pointer-events':item.disabled?'none':'auto'}">保存</div>
         </td>
       </tr>
     </table>
@@ -142,6 +110,13 @@
 <script>
 export default {
   name: 'itdmXnJiesuan',
+  props: {
+    tableData5: {
+      type: Array,
+      default: [],
+      required: false
+    }
+  },
   data() {
     return {
       defineXishu: [
@@ -149,31 +124,112 @@ export default {
         { type: 1, xishu: 0.70 },
         { type: 2, xishu: 1 },
       ],
-      tableData: {
-        xnJiesuanE: [
-          // { type: 0, typeName: '气候试验', price: 50000 },
-          // { type: 1, typeName: '力学试验', price: 510000 },
-          // { type: 2, typeName: '重要试验', price: 100000 },
-        ],
+      // 获取的流程数据
+      stepParameter: {
+        id: null,
+        disabled: true
+      },
+      // 数据编辑信息
+      stepEdit: {
+        xnJiesuanE: [],
         tichengJishu: null,
         manyidu: 100,
         fenshu: null,
         jixiaoData: [],
         xnJixiaoZonge: null,
         // hasMYDJixiaoZonge: null,
-        xnJixiaoZongeArr: []
+        xnJixiaoZongeArr: [],
+        reviewSC: null
       },
-      moniData: [
-        { type: 0, typeName: '气候试验', time: 1, unitPrice: 3, costPrice: 20000 },
-        { type: 0, typeName: '气候试验', time: 1, unitPrice: 3, costPrice: 30000 },
-        { type: 1, typeName: '力学试验', time: 1, unitPrice: 3, costPrice: 100000 },
-        { type: 1, typeName: '力学试验', time: 1, unitPrice: 3, costPrice: 200000 },
-        { type: 1, typeName: '力学试验', time: 1, unitPrice: 3, costPrice: 210000 },
-        { type: 2, typeName: '重要试验', time: 1, unitPrice: 3, costPrice: 100000 },
-      ]
+      // 评审信息
+      reviewLists: [
+        {
+          title: '工程技术部核准',
+          name: '核准结论',
+          person: '核准人',
+          bgc: '#E5E0EC',
+          disabled: true,
+          reviewResult: null,
+          fqUser: null,
+          shenheTime: null,
+          sort: '9',
+        },
+        {
+          title: '财务部核准',
+          name: '核准结论',
+          person: '核准人',
+          bgc: '#F2DCDB',
+          disabled: true,
+          reviewResult: null,
+          fqUser: null,
+          shenheTime: null,
+          sort: '10',
+        },
+        {
+          title: '总经理审批核准',
+          name: '批准结论',
+          person: '总经理',
+          bgc: '#E5B9B7',
+          disabled: true,
+          reviewResult: null,
+          fqUser: null,
+          shenheTime: null,
+          sort: '11',
+        },
+        {
+          title: '归档',
+          name: '合同信息',
+          person: '核准人',
+          bgc: '#DBEEF3',
+          disabled: true,
+          reviewResult: null,
+          fqUser: null,
+          shenheTime: null,
+          sort: '12',
+        },
+      ],
+      // moniData: [
+      //   { type: 0, typeName: '气候试验', time: 1, unitPrice: 3, costPrice: 20000 },
+      //   { type: 0, typeName: '气候试验', time: 1, unitPrice: 3, costPrice: 30000 },
+      //   { type: 1, typeName: '力学试验', time: 1, unitPrice: 3, costPrice: 100000 },
+      //   { type: 1, typeName: '力学试验', time: 1, unitPrice: 3, costPrice: 200000 },
+      //   { type: 1, typeName: '力学试验', time: 1, unitPrice: 3, costPrice: 210000 },
+      //   { type: 2, typeName: '重要试验', time: 1, unitPrice: 3, costPrice: 100000 },
+      // ]
     }
   },
-  computed: {    
+  computed: {
+  },
+  watch: {
+    tableData5: {
+      handler(newV, oldV){
+        if(newV.length>0){
+          console.log(newV)
+          var arrData = newV
+          // 计算核准虚拟结算额
+          var xnJiesuanPrice = JSON.parse(arrData[0].saveData).xnJiesuanPrice
+          this.stepEdit.xnJiesuanE = this.changeData(xnJiesuanPrice, 'costPrice')
+          // 项目绩效基础计算
+          this.computeJixiaoData()
+          // 计算虚拟结算绩效总额
+          this.computeJXXishuZonge()
+
+          // 核准循环赋值
+          this.reviewLists.forEach(item => {
+            var objItem = arrData.find(res => res.sort === item.sort)
+            item.id = objItem.id
+            item.reviewResult = objItem.saveData ? JSON.parse(objItem.saveData).reviewResult : null
+            item.fqUser = objItem.fqUser
+            item.shenheTime = objItem.shenheTime
+            item.disabled = !(objItem.dangqian && objItem.isUpdate)
+          })
+          console.log(this.reviewLists)
+
+        }
+      },
+      // deep: true,
+      immediate: true
+    }
   },
   created(){
     this.getXnJiesuanE()
@@ -182,12 +238,12 @@ export default {
     // 获取第一部分设置的项目虚拟结算额并计算数据
     getXnJiesuanE(){
       // 计算核准虚拟结算额
-      this.tableData.xnJiesuanE = this.changeData(this.moniData, 'costPrice')
+      // this.stepEdit.xnJiesuanE = this.changeData(this.moniData, 'costPrice')
       // 项目绩效基础计算
       this.computeJixiaoData()
       // 计算虚拟结算绩效总额
       this.computeJXXishuZonge()
-      
+
     },
     // 将试验类型相同的金额相加,用于:核准虚拟结算额和虚拟结算绩效总额
     changeData(array, key){
@@ -213,8 +269,8 @@ export default {
     // 项目绩效基础计算
     computeJixiaoData(){
       var dataLists = []
-      for (let i = 0; i < this.tableData.xnJiesuanE.length; i++) {
-        const item = this.tableData.xnJiesuanE[i];
+      for (let i = 0; i < this.stepEdit.xnJiesuanE.length; i++) {
+        const item = this.stepEdit.xnJiesuanE[i];
         const money = item.price * 0.8
         if(money > 500000){
           // 50万以上
@@ -322,12 +378,12 @@ export default {
           dataLists.push(...arr)
         }
       }
-      this.tableData.jixiaoData = dataLists
+      this.stepEdit.jixiaoData = dataLists
     },
     // 计算虚拟结算绩效总额
     computeJXXishuZonge(){
       // 将试验类型相同的金额相加
-      var noHasXishuZonge = this.changeData(this.tableData.jixiaoData, 'ticheng')
+      var noHasXishuZonge = this.changeData(this.stepEdit.jixiaoData, 'ticheng')
       var total = 0
       var arr = noHasXishuZonge.map(item => {
         var obj = this.defineXishu.find(res => res.type === item.type)
@@ -337,10 +393,28 @@ export default {
         total += item.price
         return item
       })
-      this.tableData.xnJixiaoZongeArr = arr
+      this.stepEdit.xnJixiaoZongeArr = arr
       console.log(total)
-      this.tableData.xnJixiaoZonge = total
+      this.stepEdit.xnJixiaoZonge = total
     },
+    // 提交
+    submitSCReview(){
+      var saveData = {
+        runFlowPathStep: this.stepParameter.id,
+        saveData: JSON.stringify(this.stepEdit),
+      }
+      console.log(saveData)
+      this.$emit('save', saveData)
+    },
+    submitReview(item){
+      var saveData = {
+        runFlowPathStep: item.id,
+        saveData: JSON.stringify({reviewResult: item.reviewResult}),
+      }
+      console.log(saveData)
+      this.$emit('save', saveData)
+    }
+
   },
 }
 </script>