Просмотр исходного кода

fix:修改首页备忘录列表请求接口,修改通知公告列表请求接口,修改备忘录新增接口

luzhixia 1 месяц назад
Родитель
Сommit
729bba4e1f

+ 25 - 0
src/api/home.js

@@ -18,6 +18,31 @@ export function getMsgList(params) {
     params,
   })
 }
+// 更多消息
+export function getNoticeList(data) {
+  return request({
+    url: `${url}/api/costNotice/v1/pageList`,
+    method: 'post',
+    data,
+  })
+}
+// 阅读通知公告表数据
+export function readNotice(params) {
+  return request({
+    url: `${url}/api/costNotice/v1/read`,
+    method: 'get',
+    params: params,
+  })
+}
+
+// 根据id获取通知公告表数据详情
+export function getNoticeDetail(params) {
+  return request({
+    url: `${url}/api/costNotice/v1/getDetail`,
+    method: 'get',
+    params: params,
+  })
+}
 
 export function getChartList(params) {
   return request({

+ 5 - 4
src/api/memoManage.js

@@ -1,10 +1,11 @@
 import request from '@/utils/request'
 const url = window.context.form
 
-// 备忘录列表
-export function getMemoList(params) {
+// 备忘录列表 /api/costProjectMemo/v1/pageList
+// 首页-备忘录列表 /api/costProjectMemo/v1/pageIndexList
+export function getMemoList(_url, params) {
   return request({
-    url: `${url}/api/costProjectMemo/v1/pageList`,
+    url: `${url}${_url}`,
     method: 'post',
     data: params,
   })
@@ -22,7 +23,7 @@ export function getMemoDetail(params) {
 // 添加备忘录
 export function addMemo(params) {
   return request({
-    url: `${url}/api/costProjectMemo/v1/`,
+    url: `${url}/api/costProjectMemo/v1/save`,
     method: 'post',
     data: params,
   })

+ 1 - 1
src/views/costAudit/projectInfo/auditProjectManage/memoManage/index.vue

@@ -371,7 +371,7 @@
     mounted() {
       this.$el.querySelector('div.el-calendar__header').remove()
       this.getAuditTaskList()
-      this.initCalendarData()
+      this.initCalendarData('memoManage')
     },
     methods: {},
   }

+ 15 - 6
src/views/costAudit/projectInfo/auditProjectManage/memoManage/memoManageMixin.js

@@ -75,6 +75,7 @@ export const memoManageMixin = {
     ]
 
     return {
+      type: 'index', // 列表类型:index-首页列表,memoManage-备忘录列表
       dictData: {
         reminderType: [],
       },
@@ -385,11 +386,18 @@ export const memoManageMixin = {
       try {
         let params = {
           ...this.searchParams,
-          pageSize: this.searchParams.pageSize,
+          // memoDate:''
         }
-        const res = await getMemoList(params)
-        if (res.rows && res.rows.length > 0) {
-          this.memoList = res.rows || []
+        let _url = ''
+        if (this.type === 'memoManage') {
+          _url = '/api/costProjectMemo/v1/pageList'
+        } else {
+          _url = '/api/costProjectMemo/v1/pageIndexList'
+        }
+        delete params.memoDate
+        const res = await getMemoList(_url, params)
+        if (res.value && res.value.records.length > 0) {
+          this.memoList = res.value.records || []
           // 只处理day字段,不调用详情接口
           this.memoList.forEach((item) => {
             const date = new Date(item.memoDate)
@@ -397,7 +405,7 @@ export const memoManageMixin = {
           })
           // 在列表数据设置完成后,只调用一次详情接口获取所有需要的详情
           await this.getTasksByDateList()
-          this.listTotal = res.total || 0
+          this.listTotal = res.value.total || 0
         }
       } catch (error) {
         console.error('获取数据失败:', error)
@@ -430,7 +438,8 @@ export const memoManageMixin = {
       this.handleSearch()
     },
     // 初始化日历相关数据
-    initCalendarData(num) {
+    initCalendarData(type) {
+      this.type = type
       this.selectedDate = new Date()
       this.lunarInfo = this.getLunarInfo(this.selectedDate)
       // this.handleSearch(num)

+ 1 - 1
src/views/home/index.vue

@@ -572,7 +572,7 @@
         this.areaCode = user.countyCode
       }
       this.initChart()
-      this.initCalendarData(5)
+      this.initCalendarData('index')
       this.getTodoList()
       this.loadNewsList()
     },

+ 223 - 248
src/views/personal/notice/index.vue

@@ -1,283 +1,258 @@
 <template>
-  <!-- 内部消息 -->
-  <div class="message-container">
-    <div class="top-content">
-      <div class="content__left">
-        <!-- <el-select
-          v-model="messageType"
-          style="width: 88px; margin-right: 10px"
-          @change="search"
+  <div class="content-container">
+    <!-- 表格 -->
+    <div class="table">
+      <el-table v-loading="loading" border :data="list" style="width: 100%">
+        <el-table-column
+          align="center"
+          type="index"
+          label="序号"
+          width="80"
+        ></el-table-column>
+        <el-table-column
+          prop="noticeTitle"
+          label="标题"
+          align="center"
+          width="200"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="noticeSource"
+          label="消息来源"
+          align="center"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="noticeType"
+          label="类型"
+          width="80"
+          align="center"
         >
-          <el-option
-            v-for="item in readOptions"
-            :key="item.value"
-            :label="item.label"
-            :value="item.value"
-          ></el-option>
-        </el-select>
-
-        <el-button
-          :disabled="!selectedRows.length"
-          icon="el-icon-delete"
-          @click="handleDelete"
+          <template slot-scope="scope">
+            {{ scope.row.noticeType == 1 ? '通知' : '公告' }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="noticeContent"
+          label="内容"
+          width="500"
+          align="center"
+          show-overflow-tooltip
+        ></el-table-column>
+        <el-table-column
+          prop="status"
+          label="状态"
+          width="100"
+          align="center"
+          show-overflow-tooltip
         >
-          删除
-        </el-button>
-
-        <el-button
-          v-show="messageType == 1"
-          :disabled="!selectedRows.length"
-          @click="handleMark"
+          <template slot-scope="scope">
+            {{ scope.row.status == '0' ? '正常' : '关闭' }}
+          </template>
+        </el-table-column>
+        <el-table-column
+          prop="createTime"
+          label="发送时间"
+          width="120"
+          align="center"
+          show-overflow-tooltip
         >
-          <i class="icon-read1" style="font-size: 12px"></i>
-          标记为已读
-        </el-button> -->
-      </div>
-
-      <div class="content__right">
-        <!-- <el-input
-          v-model="searchKey"
-          clearable
-          placeholder="请输入标题"
-          @focus="handleFocus"
-          @blur="handleBlur"
-          @clear="search"
-          @keyup.enter.native="search"
-        ></el-input>
-        <i ref="icon" class="icon-flow-center-search" @click="search"></i> -->
-        <header-search-input
-          search-tips="请输入标题"
-          @search-by-key="searchChange"
-        ></header-search-input>
-      </div>
-    </div>
-
-    <!-- 表格 -->
-    <div class="table">
-      <el-table
-        v-loading="loading"
-        border
-        :data="tableData"
-        :height="tableHeight + 'px'"
-        @sort-change="columnSort"
-        @selection-change="selectionChange"
-      >
-        <el-table-column align="center" type="selection"></el-table-column>
-
-        <el-table-column label="标题">
-          <template #default="{ row }">
-            <div class="msg-subject" @click="readNewsItem(row)">
-              {{ row.title }}
+          <template slot-scope="scope">
+            <div>
+              {{
+                scope.row.createTime ? scope.row.createTime.split(' ')[0] : ''
+              }}
+            </div>
+            <div>
+              {{
+                scope.row.createTime ? scope.row.createTime.split(' ')[1] : ''
+              }}
             </div>
           </template>
         </el-table-column>
-
-        <el-table-column label="部门" prop="department"></el-table-column>
-
-        <el-table-column label="通知时间" prop="createTime"></el-table-column>
-
-        <template slot="empty">
-          <el-image :src="tableNoDataImg"></el-image>
-          <p class="no-data-text">暂无数据</p>
-        </template>
+        <el-table-column
+          prop="action"
+          label="操作"
+          width="120"
+          align="center"
+          fixed="right"
+          show-overflow-tooltip
+        >
+          <template slot-scope="scope">
+            <el-button type="text" size="mini" @click="handleView(scope.row)">
+              详情
+            </el-button>
+          </template>
+        </el-table-column>
       </el-table>
-
-      <el-row type="flex" justify="end" class="my-pagination">
-        <el-pagination
-          background
-          :current-page="pagination.page"
-          :page-sizes="[10, 20, 30, 50, 100]"
-          :page-size="pagination.pageSize"
-          layout="total, sizes, prev, pager, next, jumper"
-          :total="pagination.total"
-          @size-change="handleSizeChange"
-          @current-change="handleCurrentChange"
-        ></el-pagination>
-      </el-row>
+      <el-pagination
+        class="mt20"
+        background
+        :current-page="search.page"
+        :page-sizes="[50, 100]"
+        :page-size="search.pageSize"
+        layout="total, sizes, prev, pager, next, jumper"
+        :total="total"
+        @size-change="handleSizeChange"
+        @current-change="handleCurrentChange"
+      ></el-pagination>
+      <!-- 详情弹窗 -->
+      <el-dialog
+        title="详情"
+        :visible.sync="visible"
+        width="60%"
+        :close-on-click-modal="false"
+      >
+        <el-form ref="form" :model="form" label-width="140px" disabled>
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="标题:">
+                {{ form.noticeTitle }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="类型:">
+                {{ form.noticeType == 1 ? '通知' : '公告' }}
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="消息来源:">
+                {{ form.noticeSource }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="发送对象:">
+                {{ getUserName(form.sendTarget) }}
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="状态:">
+                {{ form.status == '0' ? '正常' : '关闭' }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="发送时间:">
+                {{ form.createTime }}
+              </el-form-item>
+            </el-col>
+            <!-- <el-col :span="12">
+              <el-form-item label="发送人:">
+                {{ form.createBy }}
+              </el-form-item>
+            </el-col> -->
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="12">
+              <el-form-item label="项目名称:">
+                {{ form.projectName }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="12">
+              <el-form-item label="被监审单位名称:">
+                {{ form.enterpriseName }}
+              </el-form-item>
+            </el-col>
+          </el-row>
+          <el-row :gutter="20">
+            <el-col :span="24">
+              <el-form-item label="内容:">
+                {{ form.noticeContent }}
+              </el-form-item>
+            </el-col>
+            <el-col :span="24">
+              <el-form-item label="备注:">{{ form.remark }}</el-form-item>
+            </el-col>
+          </el-row>
+        </el-form>
+      </el-dialog>
     </div>
-    <home-news-read-dialog
-      @click="
-        () => {
-          search('pageChange')
-        }
-      "
-      ref="newsRead"
-      :news-id="newsId"
-    ></home-news-read-dialog>
   </div>
 </template>
-
 <script>
-  import { mapGetters } from 'vuex'
-  import { portalNewsNoticeQuery } from '@/api/newApi'
-  import HomeNewsReadDialog from '../../home/components/HomeNewsReadDialog.vue'
-  import HeaderSearchInput from '../../../components/searchInput/HeaderSearchInput.vue'
+  import { getNoticeList, readNotice, getNoticeDetail } from '@/api/home'
   export default {
-    name: 'Message',
-    components: {
-      HomeNewsReadDialog,
-      HeaderSearchInput,
-    },
+    name: 'Home',
     data() {
       return {
-        newsId: '',
-        loading: false,
-        messageVisible: false,
-        searchKey: '',
-        messageType: 1,
-        tableData: [],
-        selectedRows: [],
-        pagination: {
+        search: {
           page: 1,
-          pageSize: 30,
-          total: 0,
+          pageSize: 50,
         },
-
-        sorter: 'desc',
-        tableNoDataImg: require('@/assets/nodata_images/table-no-data.png'),
-        tableHeight: null,
+        list: [],
+        loading: false,
+        total: 0,
+        form: {},
+        visible: false,
       }
     },
     computed: {
-      ...mapGetters({
-        themeColor: 'settings/themeColor',
-      }),
-      // tableHeight() {
-      //   return this.$baseTableHeight(-30)
-      // },
+      user() {
+        return this.$store.state.user.userInfo.user
+      },
     },
     mounted() {
-      this.search()
-      this.tableHeight =
-        this.$baseTableHeight(-30) > 220 ? this.$baseTableHeight(-30) : 220
-      this.$root.$on('resize', () => {
-        this.tableHeight =
-          this.$baseTableHeight(-30) > 220 ? this.$baseTableHeight(-30) : 220
-      })
+      this.getList()
     },
     methods: {
-      handleFocus() {
-        this.$refs.icon.style.color = this.themeColor
-      },
-      handleBlur() {
-        this.$refs.icon.style.color = '#c0c4cc'
-      },
-      columnSort({ order }) {
-        this.sorter = order ? (order == 'ascending' ? 'asc' : 'desc') : ''
-        this.search()
-      },
-      selectionChange(selection) {
-        this.selectedRows = selection
-      },
-      readNewsItem(news) {
-        this.newsId = news.id
-        this.$refs.newsRead.showDialog()
-      },
-      handleSizeChange(size) {
-        this.pagination.pageSize = size
-        this.search()
-      },
-      handleCurrentChange(currentPage) {
-        this.pagination.page = currentPage
-        this.search('pageChange')
-      },
-      searchChange(searchKey) {
-        this.searchKey = searchKey
-        this.search()
-      },
-      search(isPageChange) {
-        this.loading = true
-        if (!isPageChange) {
-          this.pagination.page = 1
-        }
-        const queryFilter = {
-          pageBean: this.pagination,
-          querys: [
-            {
-              group: 'advance',
-              operation: 'EQUAL',
-              property: 'classifyId',
-              relation: 'AND',
-              value: '1751879898894467072',
-            },
-          ],
-          sorter: [{ direction: 'DESC', property: 'PUBLISH_TIME_' }],
-        }
-        if (this.messageType === 2) {
-          queryFilter.params = {
-            receiveTimeOrder: this.sorter,
+      // 获取更多消息列表
+      async getList() {
+        let user = this.user
+        try {
+          this.loading = true
+          let params = {
+            ...this.search,
+            sendTarget: user.userId,
           }
+          const res = await getNoticeList(params)
+          if (res.value && res.value.records.length > 0) {
+            this.list = res.value.records || []
+            this.total = res.value.total || 0
+          }
+        } catch (error) {
+          console.log(error)
+        } finally {
+          this.loading = false
         }
-        if (this.searchKey !== '') {
-          queryFilter.querys.push({
-            property: 'title',
-            value: '%' + this.searchKey + '%',
-            group: 'quick',
-            operation: 'LIKE',
-            relation: 'OR',
-          })
-        }
-        portalNewsNoticeQuery(queryFilter).then((data) => {
-          if (data) {
-            this.pagination = {
-              page: data.page,
-              pageSize: data.pageSize,
-              total: data.total,
+      },
+      // 详情
+      handleView(row) {
+        readNotice({ id: row.noticeId }).then(() => {
+          this.getList()
+        })
+        getNoticeDetail({ id: row.noticeId }).then((res) => {
+          if (res.value) {
+            this.form = {
+              ...res.value,
             }
-            this.tableData = data.rows ? data.rows : []
+            this.visible = true
           }
-          setTimeout(() => {
-            this.loading = false
-          }, 300)
         })
       },
+      // 分页大小改变
+      handleSizeChange(val) {
+        this.search.pageSize = val
+        this.getList()
+      },
+      // 分页当前页改变
+      handleCurrentChange(val) {
+        this.search.page = val
+        this.getList()
+      },
+      // 获取用户姓名
+      getUserName(userId) {
+        let user = this.user
+        if (user.userId == userId) {
+          return user.fullname || user.userName
+        }
+        return ''
+      },
     },
   }
 </script>
-
 <style lang="scss" scoped>
-  .message-container {
-    width: 100%;
-    // height: calc(100% - #{$base-margin});
-    height: 100% !important;
-    background: $base-color-white !important;
-    .top-content {
-      display: flex;
-      flex-wrap: wrap;
-      align-items: center;
-      justify-content: space-between;
-      padding: $base-padding;
-      .content__right {
-        position: relative;
-        i {
-          position: absolute;
-          top: 0px;
-          right: 0px;
-          width: 30px;
-          height: 32px;
-          font-size: 14px;
-          line-height: 32px;
-          color: #c0c4cc;
-          text-align: center;
-          cursor: pointer;
-        }
-        ::v-deep .el-input {
-          width: 268px;
-          .el-input__inner {
-            padding-right: 60px;
-          }
-          .el-input__suffix {
-            right: 30px;
-          }
-        }
-      }
-    }
-    .table {
-      padding: 0 $base-padding;
-      .msg-subject {
-        color: var(--themeColor);
-        cursor: pointer;
-      }
-    }
-  }
+  @import '@/styles/costAudit.scss';
 </style>