CzRger 1 year ago
parent
commit
4ebe63aca9

+ 16 - 0
src/api/modules/daily.ts

@@ -20,3 +20,19 @@ export const editDailyReportEdit = (params: any) => handle({
   method: 'put',
   params
 })
+//  日志管理 > 详情
+export const getDailyReport = (id: any) => handle({
+  url: `/${suffix}/daily/report/${id}`,
+  method: 'get',
+})
+//  日志管理 > 查询日志提交情况
+export const getDailyReportSearch = (id: any) => handle({
+  url: `/${suffix}/daily/report/search`,
+  method: 'get',
+})
+//  日志管理 > 删除
+export const delDailyReportDelete = (params: any) => handle({
+  url: `/${suffix}/daily/report/delete`,
+  method: 'delete',
+  params
+})

+ 10 - 5
src/layout/header/head-com.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="head-com">
     <div class="head-com-left">
-      <CusEllipsis :value="dutyPeopleCpt"/>
+      <CusEllipsis v-if="initDuty" :value="dutyPeopleCpt"/>
     </div>
     <div class="head-com-right">
       <img class="icon-date" src="@/assets/images/layout/head_icon-1.png">
@@ -41,6 +41,7 @@ export default defineComponent({
     const route = useRoute();
     const that = (getCurrentInstance() as ComponentInternalInstance).appContext.config.globalProperties
     const state = reactive({
+      initDuty: false
     })
     const dutyPeopleCpt = computed(() => {
       let str = ''
@@ -83,10 +84,14 @@ export default defineComponent({
     }
     //  获取字典
     const initDictionary = () => {
-      store.dispatch('dictionary/LOAD_DICT_LIST', 'duty_hall_leader')
-      store.dispatch('dictionary/LOAD_DICT_LIST', 'total_class')
-      store.dispatch('dictionary/LOAD_DICT_LIST', 'shift_leader')
-      store.dispatch('dictionary/LOAD_DICT_LIST', 'duty_person')
+      Promise.all([
+        store.dispatch('dictionary/LOAD_DICT_LIST', 'duty_hall_leader'),
+        store.dispatch('dictionary/LOAD_DICT_LIST', 'total_class'),
+        store.dispatch('dictionary/LOAD_DICT_LIST', 'shift_leader'),
+        store.dispatch('dictionary/LOAD_DICT_LIST', 'duty_person'),
+      ]).then(() => {
+        state.initDuty = true
+      })
     }
     onMounted(() => {
       initDictionary()

+ 50 - 9
src/views/system/daily-manage/detail.vue

@@ -65,7 +65,7 @@ import {
 import {useStore} from 'vuex'
 import {useRouter, useRoute} from 'vue-router'
 import {ElMessage, ElMessageBox} from "element-plus";
-import {addDailyReportSave, editDailyReportEdit} from "@/api/modules/daily";
+import {addDailyReportSave, editDailyReportEdit, getDailyReport, getDailyReportSearch} from "@/api/modules/daily";
 
 export default defineComponent({
   name: '',
@@ -81,18 +81,46 @@ export default defineComponent({
     const that = (getCurrentInstance() as ComponentInternalInstance).appContext.config.globalProperties
     const state = reactive({
       loading: false,
-      cusDetail: {},
-      fileList: []
+      cusDetail: <any>{},
+      fileList: <any>[]
     })
     watch(() => props.show, (n) => {
       if (n) {
         state.loading = false
         state.fileList = []
-        state.cusDetail = {
-          dutyTime: that.$util.YMD(new Date(store.state.app.timestamp)),
-          submitter: store.state.app.userInfo.displayName,
-        }
         if (props.transfer.method !== 'add') {
+          state.loading = true
+          that.$api.getDailyReport(props.transfer.detail.id).then((res) => {
+            if (res.code === 200 && res.data?.id) {
+              setFormByInfo(res.data)
+            } else {
+              ElMessage.error(res.message)
+              emit('update:show', false)
+            }
+            state.loading = false
+          }).catch(() => {
+            ElMessage.error('请求失败')
+          })
+        } else {
+          state.loading = true
+          that.$api.getDailyReportSearch().then((res) => {
+            if (res.code === 200) {
+              if (res.data?.id) {
+                setFormByInfo(res.data)
+              } else {
+                // state.cusDetail = {
+                //   dutyTime: that.$util.YMD(new Date(store.state.app.timestamp)),
+                //   submitter: store.state.app.userInfo.displayName,
+                // }
+              }
+              state.loading = false
+            } else {
+              ElMessage.error(res.message)
+              emit('update:show', false)
+            }
+          }).catch(() => {
+            ElMessage.error('请求失败')
+          })
         }
         nextTick(() => {
           ref_form.value.reset()
@@ -103,6 +131,19 @@ export default defineComponent({
     const isViewCpt = computed(() => {
       return props.transfer.method === 'view'
     })
+    const setFormByInfo = (data) => {
+      state.cusDetail = data
+      if (state.cusDetail.fileUrl) {
+        const urlArr = state.cusDetail.fileUrl.split(',')
+        const nameArr = state.cusDetail.fileName.split(',')
+        state.fileList = urlArr.map((v, i) => {
+          return {
+            name: nameArr?.[i] || v,
+            url: v
+          }
+        })
+      }
+    }
     const onSubmit = () => {
       ref_form.value.submit().then(() => {
         ElMessageBox.confirm("是否提交?", "提示", {
@@ -111,7 +152,7 @@ export default defineComponent({
           type: "warning",
         }).then(() => {
           state.loading = true
-          const params = state.cusDetail
+          const params: any = state.cusDetail
           if (state.fileList?.length > 0) {
             params.fileName = state.fileList.map(v => v.name).join(',')
             params.fileUrl = state.fileList.map(v => v.url).join(',')
@@ -119,7 +160,7 @@ export default defineComponent({
             params.fileName = ''
             params.fileUrl = ''
           }
-          const apiHandle = props.transfer.method === 'edit' ? that.$api.editDailyReportEdit(params) : that.$api.addDailyReportSave(params)
+          const apiHandle = params.id ? that.$api.editDailyReportEdit(params) : that.$api.addDailyReportSave(params)
           apiHandle.then(res => {
             if (res.code === 200) {
               ElMessage.success(res.message)

+ 42 - 22
src/views/system/daily-manage/index.vue

@@ -20,9 +20,9 @@
                 label="提交人员:"
                 v-model:param="queryForm.submitter"/>
             <CusFormColumn
-                label="值班时间:"
-                link="datetime"
-                type="datetimerange"
+                label="日志日期:"
+                link="date"
+                type="daterange"
                 v-model:param="queryForm.dutyDate"/>
             <CusFormColumn
                 label="提交时间:"
@@ -54,15 +54,12 @@
             <template #do-column-value="{ scope }">
               <div class="__cus-table_do">
                 <div class="__cus-table_do-green __hover" @click="onView(scope.row)">
-                  <SvgIcon name="add" size="16"/>查看
+                  <SvgIcon name="view" size="16"/>查看
                 </div>
                 <div class="__cus-table_do-blue __hover" @click="onEdit(scope.row)">
                   <SvgIcon name="edit" size="16"/>编辑
                 </div>
-<!--                <div class="__cus-table_do-green __hover">-->
-<!--                  <SvgIcon name="publish" size="16"/>发布-->
-<!--                </div>-->
-                <div class="__cus-table_do-red __hover">
+                <div class="__cus-table_do-red __hover" @click="onDel(scope.row)">
                   <SvgIcon name="del" size="16"/>删除
                 </div>
               </div>
@@ -71,7 +68,7 @@
         </template>
       </CusContent>
     </div>
-    <DetailCom v-model:show="showDetail" :transfer="transfer"/>
+    <DetailCom v-model:show="showDetail" :transfer="transfer" @refresh="handleSearch()"/>
   </div>
 </template>
 
@@ -91,8 +88,8 @@ import {
 import {useStore} from 'vuex'
 import {useRouter, useRoute} from 'vue-router'
 import DetailCom from './detail.vue'
-import { ElMessage } from 'element-plus'
-import {getDailyReportList} from "@/api/modules/daily";
+import {ElMessage, ElMessageBox} from 'element-plus'
+import {delDailyReportDelete, getDailyReportList} from "@/api/modules/daily";
 
 export default defineComponent({
   name: '',
@@ -123,13 +120,13 @@ export default defineComponent({
       back_queryForm: {},
       //  表格表头
       tableHead: [
-        {value: "p1", label: "日志标题", show: true},
-        {value: "p1", label: "席位编号", show: true},
-        {value: "p1", label: "单位", show: true},
-        {value: "p1", label: "提交人员", show: true},
-        {value: "p1", label: "值班时间", show: true},
-        {value: "p1", label: "提交时间", show: true},
-        {value: "do", label: "操作", show: true, width: 260},
+        {value: "title", label: "日志标题", show: true},
+        {value: "seatSerialNumber", label: "席位编号", show: true},
+        {value: "unitName", label: "单位", show: true},
+        {value: "submitter", label: "提交人员", show: true},
+        {value: "dutyTime", label: "日志日期", show: true},
+        {value: "submitTime", label: "提交时间", show: true},
+        {value: "do", label: "操作", show: true, popover: true, width: 260},
       ],
       showDetail: false,
       transfer: {}
@@ -160,10 +157,12 @@ export default defineComponent({
       //  添加表单参数
       for (const [k, v] of Object.entries(state.back_queryForm)) {
         if (that.$util.isValue(v)) {
-          if (k === 'dutyDate') {
-            queryParams['1'] = v[0]
-            queryParams['2'] = v[1]
-          } if (k === 'submitDate') {
+          if (k === 'unitId') {
+            queryParams['unitName'] = store.state.dictionary.deptMap.get(v).organizationName
+          } else if (k === 'dutyDate') {
+            queryParams['beginDutyTime'] = v[0]
+            queryParams['endDutyTime'] = v[1]
+          } else if (k === 'submitDate') {
             queryParams['beginTime'] = v[0]
             queryParams['endTime'] = v[1]
           } else {
@@ -211,6 +210,26 @@ export default defineComponent({
       }
       state.showDetail = true
     }
+    const onDel = (val) => {
+      ElMessageBox.confirm(`是否删除${val.title}?`, "提示", {
+        confirmButtonText: "确定",
+        cancelButtonText: "取消",
+        type: "warning",
+      }).then(() => {
+        state.loading = true
+        that.$api.delDailyReportDelete({id: val.id}).then(res => {
+          if (res.code === 200) {
+            ElMessage.success(res.message)
+            handleSearch()
+          } else {
+            ElMessage.error(res.message)
+            state.loading = false
+          }
+        }).catch(() => {
+          state.loading = false
+        })
+      }).catch(() => {})
+    }
     onMounted(() => {
       state.back_queryForm = JSON.parse(JSON.stringify(state.queryForm))
       initDictionary()
@@ -226,6 +245,7 @@ export default defineComponent({
       onAdd,
       onEdit,
       onView,
+      onDel
     }
   },
 })

+ 2 - 5
src/views/system/weekly-manage/index.vue

@@ -54,14 +54,11 @@
             <template #do-column-value="{ scope }">
               <div class="__cus-table_do">
                 <div class="__cus-table_do-green __hover" @click="onView(scope.row)">
-                  <SvgIcon name="add" size="16"/>查看
+                  <SvgIcon name="view" size="16"/>查看
                 </div>
                 <div class="__cus-table_do-blue __hover" @click="onEdit(scope.row)">
                   <SvgIcon name="edit" size="16"/>编辑
                 </div>
-<!--                <div class="__cus-table_do-green __hover">-->
-<!--                  <SvgIcon name="publish" size="16"/>发布-->
-<!--                </div>-->
                 <div class="__cus-table_do-red __hover">
                   <SvgIcon name="del" size="16"/>删除
                 </div>
@@ -129,7 +126,7 @@ export default defineComponent({
         {value: "p1", label: "提交人员", show: true},
         {value: "p1", label: "周报时间", show: true},
         {value: "p1", label: "提交时间", show: true},
-        {value: "do", label: "操作", show: true, width: 260},
+        {value: "do", label: "操作", show: true, popover: true, width: 260},
       ],
       showDetail: false,
       transfer: {}