Ver código fonte

添加介绍信

凉纪 2 anos atrás
pai
commit
c69f18808f

+ 18 - 1
src/router/router.config.js

@@ -256,7 +256,24 @@ export let routers = [
         component: () => import('@/views/menu/safetyBook/detail.vue'),
         meta: { title: '责任书详情', keepAlive: false ,hideTabBar:true}
       },
-
+      {
+        path: '/introduction',
+        name: 'introduction',
+        component: () => import('@/views/menu/introduction/index.vue'),
+        meta: { title: '介绍信管理', keepAlive: false ,hideTabBar:false}
+      },
+      {
+        path: '/introAdd',
+        name: 'introAdd',
+        component: () => import('@/views/menu/introduction/add.vue'),
+        meta: { title: '添加介绍信', keepAlive: false ,hideTabBar:true}
+      },
+      {
+        path: '/visitManage',
+        name: 'visitManage',
+        component: () => import('@/views/menu/visitManage/index.vue'),
+        meta: { title: '出入管理', keepAlive: false ,hideTabBar:false}
+      },
     ],
   },
 ]

+ 227 - 0
src/views/menu/introduction/add.vue

@@ -0,0 +1,227 @@
+<template>
+  <div class="intro-add">
+    <nav-bar></nav-bar>
+    <div class="page-container">
+      <!--   基本信息   -->
+      <div class="card" v-if="taskInfo">
+        <van-panel title="介绍信内容">
+          <div class="panel-box">
+            <van-field
+              label="介绍信名称"
+              required
+              v-model="reformData.description"
+              :maxlength="20"
+              :v-model="taskInfo.orgName" />
+            <van-field
+              label="接待机构"
+              required
+              v-model="reformData.description"
+              :maxlength="20"
+              :v-model="taskInfo.checkItem" />
+            <date-cell required title="开始日期" :label="taskInfo.submitTime" />
+            <date-cell required title="结束日期" :label="taskInfo.questionDesc" />
+            <div class="upload-box" >
+              <span><i>*</i> 原件上传</span>
+              <uploader :maxCount="5" v-model="reformData.images"/>
+            </div>
+            <van-field
+              v-model="reformData.description"
+              rows="1"
+              autosize
+              :maxlength="200"
+              label="备注信息"
+              type="textarea"
+              placeholder="请输入"/>
+          </div>
+        </van-panel>
+      </div>
+
+      <!--  人员列表   -->
+      <div class="card" >
+        <van-swipe-cell>
+          <van-card
+            class="goods-card"
+            thumb="https://img01.yzcdn.cn/vant/cat.jpeg">
+            <template #title>
+              <van-cell title="出入人员" value="出入人员"></van-cell>
+            </template>
+            <template #desc>
+              <van-cell title="出入人员" value="出入人员"></van-cell>
+            </template>
+          </van-card>
+          <template #right>
+            <van-button square text="删除" type="danger" class="delete-button" />
+          </template>
+        </van-swipe-cell>
+      </div>
+
+      <!--  添加人员信息    -->
+      <van-collapse v-model="activeNames">
+        <van-collapse-item title="添加人员" name="1">
+          <div class="panel-box">
+            <van-field
+              required
+              v-model="reformData.description"
+              rows="1"
+              autosize
+              :maxlength="20"
+              label="出入人员"
+              placeholder="请输入"/>
+            <van-field
+              required
+              v-model="reformData.description"
+              rows="1"
+              autosize
+              :maxlength="20"
+              label="证件号码"
+              placeholder="请输入"/>
+            <van-field
+              required
+              v-model="reformData.description"
+              rows="1"
+              autosize
+              :maxlength="20"
+              label="单位"
+              placeholder="请输入"/>
+            <div class="upload-box" >
+              <span>证件上传</span>
+              <uploader :maxCount="2" v-model="reformData.images"/>
+            </div>
+            <div class="big-btn-box" >
+              <van-button  type="info" size="large"  @click="onSubmit('整改')">添加</van-button>
+            </div>
+          </div>
+        </van-collapse-item>
+      </van-collapse>
+
+    </div>
+  </div>
+</template>
+
+<script>
+
+import {defineComponent} from "vue";
+import DateCell from "@/components/dateCell/index.vue";
+import Uploader from "@/components/upload/gxuploader.vue";
+import {formatDate} from "@/filters/filter";
+import {mapGetters} from "vuex";
+import {imgUrl} from "@/utils";
+export default defineComponent({
+  components: {Uploader, DateCell},
+  data(){
+    return {
+      activeNames:[1],
+      taskInfo:[],
+      //整改
+      reformData: {
+        reformDate: null,
+        description: null,
+        images: null,
+      },
+    }
+  },
+  computed:{
+    ...mapGetters(['orgId','id','dictionary'])
+  },
+  methods:{
+    formatDate,
+  }
+})
+</script>
+
+<style scoped lang="scss">
+.question-edit{
+  height: 100%;
+  overflow: hidden;
+}
+.page-container{
+  height: calc(100vh - 94px);
+  overflow: auto;
+  padding: 20px;
+
+}
+.flex-box{
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  >span{
+    margin: 0 20px;
+  }
+}
+.card{
+  margin-bottom: 20px;
+  box-shadow: 0 10px 10px #eaeaea;
+}
+.card:last-child{
+  margin-bottom: 0;
+}
+.panel-box{
+  -padding:0 20px;
+}
+.panel-box-item{
+  height: 36px;
+  line-height: 36px;
+}
+.item-label{
+  width: 100%;
+  display: flex;
+  justify-content: right;
+  align-items: center;
+}
+.item-value{
+  width: 100%;
+  display: flex;
+  justify-content: left;
+  align-items: center;
+}
+.upload-box{
+  padding: 20px 30px;
+  display: flex;
+  >span{
+    display: inline-block;
+    height: 160px;
+    width: 200px;
+    line-height: 160px;
+    font-size: 28px;
+    color:#999;
+    >i{
+      font-style: normal;
+      color: #ee0a24;
+    }
+  }
+}
+.nfc-img{
+  display: inline-block;
+  width: 140px;
+  height: 140px;
+  margin: 10px;
+  position: relative;
+  &:first-child{
+    margin-left: 0;
+  }
+  >img{
+    width: 100%;
+    height: 100%;
+    border: none;
+  }
+  >span{
+    position: absolute;
+    padding: 0 10px;
+    bottom: 0;
+    left: 0;
+    display: block;
+    width: 100%;
+    background-color: rgba(0,0,0,.2 );
+    color: #eaeaea;
+    font-size: 20px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    line-height: 30px;
+    height: 30px;
+  }
+}
+.big-btn-box{
+  padding-bottom: 20px;
+}
+</style>

+ 47 - 0
src/views/menu/introduction/api.js

@@ -0,0 +1,47 @@
+import request from "@/utils/request";
+//获取列表
+export function dataList(data) {
+  return request({
+    url: "/core/question/list",
+    method: "get",
+    params: data,
+  });
+}
+
+//获取详情
+export function taskDetails(orgId){
+  return request({
+    url: "/core/question/info/"+orgId,
+    method: "get",
+  });
+}
+
+// 问题确认
+export function confirm(data) {
+  return request({
+    url: "/core/question/confirm/" + data.id,
+    method: "put",
+    data,
+    showLoading: true,
+  });
+}
+
+// 异议审批
+export function confirmDissent(data) {
+  return request({
+    url: "/core/question/confirmDissent/" + data.id,
+    method: "put",
+    data,
+    showLoading: true,
+  });
+}
+
+// 整改
+export function reform(data) {
+  return request({
+    url: "/core/question/reform/" + data.id,
+    method: "put",
+    data,
+  });
+}
+

+ 402 - 0
src/views/menu/introduction/detail.vue

@@ -0,0 +1,402 @@
+<template>
+  <div class="question-edit">
+    <nav-bar></nav-bar>
+    <div class="page-container">
+      <!--   基本信息   -->
+      <div class="card" v-if="taskInfo">
+        <van-panel :title="taskInfo.srcTaskName">
+          <div class="panel-box">
+<!--            <div class="panel-box-item">-->
+<!--              <van-row>-->
+<!--                <van-col span="8">-->
+<!--                  <span class="item-label">隐患所在机构:</span>-->
+<!--                </van-col>-->
+<!--                <van-col span="14">-->
+<!--                  <span class="item-value">{{taskInfo.orgName}}</span>-->
+<!--                </van-col>-->
+<!--              </van-row>-->
+<!--            </div>-->
+            <van-cell title="隐患所在机构" :label="taskInfo.orgName" />
+            <van-cell title="检查项" :label="taskInfo.checkItem" />
+            <van-cell title="检查内容" :label="taskInfo.checkContent" />
+            <van-cell title="隐患描述" :label="taskInfo.questionDesc" />
+            <van-cell title="发现日期" :label="taskInfo.submitTime" />
+            <van-cell title="提出人" :label="taskInfo.submitorName" />
+            <van-cell title="整改期限" :label="formatDate(taskInfo.reformDeadline,'YYYY-MM-DD')" />
+            <van-cell title="隐患图片" v-if="taskInfo.images && taskInfo.images.length > 0" :border="false" >
+              <div slot="label">
+                <div class="nfc-img" v-for="(v,i) in taskInfo.images" :key="v" @click="clickImage(taskInfo.images,i)">
+                  <img :src="imgUrl(v)" alt="" >
+                </div>
+              </div>
+            </van-cell>
+          </div>
+        </van-panel>
+      </div>
+
+
+      <div class="card" v-if="taskInfo.confirm" >
+        <van-panel title="处理">
+          <div class="panel-box">
+            <van-cell title="处理意见" :label="taskInfo.confirm.executeStatus === 0 ? '确认' : '提出异议'"></van-cell>
+            <van-cell v-show="taskInfo.confirm.executeStatus===1" title="异议内容" :label="taskInfo.confirm.description"></van-cell>
+            <van-cell title="异议人" :label="taskInfo.confirm.executorName"></van-cell>
+          </div>
+        </van-panel>
+      </div>
+
+      <div class="card" v-if="taskInfo.confirmDissent" >
+        <van-panel title="审批">
+          <div class="panel-box">
+            <van-cell title="审核结果" :label="taskInfo.confirmDissent.executeStatus === 0 ? '同意' : '不同意'"></van-cell>
+<!--            <van-cell title="审核人" :label="taskInfo.confirmDissent.executorName"></van-cell>-->
+            <van-cell v-show="taskInfo.confirmDissent.executeStatus===1" title="原因" :label="taskInfo.confirmDissent.description"></van-cell>
+          </div>
+        </van-panel>
+      </div>
+
+      <div class="card" v-if="taskInfo.reform" >
+        <van-panel title="整改">
+          <div class="panel-box">
+            <van-cell title="整改日期" :label="formatDate(taskInfo.reform.executeTime,'YYYY-MM-DD')"></van-cell>
+<!--            <van-cell title="审核结果" :label="taskInfo.reform.executeStatus === 0 ? '已整改' : '未整改'"></van-cell>-->
+            <van-cell title="整改描述" :label="taskInfo.reform.description"></van-cell>
+            <van-cell title="上传信息" v-if="taskInfo.reform.images.length > 0">
+              <div slot="label" v-if="taskInfo.reform.images.length > 0">
+                <div class="nfc-img van-hairline--surround" v-for="(v,i) in taskInfo.reform.images" :key="v" @click="clickImage(taskInfo.reform.images,i)">
+                  <img :src="imgUrl(v)" alt="" >
+                </div>
+              </div>
+            </van-cell>
+          </div>
+        </van-panel>
+      </div>
+
+
+
+      <div class="card" v-if="type === 'confirm'">
+        <van-panel title="确认">
+          <div class="panel-box">
+            <van-radio-group  v-model="confirmData.status" required>
+              <van-cell-group>
+                <van-cell title="确认情况" clickable>
+                  <template #right-icon>
+                    <van-radio :name="0" />
+                  </template>
+                </van-cell>
+                <van-cell title="提出异议" clickable>
+                  <template #right-icon>
+                    <van-radio :name="1" />
+                  </template>
+                </van-cell>
+              </van-cell-group>
+            </van-radio-group>
+
+            <van-field
+              v-show="confirmData.status"
+              v-model="confirmData.description"
+              rows="1"
+              autosize
+              required
+              :maxlength="200"
+              label="异议内容"
+              type="textarea"
+              placeholder="请输入"/>
+            <div class="big-btn-box"  v-if="taskInfo.orgId == orgId && taskInfo.confirmStatus==0">
+              <van-button  type="info" size="large"  @click="onSubmit('确认')">提交</van-button>
+            </div>
+          </div>
+        </van-panel>
+      </div>
+
+      <div class="card" v-if="type === 'confirmDissent'">
+        <van-panel title="审批">
+          <div class="panel-box">
+            <van-radio-group v-model="confirmDissentData.status" required>
+              <van-cell-group>
+                <van-cell title="同意" clickable>
+                  <template #right-icon>
+                    <van-radio :name="0" />
+                  </template>
+                </van-cell>
+                <van-cell title="不同意" clickable>
+                  <template #right-icon>
+                    <van-radio :name="1" />
+                  </template>
+                </van-cell>
+              </van-cell-group>
+            </van-radio-group>
+
+            <van-field
+              v-show="confirmDissentData.status"
+              v-model="confirmDissentData.description"
+              rows="1"
+              autosize
+              required
+              :maxlength="200"
+              label="原因"
+              :rules="[{ required: true, message: '请输入' }]"
+              type="textarea"
+              placeholder="请输入"/>
+            <div class="big-btn-box" v-if="taskInfo.submitorId == id && taskInfo.confirmStatus==1">
+              <van-button  type="info" size="large"  @click="onSubmit('审核')">提交</van-button>
+            </div>
+          </div>
+        </van-panel>
+      </div>
+
+      <div class="card" v-if="type === 'reform'">
+        <van-panel title="整改">
+          <div class="panel-box">
+            <date-cell required  title="整改日期" v-model="reformData.reformDate" dateType="date" />
+            <van-field
+              required
+              v-model="reformData.description"
+              rows="1"
+              autosize
+              :maxlength="200"
+              label="整改描述:"
+              type="textarea"
+              placeholder="请输入"/>
+            <div class="upload-box" >
+              <uploader :maxCount="5" v-model="reformData.images"/>
+            </div>
+            <div class="big-btn-box" v-if="taskInfo.orgId==orgId && taskInfo.confirmStatus==2 && taskInfo.reformStatus!=11">
+              <van-button  type="info" size="large"  @click="onSubmit('整改')">提交</van-button>
+            </div>
+          </div>
+        </van-panel>
+      </div>
+
+      </div>
+  </div>
+</template>
+
+<script>
+import NavBar from '@/components/NavBar';
+import SelectCell from '@/components/selectCell';
+import DateCell from '@/components/dateCell';
+import Uploader from '@/components/upload/gxuploader.vue';
+import {taskDetails,confirm, confirmDissent, reform,} from "./api";
+import {formatDate} from "@/filters/filter";
+import { ImagePreview } from 'vant';
+import {mapGetters} from "vuex";
+import {imgUrl} from "@/utils";
+export default {
+  components:{NavBar,SelectCell,DateCell,Uploader},
+  data(){
+    return {
+      //基本信息
+      taskInfo:[],
+      formData:{},
+      //确认
+      confirmData: {
+        status: 0,
+        description: null,
+      },
+      //审核
+      confirmDissentData: {
+        status: 0,
+        description: null,
+      },
+      //整改
+      reformData: {
+        reformDate: null,
+        description: null,
+        images: null,
+      },
+      type:null,
+      preViewImages:{},
+      dicts:['resumption_status','rectification_deadline'],
+    }
+  },
+  mounted() {
+    console.log('系统信息:'+window.navigator.platform);
+    this.getData();
+  },
+  computed:{
+    ...mapGetters(['orgId','id','dictionary'])
+  },
+  methods:{
+    formatDate,
+    //图片预览
+    clickImage(arr,i){
+      this.preViewImages.images = arr.map(v=>imgUrl(v));
+      this.preViewImages.startPosition = i;
+      ImagePreview(this.preViewImages);
+    },
+    //提交
+    onSubmit(type){
+      let data,queryMethod;
+      switch (type){
+        case '确认':
+          data = this.confirmData;
+          queryMethod = confirm;
+          break;
+        case '审核':
+          data = this.confirmDissentData;
+          queryMethod = confirmDissent;
+          break
+        case '整改':
+          data = this.reformData;
+          queryMethod = reform;
+      }
+      if(type === '确认' || type === '审核'){
+        if(data.status == 1 && !data.description) {
+          return this.$toast("请填写信息");
+        }
+      }else {
+        if(!data.reformDate || !data.description){
+          return this.$toast("请填写完整信息");
+        }
+        if(data.images){
+          let img = data.images.map(v=>{return v.imgPath});
+          data.images = img.toString();
+        }
+      }
+      data.id = this.taskInfo.id;
+      queryMethod(data).then((r) => {
+        if (r.data) {
+          this.$toast("提交成功");
+          this.$emit("success");
+          this.$router.go(-1);
+        }
+      });
+    },
+
+    //初始化数据
+    getData() {
+      let id = this.$route.query.id;
+      this.type = this.$route.query.type;
+      taskDetails(id).then(res=>{
+        this.taskInfo = res.data;
+        this.taskInfo.confirm = res.data.flows.find((d) => d.executeStep === 1);
+        this.taskInfo.confirmDissent = res.data.flows.find((d) => d.executeStep === 2);
+        this.taskInfo.reform = res.data.flows.find((d) => d.executeStep === 11);
+        if(this.taskInfo.reform && this.taskInfo.reform.images)     {
+          this.taskInfo.reform.images=this.taskInfo.reform.images.split(",")
+        }
+      })
+    },
+
+    //返回
+    goBack(){
+      this.$router.go(-1);
+      this.clearData();
+    },
+
+    //清空数据
+    clearData(){
+      this.taskInfo= [];
+      //确认
+      this.confirmData = {
+        status: 0,
+        description: null,
+      }
+      //审核
+      this.confirmDissentData = {
+        status: 0,
+        description: null,
+      }
+      //整改
+      this.reformData = {
+        reformDate: null,
+        description: null,
+        images: null,
+      }
+    },
+  }
+}
+</script>
+
+<style lang="scss">
+//.question-edit{
+//  .van-panel__header{
+//    color:red
+//  }
+//}
+
+</style>
+<style lang="scss" scoped>
+
+.question-edit{
+  height: 100%;
+  overflow: hidden;
+}
+.page-container{
+  height: calc(100vh - 194px);
+  overflow: auto;
+  padding: 20px;
+}
+.flex-box{
+  display: flex;
+  justify-content: space-between;
+  align-items: center;
+  >span{
+    margin: 0 20px;
+  }
+}
+.card{
+  margin-bottom: 20px;
+  box-shadow: 0 10px 10px #eaeaea;
+}
+.card:last-child{
+  margin-bottom: 0;
+}
+.panel-box{
+  padding:0 20px;
+}
+.panel-box-item{
+  height: 36px;
+  line-height: 36px;
+}
+.item-label{
+  width: 100%;
+  display: flex;
+  justify-content: right;
+  align-items: center;
+}
+.item-value{
+  width: 100%;
+  display: flex;
+  justify-content: left;
+  align-items: center;
+}
+.upload-box{
+  padding: 20px 30px;
+}
+.nfc-img{
+  display: inline-block;
+  width: 140px;
+  height: 140px;
+  margin: 10px;
+  position: relative;
+  &:first-child{
+    margin-left: 0;
+  }
+  >img{
+    width: 100%;
+    height: 100%;
+    border: none;
+  }
+  >span{
+    position: absolute;
+    padding: 0 10px;
+    bottom: 0;
+    left: 0;
+    display: block;
+    width: 100%;
+    background-color: rgba(0,0,0,.2 );
+    color: #eaeaea;
+    font-size: 20px;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+    line-height: 30px;
+    height: 30px;
+  }
+}
+.big-btn-box{
+  padding-bottom: 20px;
+}
+</style>

+ 273 - 0
src/views/menu/introduction/index.vue

@@ -0,0 +1,273 @@
+<template>
+  <div class="problem-item">
+    <NavBar />
+    <div class="page-container">
+      <van-search v-model="query.searchKey" class="van-hairline--bottom" placeholder="请输入搜索关键词" />
+      <org-tree v-model="query.orgId"  @change="refreshData"></org-tree>
+      <div class="search-flex">
+        <select-cell
+          style="border-right: 1px solid #f5f5f5;"
+          title="状态"
+          :isAll="true"
+          :border="false"
+          v-model="query.confirmStatus"
+          :data-list="getDictItem('question_confirm_status')"
+          @change="refreshData"/>
+        <div class="btn-box">
+          <van-button type="warning" size="small" @click="clickAdd">录入介绍信</van-button>
+        </div>
+      </div>
+      <div class="card-list">
+        <Scroll
+          ref="Scroll"
+          @refresh="refreshData"
+          @loadMore="getDataList"
+          :pullup="pullup">
+          <empty  v-if="!dataList || dataList.length === 0" />
+          <card v-else v-for="(v,i) in dataList" :key="v.id">
+              <van-cell :title="v.orgName">
+                <template #extra>
+                  <van-button
+                    style="width: 60px;"
+                    v-if="v.orgId==orgId && v.confirmStatus==0"
+                    hairline
+                    size="mini"
+                    type="info"
+                    @click.stop="clickItem(v.id,'confirm')">
+                    隐患确认
+                  </van-button>
+                  <van-button
+                    style="width: 60px;"
+                    v-else-if="v.submitorId== id && v.confirmStatus==1"
+                    hairline
+                    size="mini"
+                    type="info"
+                    @click.stop="clickItem(v.id,'confirmDissent')">
+                    异议审批
+                  </van-button>
+                  <van-button
+                    style="width: 60px;"
+                    v-else-if="v.orgId==orgId && v.confirmStatus==2 && v.reformStatus!=11"
+                    hairline
+                    size="mini"
+                    type="info"
+                    @click.stop="clickItem(v.id,'reform')">
+                    整改
+                  </van-button>
+                  <van-button
+                    style="display: block;width: 60px;"
+                    v-else
+                    hairline
+                    size="mini"
+                    type="info"
+                    @click.stop="clickItem(v.id,'detail')">
+                    详情
+                  </van-button>
+                </template>
+                <template #label>
+                  <div class="info-box">
+                    <div class="info-desc">创建机构:<span>{{v.questionDesc}}</span></div>
+                    <div class="info-desc">接待机构:<span>{{v.questionDesc}}</span></div>
+                    <div class="info-item">介绍信有效期:<span>{{v.submitTime}}~{{v.submitTime}}</span></div>
+                  </div>
+                </template>
+              </van-cell>
+            </card>
+        </Scroll>
+      </div>
+    </div>
+  </div>
+</template>
+<script>
+import NavBar from '@/components/NavBar'
+import OrgTree from '@/components/orgTree'
+import Scroll from '@/components/scroll/scroll'
+import Card from '@/components/card'
+import dateCell from '@/components/dateCell'
+import selectCell from '@/components/selectCell'
+import {dataList} from './api'
+import {mapGetters} from "vuex";
+import {formatDate} from "@/filters/filter";
+export default {
+  components: {
+    NavBar,
+    OrgTree,
+    Scroll,
+    Card,
+    dateCell,
+    selectCell,
+  },
+  data() {
+    return {
+      query:{
+        submitTime:`${formatDate(new Date(),'YYYY-MM-DD')}`,
+        orgId:null,
+        confirmStatus:null,
+        pageSize:10,
+        pageNum:1,
+      },
+      planList:[],
+      loading:false,
+      finished:false,
+      columns:[
+        {
+          field: "index",
+          key: "index",
+          title: "序号",
+          width: 50,
+          align: "center",
+          renderBodyCell: ({ row, column, rowIndex }, h) => {
+            return ++rowIndex;
+          },
+        },
+        { field: "orgName", key: "a", title: "单位名称",align: "center"},
+        { field: "shouldFinish", key: "b", title: "应完成数", align: "center" },
+        { field: "finish", key: "c", title: "已完成数",align: "center" },
+        { field: "finishRate", key: "d", title: "完成率", align: "center" },
+      ],
+      dataList:[],
+      pullup:false,
+      dicts:['question_confirm_status','question_reform_status']
+    }
+  },
+  mounted() {
+    this.initData();
+  },
+  computed:{
+    ...mapGetters(['orgId','id','dictionary']),
+  },
+  methods: {
+    clickAdd(){
+      this.$router.push({
+        path:'/introAdd',
+        query:{type:'add'}
+      });
+    },
+    refreshData(){
+      this.pullup = true;
+      this.query.pageNum = 1;
+      this.total = 0;
+      this.dataList = [];
+      this.getDataList();
+    },
+    //初始化数据
+    initData(){
+      this.query.orgId = this.orgId;
+      this.query.submitTime = formatDate(new Date(),'YYYY-MM-DD');
+      this.getDataList();
+    },
+    //获取数据列表
+    getDataList(){
+      if(!this.query.orgId) return this.$toast('请选择机构');
+      if( this.dataList.length !== 0 && this.dataList.length >= this.total) {
+        this.pullup = false;
+        this.$toast('已加载完毕');
+        return;
+      }
+      let data = {
+        ...this.query,
+      }
+      dataList(data).then(res=>{
+        if(res.total === '0'){
+          this.pullup = false;
+          this.$toast('已加载完毕');
+          return
+        }
+        this.total = res.total;
+        if(this.dataList.length < res.total) {
+          this.dataList = [...this.dataList,...res.rows] ;
+          this.pullup = true;
+          this.query.pageNum++;
+          this.$refs.Scroll.refresh();
+        }
+      })
+    },
+    clickItem(id,type){
+      this.$router.push({
+        path:'/problemDetail',
+        query:{id,type}
+      });
+    }
+  }
+}
+</script>
+<style lang="scss">
+.card {
+  >.van-cell{
+    padding: 0;
+  }
+}
+.van-cell-group{
+  margin-bottom: 20px;
+}
+.van-cell-group:last-child{
+  margin-bottom: 0;
+}
+.vue-table-root{
+  tr,td,th{
+    font-size: 25px!important;
+    color:#666!important;
+  }
+}
+</style>
+<style lang="scss" scoped>
+.problem-item{
+
+}
+.app-container{
+
+}
+.card-list{
+  padding:0 20px 20px 20px;
+  height: calc(100vh - 514px);
+  overflow:  auto;
+}
+.card-num{
+  display: flex;
+  align-items: center;
+  font-size: 28px;
+  color: #009dff;
+}
+.search-flex{
+  display: flex;
+  align-items: center;
+  justify-content: space-between;
+  border-bottom: 1px solid #f5f5f5;
+  >div{
+    width: 50%;
+  }
+}
+.btn-box{
+  width: 100%;
+  height: 100%;
+  padding: 30px;
+  background-color: #fff;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.info-box{
+  color:#555;
+}
+.info-desc{
+  padding-top: 10px;
+  min-height: 50px;
+  line-height: 36px;
+  max-height: 250px;
+  display: -webkit-box;
+  -webkit-line-clamp: 3; /* 限制显示为3行 */
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  >span{
+    color:#999;
+  }
+}
+.info-item{
+  height: 50px;
+  line-height: 50px;
+  >span{
+    color:#999;
+  }
+}
+</style>

+ 6 - 0
src/views/menu/message/api.js

@@ -24,3 +24,9 @@ export function setRead(data){
   });
 }
 
+export function msgRead(id){
+  return request({
+    url: "/core/center/isRead/"+id,
+    method: "get",
+  });
+}

+ 13 - 6
src/views/menu/message/index.vue

@@ -62,7 +62,7 @@
 
 <script>
 import Scroll from '@/components/scroll/scroll'
-import {msgList,dataList,setRead} from './api'
+import {msgList, dataList, setRead, msgRead} from './api'
 import {mapGetters} from "vuex"
 
 export default {
@@ -98,12 +98,19 @@ export default {
       this.show = false;
     },
     clickItem(v){
-      let data = {
-        announcementNotificationId:v.id,
-        orgId:this.orgId,
-        userId:this.id,
+      let queryMethod,data;
+      if(this.query.type == 1){
+        queryMethod = setRead;
+        data = {
+          announcementNotificationId:v.id,
+          orgId:this.orgId,
+          userId:this.id,
+        }
+      }else {
+        queryMethod = msgRead;
+        data = v.id
       }
-      setRead(data).then(res=>{
+      queryMethod(data).then(res=>{
         this.dataList.forEach(item=>{
           if(item.id === v.id){
             item.isRead = true;

+ 18 - 0
src/views/menu/visitManage/api.js

@@ -0,0 +1,18 @@
+import request from "@/utils/request";
+export function workTimeList(data) {
+  return request({
+    url: "/system/api/work/time/month/app/find/month",
+    method: "post",
+    data,
+  });
+}
+
+//编辑日期作息配置
+export function editWorkTime(data) {
+  return request({
+    url: '/system/api/work/time/month/app/edit',
+    method: 'post',
+    showLoading:true,
+    data
+  })
+}

+ 16 - 0
src/views/menu/visitManage/index.vue

@@ -0,0 +1,16 @@
+<template>
+  <div>
+    456546456
+  </div>
+</template>
+
+<script>
+  export default {
+
+  }
+</script>
+
+
+<style scoped lang="scss">
+
+</style>