瀏覽代碼

feat: web端增加周日报修改功能

qiny 1 年之前
父節點
當前提交
ba836e4e86

+ 10 - 1
client/src/views/OaSystem/personnelManagement/components/DetailBox.vue

@@ -4,6 +4,7 @@ import request from '@/config/axios'
 import { getUserInfo } from '@/utils/tool'
 interface IProp {
   detail: any
+  onEdit: () => any
 }
 const props = defineProps<IProp>()
 const { detail } = toRefs(props)
@@ -144,7 +145,7 @@ watch(
               </div>
             </el-form-item>
           </el-col>
-          <el-col :span="16">
+          <el-col :span="12">
             <el-form-item class="label-item" label="接收人">
               <div class="tag-list">
                 <el-tag
@@ -157,6 +158,11 @@ watch(
               </div>
             </el-form-item>
           </el-col>
+          <el-col :span="4">
+            <div class="edit-btn">
+              <el-button @click="props.onEdit()">编辑日志</el-button>
+            </div>
+          </el-col>
         </el-row>
         <el-row>
           <el-col :span="24" style="height: 100%">
@@ -223,6 +229,9 @@ watch(
   height: 100%;
   .form-box {
     width: 100%;
+    .edit-btn {
+      text-align: right;
+    }
     .label-item {
       .el-form-item__label {
         font-weight: 400 !important;

+ 10 - 1
client/src/views/OaSystem/personnelManagement/components/DetailBoxWeek.vue

@@ -4,6 +4,7 @@ import request from '@/config/axios'
 import { getUserInfo } from '@/utils/tool'
 interface IProp {
   detail: any
+  onEdit: () => any
 }
 const props = defineProps<IProp>()
 
@@ -156,7 +157,7 @@ watch(
               </div>
             </el-form-item>
           </el-col>
-          <el-col :span="14">
+          <el-col :span="10">
             <el-form-item class="label-item" label="接收人">
               <div class="tag-list">
                 <el-tag
@@ -169,6 +170,11 @@ watch(
               </div>
             </el-form-item>
           </el-col>
+          <el-col :span="4">
+            <div class="edit-btn">
+              <el-button @click="props.onEdit()">编辑周报</el-button>
+            </div>
+          </el-col>
         </el-row>
         <el-row>
           <el-col :span="24" style="height: 100%">
@@ -235,6 +241,9 @@ watch(
   height: 100%;
   .form-box {
     width: 100%;
+    .edit-btn {
+      text-align: right;
+    }
     .label-item {
       .el-form-item__label {
         font-weight: 400 !important;

+ 5 - 1
client/src/views/OaSystem/personnelManagement/dailyCenter/OaCalendar.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="OaCalendar">
-    <el-calendar ref="calendar" v-model="todayValue">
+    <el-calendar ref="calendar" v-model="todayValue" v-loading="isLoading">
       <template #header="{ date }">
         <div class="selectBox">
           <el-icon class="icon1" @click="selectDate('prev-month')"><ArrowLeftBold /></el-icon>
@@ -58,6 +58,8 @@ const $emit = defineEmits<{
 const calendar = ref<any>(null)
 const todayValue = ref(new Date())
 
+const isLoading = ref<boolean>(false)
+
 watch(todayValue, () => {
   // 1、如果请假,则不进行跳转
   const today = moment(todayValue.value).format('YYYY-MM-DD')
@@ -179,6 +181,7 @@ const getLogList = async (): Promise<any> => {
 
 const dayReportMap: any = ref({})
 const initDailyReportData = async (): Promise<any> => {
+  isLoading.value = true
   // 获取已填写的日志
   const logList = await getLogList()
   const logObj = {}
@@ -248,6 +251,7 @@ const initDailyReportData = async (): Promise<any> => {
   dailyReportList.forEach((item) => {
     dayReportMap.value[item.date] = { ...item, show: item.date.split('-')[2] }
   })
+  isLoading.value = false
 }
 
 /**

+ 13 - 2
client/src/views/OaSystem/personnelManagement/dailyCenter/dailyCenter.vue

@@ -6,7 +6,11 @@
         <OaCalendar @click="dateOnChange" />
       </div>
       <div class="contentBox">
-        <DetailBox :detail="writeData?.isLog" v-if="writeData?.isLog && !writeData?.isLog.isTemp" />
+        <DetailBox
+          :onEdit="onEdit"
+          :detail="writeData?.isLog"
+          v-if="writeData?.isLog && !writeData?.isLog.isTemp && !writeData.isEdit"
+        />
         <EditorDetail :writeData="writeData" v-else />
       </div>
     </div>
@@ -17,6 +21,8 @@
 import OaCalendar from './OaCalendar.vue'
 import DetailBox from '../components/DetailBox.vue'
 import EditorDetail from './editorDetail.vue'
+import { cloneDeep } from 'lodash-es'
+
 defineOptions({ name: 'DailyCenter' })
 
 interface ItemState {
@@ -32,7 +38,12 @@ const writeData = ref<any>({
   date: ''
 })
 const dateOnChange = (data) => {
-  writeData.value = data ?? {}
+  writeData.value = cloneDeep(data) ?? {}
+}
+// 修改已发送的日报
+const onEdit = () => {
+  // 新增一个编辑的属性,用来判断是否是更新周报
+  writeData.value.isEdit = true
 }
 </script>
 

+ 3 - 0
client/src/views/OaSystem/personnelManagement/dailyCenter/editorDetail.vue

@@ -69,6 +69,9 @@ onMounted(() => {
   if (!writeData.value?.date) {
     writeData.value.date = moment().format('YYYY-MM-DD')
   }
+  if (writeData.value?.isEdit) {
+    isUpDate.value = true
+  }
   initLog()
 })
 

+ 3 - 0
client/src/views/OaSystem/personnelManagement/weeklyCenter/editorDetail.vue

@@ -83,6 +83,9 @@ onMounted(() => {
       moment().endOf('isoWeek').format('YYYY-MM-DD')
     ]
   }
+  if (writeData.value?.isEdit) {
+    isUpDate.value = true
+  }
   initLog()
 })
 

+ 12 - 2
client/src/views/OaSystem/personnelManagement/weeklyCenter/weeklyCenter.vue

@@ -6,7 +6,11 @@
         <WeekCalendar :onChange="onChange" />
       </div>
       <div class="contentBox">
-        <DetailBox :detail="writeData.isLog" v-if="writeData.isLog && !writeData.isLog.isTemp" />
+        <DetailBox
+          :onEdit="onEdit"
+          :detail="writeData.isLog"
+          v-if="writeData.isLog && !writeData.isLog.isTemp && !writeData.isEdit"
+        />
         <EditorDetail :weekDate="writeData.weekDate" :writeData="writeData" v-else />
       </div>
     </div>
@@ -18,6 +22,7 @@
 import WeekCalendar from './weeklyLogList.vue'
 import DetailBox from '../components/DetailBoxWeek.vue'
 import EditorDetail from './editorDetail.vue'
+import { cloneDeep } from 'lodash-es'
 
 defineOptions({ name: 'WeeklyCenter' })
 
@@ -26,7 +31,12 @@ const writeData = ref<any>({
   weekDate: []
 })
 const onChange = (data) => {
-  writeData.value = data
+  writeData.value = cloneDeep(data)
+}
+// 修改已发送的周报
+const onEdit = () => {
+  // 新增一个编辑的属性,用来判断是否是更新周报
+  writeData.value.isEdit = true
 }
 </script>