lrf402788946 5 vuotta sitten
vanhempi
commit
30f3b2cf83
3 muutettua tiedostoa jossa 45 lisäystä ja 19 poistoa
  1. 32 13
      src/views/plan/detail.vue
  2. 1 0
      src/views/plan/parts/event.vue
  3. 12 6
      src/views/plan/parts/vacation.vue

+ 32 - 13
src/views/plan/detail.vue

@@ -159,13 +159,16 @@ export default {
     //日历事件点击事件
     eventClick({ event }) {
       let arr = this.events.filter(fil => fil.id == event.id);
-      if (arr.length > 0) this.form = arr[0];
-      else {
+      if (arr.length > 0) {
+        if (_.get(arr[0], 'editable', true)) {
+          this.form = arr[0];
+          this.drawer = true;
+          this.formIsNew = false;
+        } else this.$message.warning('请在设置假期中修改假期信息');
+      } else {
         console.warn(`无对应id事件`);
         return;
       }
-      this.drawer = true;
-      this.formIsNew = false;
     },
     //列表编辑事件
     toEdit({ data, index }) {
@@ -240,6 +243,7 @@ export default {
     //关闭抽屉函数
     toClose() {
       this.drawer = false;
+      this.form = {};
       this.formIsNew = true;
       this.setHeight();
     },
@@ -248,15 +252,28 @@ export default {
       this.$set(this, `heights`, heights);
     },
     //更新假期列表
-    setVacation(data) {
-      console.log(data);
+    setVacation({ data, type }) {
       this.$set(this, `vacation`, data);
-      let arr = data.map(i => {
-        i.color = `red`;
-        i.editable = false;
-        return i;
-      });
-      this.$set(this, `events`, this.events.concat(arr));
+      let arr = [];
+      if (type === 'add') {
+        arr = data.map(i => {
+          i.color = `red`;
+          i.editable = false;
+          i.id ? '' : (i.id = `p${new Date().getTime()}`);
+          return i;
+        });
+        this.$set(this, `events`, this.selectList.concat(arr));
+      } else if (type === 'edit') {
+        for (const i of data) {
+          this.$set(
+            this.events,
+            _.findIndex(this.events, item => item.id == i.id),
+            i
+          );
+        }
+      } else if (type === 'delete') {
+        this.$set(this, `events`, this.selectList.concat(data));
+      }
     },
     //判断是否在假期中
     inVacation(start, end) {
@@ -283,6 +300,7 @@ export default {
           // console.log(startTime < vacE);
           if (startTime < vacE) {
             res = false;
+            console.warn(`case2`);
             break;
           }
         } else {
@@ -290,8 +308,9 @@ export default {
           // console.log(`in else`);
           // console.log(`endTime:${endTime}`);
           // console.log(`vacS:${vacS}`);
-          if (endTime < vacS) {
+          if (endTime > vacS) {
             res = false;
+            console.warn(`case1`);
             break;
           }
         }

+ 1 - 0
src/views/plan/parts/event.vue

@@ -77,6 +77,7 @@ export default {
   watch: {
     data: {
       immediate: true,
+      deep: true,
       handler(val) {
         if (val) this.$set(this, `form`, _.cloneDeep(this.data));
       },

+ 12 - 6
src/views/plan/parts/vacation.vue

@@ -57,19 +57,25 @@ export default {
   created() {},
   methods: {
     toEdit({ data, index }) {
-      console.log(data, index);
       this.form = JSON.parse(JSON.stringify(data));
+      this.form.index = index;
       this.isNew = false;
     },
-    toDelete({ data, index }) {},
+    toDelete({ data, index }) {
+      let arr = JSON.parse(JSON.stringify(this.data));
+      arr.splice(index, 1);
+      this.$emit(`update`, { data: arr, type: 'delete' });
+    },
     handleSave({ data, isNew }) {
-      console.log(data, isNew);
       //添加,删除,修改,都只是操作本组件的数组,然后将本组件的数组=>传回父组件=>父组件更新=>子组件更新
+      let arr = JSON.parse(JSON.stringify(this.data));
       if (isNew) {
-        let arr = JSON.parse(JSON.stringify(this.data));
         arr.push(data);
-        this.$emit(`update`, arr);
-      } else console.log(`in update`);
+      } else {
+        let { index, ...info } = data;
+        arr[index] = info;
+      }
+      this.$emit(`update`, { data: arr, type: isNew ? 'add' : 'edit' });
       this.isNew = true;
     },
   },