Prechádzať zdrojové kódy

提交甘特图完成

Lijy 2 rokov pred
rodič
commit
ee78f60d0a

+ 110 - 46
fhKeeper/formulahousekeeper/timesheet/src/views/project/vueGantt.vue

@@ -32,10 +32,14 @@
                     <ww-open-data type='userName' :openid='scope.row.text'></ww-open-data>
                   </span> -->
                   <span v-if="scope.row.translationType != 'user' && stafforpro != '按项目查看'">
-                    {{scope.row.end_date | dataValue(scope.column, scope.row)}}
+                    <!-- {{scope.row.end_date | dataValue(scope.column, scope.row)}} -->
+                    <!-- {{scope.row.start_date | dataValue(scope.column, scope.row)}} -->
+                    {{scope.row.con_data | dataValue(scope.column, scope.row)}}
                   </span>
                   <span v-if="stafforpro == '按项目查看'">
-                    {{scope.row.end_date | dataValue(scope.column, scope.row)}}
+                    <!-- {{scope.row.end_date | dataValue(scope.column, scope.row)}} -->
+                    <!-- {{scope.row.start_date | dataValue(scope.column, scope.row)}} -->
+                    {{scope.row.con_data | dataValue(scope.column, scope.row)}}
                   </span>
                 </div>
               </template>
@@ -68,6 +72,7 @@ export default {
   components: {},
   data() {
     return {
+        that: this,
         initialMonth: '', // 开始月份
         headerData: [], // 表头数据
         treeDataList: [],
@@ -78,16 +83,43 @@ export default {
     };
   },
   filters: {
+    // dataValue: function (endDate, item, value) {
+    //   if(endDate) {
+    //     let biaoto = item.label.split(' ')[0]
+    //     if(biaoto == value.end_date) {
+    //       if(value.text.indexOf('/') != '-1') {
+    //         return value.text.split('/')[1]
+    //       } else {
+    //         return value.text
+    //       }
+    //     }
+    //   }
+    // }
+
     dataValue: function (endDate, item, value) {
       if(endDate) {
         let biaoto = item.label.split(' ')[0]
-        if(biaoto == value.end_date) {
-          if(value.text.indexOf('/') != '-1') {
-            return value.text.split('/')[1]
-          } else {
-            return value.text
-          }
+        let maxData =  value.numData
+        let str = ''
+        if(value.text.indexOf('/') != '-1') {
+          str = value.text.split('/')[1]
+        } else {
+          str = value.text
+        }
+
+        if(maxData == 2 && biaoto == value.end_date) {
+          return str
+        } else if(maxData != 2 && biaoto == value.con_data){
+          return str
         }
+
+        // if(biaoto == endDate) {
+        //   if(value.text.indexOf('/') != '-1') {
+        //     return value.text.split('/')[1]
+        //   } else {
+        //     return value.text
+        //   }
+        // }
       }
     }
   },
@@ -95,6 +127,8 @@ export default {
   watch: {},
   created() {},
   mounted() {
+    console.log(this.dayjs('2023-04-14').diff('2023-04-12', 'day'), '值差异') 
+    console.log(this.dayjs('2023-04-14').add(Math.ceil((3/2)),'day').format('YYYY-MM-DD'))
     console.log(this.stafforpro,'值')
     // 重置两个属性值
     this.num = 0,
@@ -113,7 +147,6 @@ export default {
 
     this.treeDataList = this.recursive(this.tasks.data);
 
-    // this.treeDataList = this.integrationTree(this.tasks.data)
     console.log(this.mergeList, '合并数据')
     console.log(this.treeDataList, '合并完全的数据')
   },
@@ -123,20 +156,6 @@ export default {
       for (let i in data) {
             if(this.stafforpro == '按项目查看') {
               data[i].color = '#409EFF'
-              // if(data[i].type == 'user' && data[i].text) {
-              //   let arr = []
-              //   if(data[i].text.indexOf('/') != '-1') {
-              //     let str = data[i].text.split('/')[0]
-              //     if(str.indexOf(',') != '-1') {
-              //       let arrList = str.split(',')
-              //       data[i].userNameList = arrList
-              //     } else {
-              //       arr.push(str)
-              //       data[i].userNameList = arr
-              //     }
-              //     data[i].proNameText = data[i].text.split('/')[1]
-              //   }
-              // }
               if(data[i].translationType == 'user' && data[i].text) {
                 let arr = []
                 arr = data[i].text.split(',')
@@ -155,32 +174,62 @@ export default {
               numDay: 1,
               column: 1
             }
+
             if(data[i].end_date) {
-              let day = this.dayjs(data[i].end_date).diff(data[i].start_date, 'day') // 和并多少行
-              let column = +this.dayjs(data[i].end_date).diff(this.valueDateList[0], 'day') + 1 // 从多少列开始
-              if(day >= 1) {
-                if(day >= 3) {
-                  if(this.valueDateList[0] > data[i].start_date) {
-                    obj.column = 1
-                    day >= column ? obj.numDay = column : obj.numDay = day
-                  } else {
-                    let num = this.dayjs(data[i].start_date).diff(this.valueDateList[0], 'day')
-                    obj.column = +num + 1
-                    day >= column ? obj.numDay = column : obj.numDay = day
-                  }
-                } else {
-                  day >= column ? obj.numDay = column : obj.numDay = day
-                  obj.column = column
-                }
+              var endData = ''
+              var starData = ''
+              if(data[i].end_date < this.valueDateList[1]) {
+                endData = data[i].end_date
+              } else {
+                endData = this.valueDateList[1]
               }
-            }
-            if(data[i].end_date != data[i].start_date && data[i].end_date != this.valueDateList[0]) {
-              data[i].end_date = this.dayjs(this.valueDateList[0]).add('1','day').format('YYYY-MM-DD')
-              if(data[i].end_date < data[i].start_date) {
-                data[i].end_date = this.dayjs(data[i].start_date).add('1','day').format('YYYY-MM-DD')
+
+              if(data[i].start_date < this.valueDateList[0]) {
+                starData = this.valueDateList[0]
+              } else {
+                starData = data[i].start_date
+              }
+
+              obj.numDay = +this.dayjs(endData).diff(starData, 'day') + 1
+              obj.column = +this.dayjs(starData).diff(this.valueDateList[0], 'day') + 1
+
+              if(data[i].text == '209') {
+                console.log(obj, '看看数据')
+              }
+              if(obj.numDay > 2) {
+                data[i].con_data = this.dayjs(starData).add(1,'day').format('YYYY-MM-DD')
+              } else {
+                data[i].con_data = starData
               }
+              data[i].numData = obj.numDay
             }
 
+            // if(data[i].end_date) {
+            //   let day = this.dayjs(data[i].end_date).diff(data[i].start_date, 'day') // 和并多少行
+            //   let column = +this.dayjs(data[i].end_date).diff(this.valueDateList[0], 'day') + 1 // 从多少列开始
+            //   if(day >= 1) {
+            //     if(day >= 3) {
+            //       if(this.valueDateList[0] > data[i].start_date) {
+            //         obj.column = 1
+            //         day >= column ? obj.numDay = column : obj.numDay = day
+            //       } else {
+            //         let num = this.dayjs(data[i].start_date).diff(this.valueDateList[0], 'day')
+            //         obj.column = +num + 1
+            //         day >= column ? obj.numDay = column : obj.numDay = day
+            //       }
+            //     } else {
+            //       day >= column ? obj.numDay = column : obj.numDay = day
+            //       obj.column = column
+            //     }
+            //   }
+            // }
+            // if(data[i].end_date != data[i].start_date && data[i].end_date != this.valueDateList[0]) {
+            //   data[i].end_date = this.dayjs(this.valueDateList[0]).add('1','day').format('YYYY-MM-DD')
+            //   if(data[i].end_date < data[i].start_date) {
+            //     data[i].end_date = this.dayjs(data[i].start_date).add('1','day').format('YYYY-MM-DD')
+            //   }
+            // }
+
             this.mergeList.push(obj)
             if(data[i].id.indexOf(this.$t('chu-cha')) != '-1') {
               data[i].color = '#E6A23C'
@@ -310,15 +359,30 @@ export default {
     },
     // 设置每一个单元格的样式
     TableCellStyle(row) {
-      if(row.row.color) {
+      let maxData =  +this.dayjs(row.row.end_date).diff(row.row.start_date, 'day') + 1
+      if(row.row.color && maxData < 3) {
         let biaoto = row.column.label.split(' ')[0]
-        // if(biaoto >= row.row.start_date && biaoto <= row.row.end_date) {
         if(biaoto == row.row.end_date) {
           if(row.row.color) {
             return 'background-color: '+ row.row.color +' !important;color: #fff'
           }
         }
+      } else {
+        let biaoto = row.column.label.split(' ')[0]
+        if(biaoto == row.row.con_data) {
+          return 'background-color: '+ row.row.color +' !important;color: #fff'
+        }
       }
+
+      // if(row.row.color) {
+      //   let biaoto = row.column.label.split(' ')[0]
+      //   if(biaoto == row.row.con_data) {
+      //     if(row.row.color) {
+      //       return 'background-color: '+ row.row.color +' !important;color: #fff'
+      //     }
+      //   }
+      // }
+
     }
   },
 };