Przeglądaj źródła

Merge branch 'V0.0.4' of http://10.87.21.221:8000/jzyd_yyds/soc_app into V0.0.4

coys 1 rok temu
rodzic
commit
0f092d8a22

+ 24 - 1
src/components/layouts/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div ref="layouts" :class="{'app-container': !$route.meta.hideTabBar} ">
     <div class="layout-content">
-      <keep-alive>
+      <keep-alive :include="include">
         <router-view v-if="$route.meta.keepAlive"></router-view>
       </keep-alive>
       <router-view v-if="!$route.meta.keepAlive"></router-view>
@@ -19,6 +19,7 @@ export default {
   data() {
     return {
       container: null,
+      include: [],
       tabTars: [
         {
           title: '工作台',
@@ -57,6 +58,28 @@ export default {
   created() {
     this.getUserInfo();
   },
+  watch: {
+    $route(to, from) {
+      //如果 要 to(进入) 的页面是需要 keepAlive 缓存的,把 name push 进 include数组
+      if (to.meta.keepAlive) {
+        !this.include.includes(to.name) && this.include.push(to.name);
+        console.log(this.include,'缓存列表')
+      }
+      //includes函数的用法,判断数组中是否包含某个值,返回布尔值
+     /**
+     * 如果要form(离开)的页面是keepAlive缓存的,
+     * 再根据deep来判断是前进还是后退
+     */
+     //后退
+      console.log(from.meta.keepAlive , to.meta.deep , from.meta.deep,'ppppppppp')
+      if (from.meta.keepAlive && to.meta.deep < from.meta.deep) {
+        let index = this.include.indexOf(from.name);
+        index !== -1 && this.include.splice(index, 1);
+        console.log(this.include,'缓存列表2')
+      }
+      console.log(this.include,'缓存列表3')
+    }
+  },
   methods: {
     getUserInfo(){
       userInfo().then(info=>{

+ 19 - 14
src/router/router.config.js

@@ -1,6 +1,11 @@
 /**
- * 基础路由
- * @type { *[] }
+ * 路由配置
+ * meta: {
+ *   title: { String|Number|Function } //页面名称
+ *   keepAlive: { Boolean }  //是否缓存页面
+ *   hideTabBar: { Boolean }  //是否隐藏底部导航
+ *   deep: { Number }  //页面深度
+ * }
  */
 export let routers = [
   {
@@ -122,25 +127,25 @@ export let routers = [
         path: '/works',
         name: 'works',
         component: () => import('@/views/home/works'),
-        meta: { title: '工作台', keepAlive: false }
+        meta: { title: '工作台', keepAlive: false,deep:0.5 }
       },
       {
         path: '/menu',
         name: 'menu',
         component: () => import('@/views/home/menu'),
-        meta: { title: '菜单', keepAlive: false },
+        meta: { title: '菜单', keepAlive: false ,deep:0.5 }
       },
       {
         path: '/isMy',
         name: 'isMy',
         component: () => import('@/views/home/isMy'),
-        meta: { title: '我的', keepAlive: true }
+        meta: { title: '我的', keepAlive: true ,deep:0.5 }
       },
       {
         path: '/message',
         name: 'message',
         component: () => import('@/views/menu/message/index'),
-        meta: { title: '消息中心', keepAlive: false }
+        meta: { title: '消息中心', keepAlive: false ,deep:0.5 }
       },
       {
         path: '/workTime',
@@ -272,49 +277,49 @@ export let routers = [
         path: '/visitRegister',
         name: 'visitRegister',
         component: () => import('@/views/menu/visitRegister/index.vue'),
-        meta: { title: '出入事项申请', keepAlive: true ,hideTabBar:false}
+        meta: { title: '来访申请', keepAlive: true ,hideTabBar:false,deep: 1}
       },
       {
         path: '/visitAdd',
         name: 'visitAdd',
         component: () => import('@/views/menu/visitRegister/add.vue'),
-        meta: { title: '新增申请', keepAlive: false ,hideTabBar:true}
+        meta: { title: '新增申请', keepAlive: false ,hideTabBar:true,deep: 2}
       },
       {
         path: '/visitDetail',
         name: 'visitDetail',
         component: () => import('@/views/menu/visitRegister/detail.vue'),
-        meta: { title: '申请详情', keepAlive: false ,hideTabBar:true}
+        meta: { title: '申请详情', keepAlive: false ,hideTabBar:true,deep: 2}
       },
       {
         path: '/visitCheck',
         name: 'visitCheck',
         component: () => import('@/views/menu/visitCheck/index.vue'),
-        meta: { title: '出入审批', keepAlive: true ,hideTabBar:false}
+        meta: { title: '来访审批', keepAlive: true ,hideTabBar:false,deep: 1}
       },
       {
         path: '/visitCheckDetail',
         name: 'visitCheckDetail',
         component: () => import('@/views/menu/visitCheck/detail.vue'),
-        meta: { title: '审批详情', keepAlive: false ,hideTabBar:true}
+        meta: { title: '审批详情', keepAlive: false ,hideTabBar:true,deep: 2}
       },
       {
         path: '/visitRecord',
         name: 'visitRecord',
         component: () => import('@/views/menu/visitRecord/index.vue'),
-        meta: { title: '出入登记', keepAlive: true ,hideTabBar:false}
+        meta: { title: '来访核验登记', keepAlive: true ,hideTabBar:false,deep: 1}
       },
       {
         path: '/visitRecordDetail',
         name: 'visitRecordDetail',
         component: () => import('@/views/menu/visitRecord/detail.vue'),
-        meta: { title: '登记详情', keepAlive: false ,hideTabBar:true}
+        meta: { title: '登记详情', keepAlive: false ,hideTabBar:true,deep: 2}
       },
       {
         path: '/visitUserRecord',
         name: 'visitUserRecord',
         component: () => import('@/views/menu/visitRecord/add.vue'),
-        meta: { title: '人员登记', keepAlive: false ,hideTabBar:true}
+        meta: { title: '人员登记', keepAlive: false ,hideTabBar:true,deep: 2}
       },
 
     ],

+ 4 - 1
src/views/menu/NFCmanage/index.vue

@@ -86,12 +86,15 @@ export default {
       flag:false,
     }
   },
-  destroyed(){
+  beforeDestroy(){
     window.openNFCScanCallBack = null;
   },
   computed:{
     ...mapGetters(['orgId']),
   },
+  mounted(){
+    window.openNFCScanCallBack = null;
+  },
   methods:{
     //自定义nfc回调
     openNFCScanCallBack(nfcStr){

+ 7 - 12
src/views/menu/problemItem/detail.vue

@@ -6,16 +6,6 @@
       <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" />
@@ -148,7 +138,7 @@
       <div class="card" v-if="type === 'reform'">
         <van-panel title="整改">
           <div class="panel-box">
-            <date-cell required  title="整改日期" v-model="reformData.reformDate" dateType="date" />
+            <date-cell required :max-date="maxDate" title="整改日期" v-model="reformData.reformDate" dateType="date" />
             <van-field
               required
               v-model="reformData.description"
@@ -186,6 +176,7 @@ export default {
   components:{NavBar,SelectCell,DateCell,Uploader},
   data(){
     return {
+      maxDate:new Date(),
       //基本信息
       taskInfo:[],
       formData:{},
@@ -257,7 +248,11 @@ export default {
       data.id = this.taskInfo.id;
       queryMethod(data).then((r) => {
         this.$toast("提交成功");
-        this.$router.go(-1);
+        this.$router.replace({
+          name:'problemItem',
+          path:'/problemItem',
+          params:{event:'refresh'}
+        });
       });
     },
 

+ 8 - 1
src/views/menu/problemItem/index.vue

@@ -127,6 +127,13 @@ export default {
       dicts:['question_confirm_status','question_reform_status']
     }
   },
+  beforeRouteEnter(to,from,next){
+    next(vm=>{
+      if(to.params.event === 'refresh'){
+        vm.initData();
+      }
+    })
+  },
   mounted() {
     this.initData();
   },
@@ -149,7 +156,7 @@ export default {
     },
     //获取数据列表
     getDataList(){
-      if(!this.query.orgId) return this.$toast('请选择机构');
+      //if(!this.query.orgId) return this.$toast('请选择机构');
       if( this.dataList.length !== 0 && this.dataList.length >= this.total) {
         this.pullup = false;
         this.$toast('已加载完毕');

+ 13 - 9
src/views/menu/securityCheckRegister/add.vue

@@ -222,12 +222,12 @@ export default {
     },
   },
   mounted() {
-    this.id = this.$route.query.id
-    this.getData()
+    this.id = this.$route.query.id;
+    this.getData();
   },
   beforeDestroy() {
-    window.openCameraCallBack = null
-    window.openNFCScanCallBack = null
+    window.openCameraCallBack = null;
+    window.openNFCScanCallBack = null;
   },
   methods: {
     //长度校验
@@ -422,10 +422,12 @@ export default {
       //if (arr.length) return this.$toast(`${arr[0].itemName}:该信息不完整请填写`)
       this.taskInfo.isSubmit = 0;
       registerSubmit(this.taskInfo).then(res => {
-        this.$toast('保存成功')
+        this.$toast('保存成功');
         this.$router.replace({
-          path: '/securityCheckRegister'
-        })
+          name:'securityCheckRegister',
+          path:'/securityCheckRegister',
+          params:{event:'refresh'}
+        });
       })
     },
 
@@ -450,8 +452,10 @@ export default {
       registerSubmit(this.taskInfo).then(res => {
         this.$toast('提交成功')
         this.$router.replace({
-          path: '/securityCheckRegister'
-        })
+          name:'securityCheckRegister',
+          path:'/securityCheckRegister',
+          params:{event:'refresh'}
+        });
       })
     },
 

+ 7 - 0
src/views/menu/securityCheckRegister/index.vue

@@ -117,6 +117,13 @@ export default {
       }
     }
   },
+  beforeRouteEnter(to,from,next){
+    next(vm=>{
+      if(to.params.event === 'refresh'){
+        vm.refreshData();
+      }
+    })
+  },
   mounted() {
     this.initData();
     this.query.checkOrgId = this.orgId;

+ 4 - 10
src/views/menu/visitCheck/detail.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="intro-add">
-    <nav-bar :go="go"></nav-bar>
+    <nav-bar></nav-bar>
     <div class="page-container">
       <!--   基本信息   -->
       <div class="card">
@@ -20,7 +20,7 @@
             <van-cell title="介绍信编号" v-if="visitInfo.letterNo"  :value="visitInfo.letterNo"></van-cell>
             <van-cell title="开具日期" v-if="visitInfo.startTimeStr"  :value="visitInfo.startTimeStr"></van-cell>
             <van-cell title="有效天数" v-if="visitInfo.effectiveDays"  :value="`${visitInfo.effectiveDays}天`"></van-cell>
-            <van-cell title="介绍信"  v-if="visitInfo.letterFile && visitInfo.letterFile.length > 0">
+            <van-cell title="介绍信附件"  v-if="visitInfo.letterFile && visitInfo.letterFile.length > 0">
               <template #right-icon>
                 <div class="file-box">
                   <p class="van-ellipsis" v-for="(v, i) in visitInfo.letterFile"
@@ -84,11 +84,7 @@ export default {
     return {
       go:{
         type:'replace', //参数:go push replace
-        obj:{
-          name:'visitCheck',
-          path:'/visitCheck',
-          //params:{event:'refresh'},
-        }
+        path:'/visitCheck',
       },
       visitId:null,
       approveStatus:null,
@@ -96,9 +92,7 @@ export default {
       activeNames:['1'],
       visitInfo: {},
       userInfos:[],
-      formData:{
-
-      },
+      formData:{},
       showInput:false,
       dicts:['out_in_approve_status','out_in_type','letter_id_type']
     }

+ 7 - 2
src/views/menu/visitCheck/index.vue

@@ -1,8 +1,8 @@
 <template>
   <div class="visitCheck">
-    <NavBar />
+    <NavBar/>
     <div class="page-container">
-      <van-search v-model="query.reasons" class="van-hairline--bottom" placeholder="请输入出入事由"  @change="refreshData"/>
+      <van-search v-model="query.reasons" class="van-hairline--bottom" placeholder="请输入出入事由" @clear="refreshData" @change="refreshData"/>
       <div class="search-flex">
         <select-cell
           style="border-right: 1px solid #f5f5f5;"
@@ -74,6 +74,7 @@ import {dataList} from './api'
 import {mapGetters} from "vuex";
 import {formatDate} from "@/filters/filter";
 export default {
+  name: 'visitCheck',
   components: {
     NavBar,
     OrgTree,
@@ -93,6 +94,10 @@ export default {
       },
       dataList:[],
       pullup:false,
+      go:{
+        type:'replace',
+        path:'/menu',
+      },
       dicts:['out_in_approve_status','out_in_type']
     }
   },

+ 6 - 1
src/views/menu/visitRecord/add.vue

@@ -46,7 +46,7 @@
               </van-cell>
             </div>
 
-            <van-cell title="介绍信"  v-if="selectedUser.letterFile && selectedUser.letterFile.length > 0">
+            <van-cell title="介绍信附件"  v-if="selectedUser.letterFile && selectedUser.letterFile.length > 0">
               <template #right-icon>
                 <div class="file-box">
                   <p class="van-ellipsis" v-for="(v, i) in selectedUser.letterFile"
@@ -60,6 +60,7 @@
               v-model="formData.accompanyingPerson"
               rows="1"
               autosize
+              required
               :maxlength="200"
               placeholder="请输入人员姓名"
               label="陪同人员"></van-field>
@@ -126,6 +127,10 @@ export default {
         this.$toast('请选择来访人员');
         return
       }
+      if(!this.formData.accompanyingPerson){
+        this.$toast('请输入陪同人员');
+        return
+      }
       if(!this.formData.checkImage){
         this.$toast('请上传审核结果');
         return

+ 9 - 4
src/views/menu/visitRecord/detail.vue

@@ -28,7 +28,7 @@
               </van-cell>
             </div>
 
-            <van-cell title="介绍信"  v-if="selectedUser.letterFile && selectedUser.letterFile.length > 0">
+            <van-cell title="介绍信附件"  v-if="selectedUser.letterFile && selectedUser.letterFile.length > 0">
               <template #right-icon>
                 <div class="file-box">
                   <p class="van-ellipsis" v-for="(v, i) in selectedUser.letterFile"
@@ -53,7 +53,7 @@
             <van-cell title="到达时间" v-if="selectedUser.arrivalTime" :value="selectedUser.arrivalTime"></van-cell>
             <date-cell v-else required title="到达时间" :max-date="maxData" :is-row="true"  v-model="formData.arrivalTime" date-type="datetime" />
             <van-cell title="离开时间" v-if="selectedUser.departureTime" :value="selectedUser.departureTime"></van-cell>
-            <date-cell v-else required title="离开时间" :max-date="maxData" :is-row="true"  v-model="formData.departureTime" date-type="datetime" />
+            <date-cell v-else required title="离开时间" :max-date="maxData" :min-date='minDate' :is-row="true"  v-model="formData.departureTime" date-type="datetime" />
           </div>
           <div v-if="!selectedUser.departureTime" class="big-btn-box" >
             <van-button  type="info" size="large" @click="onSubmit">确认登记</van-button>
@@ -74,11 +74,13 @@ import {mapGetters} from "vuex";
 import {imgUrl} from "@/utils";
 import { ImagePreview } from 'vant'
 import {userDetails, userDepart} from './api'
+import dayjs from 'dayjs'
 export default {
   components: {Uploader, DateCell},
   data(){
     return {
       maxData:new Date(),
+      minDate:null,
       visitId:null,
       userList:[],
       selectedUser:{},
@@ -94,9 +96,9 @@ export default {
     }
   },
   computed:{
-    ...mapGetters(['orgId','id','dictionary'])
+    ...mapGetters(['orgId','id','dictionary']),
   },
-  mounted(){
+  created(){
     this.visitId = this.$route.query.id;
     this.getUserInfo();
   },
@@ -137,6 +139,9 @@ export default {
         this.selectedUser.checkImage = checkImage;
         this.selectedUser.imgFile = imgFile;
         this.selectedUser.letterFile = letterFile;
+        //设置最小时间
+        let minDate = this.selectedUser.arrivalTime;
+        this.minDate = new Date(minDate);
       })
     },
     previewFile(file){

+ 2 - 1
src/views/menu/visitRecord/index.vue

@@ -2,7 +2,7 @@
   <div class="visitRecord">
     <NavBar/>
     <div class="page-container">
-      <van-search v-model="query.userName" class="van-hairline--bottom" placeholder="请输入人员姓名"  @change="refreshData"/>
+      <van-search v-model="query.userName" class="van-hairline--bottom" placeholder="请输入人员姓名" @clear="refreshData"  @change="refreshData"/>
       <div class="search-flex">
         <select-cell
           style="border-right: 1px solid #f5f5f5;"
@@ -79,6 +79,7 @@ import {mapGetters} from "vuex";
 import {formatDate} from "@/filters/filter";
 import DragButton from "@/components/DragButton/index.vue";
 export default {
+  name: 'visitRecord',
   components: {
     DragButton,
     NavBar,

+ 1 - 1
src/views/menu/visitRegister/add.vue

@@ -309,7 +309,7 @@ export default {
         this.formData.userInfos = this.pList;
         let data = this.formData;
         //alert(JSON.stringify(data))
-        if(this.visitType ==  '2'){
+        if(this.formData.letterFile && this.formData.letterFile.length > 0){
           data.letterFile = this.formData.letterFile.map(v=>{
             return JSON.stringify(v);
           })

+ 1 - 1
src/views/menu/visitRegister/detail.vue

@@ -19,7 +19,7 @@
             <van-cell title="介绍信编号" v-if="visitInfo.letterNo"  :value="visitInfo.letterNo"></van-cell>
             <van-cell title="开具日期" v-if="visitInfo.startTimeStr"  :value="visitInfo.startTimeStr"></van-cell>
             <van-cell title="有效天数" v-if="visitInfo.effectiveDays"  :value="`${visitInfo.effectiveDays}天`"></van-cell>
-            <van-cell title="介绍信"  v-if="visitInfo.letterFile && visitInfo.letterFile.length > 0">
+            <van-cell title="介绍信附件"  v-if="visitInfo.letterFile && visitInfo.letterFile.length > 0">
               <template #right-icon>
                 <div class="file-box">
                   <p class="van-ellipsis" v-for="(v, i) in visitInfo.letterFile"

+ 5 - 3
src/views/menu/visitRegister/index.vue

@@ -2,7 +2,7 @@
   <div class="visitRegister">
     <NavBar />
     <div class="page-container">
-      <van-search v-model="query.reasons" class="van-hairline--bottom" placeholder="请输入来访事由" @change="refreshData" />
+      <van-search v-model="query.reasons" class="van-hairline--bottom" placeholder="请输入来访事由" @clear="refreshData" @change="refreshData" />
       <select-cell
         style="border-right: 1px solid #f5f5f5;"
         title="介绍信类型"
@@ -26,8 +26,8 @@
                 :title="`介绍信类型: ${getDictLabel(v.type,'out_in_type')}`"
                 @click="clickItem(v.id)">
                 <template #right-icon>
-                  <span :style="{color:getState(getDictLabel(v.status,'out_in_approve_status'))}">
-                    {{getDictLabel(v.status,'out_in_approve_status') }}
+                  <span :style="{color:getState(getDictLabel(v.approveStatus,'out_in_approve_status'))}">
+                    {{getDictLabel(v.approveStatus,'out_in_approve_status') }}
                   </span>
                 </template>
                 <template #label>
@@ -68,6 +68,7 @@ import {dataList} from './api'
 import {mapGetters} from "vuex";
 import {formatDate} from "@/filters/filter";
 export default {
+  name: 'visitRegister',
   components: {
     NavBar,
     OrgTree,
@@ -152,6 +153,7 @@ export default {
       }
       let data = {
         ...this.query,
+        orgId:this.orgId
       }
       dataList(data).then(res=>{
         if(res.total === '0'){

+ 1 - 1
vue.config.js

@@ -126,7 +126,7 @@ module.exports = defineConfig({
         }
       },
       '/test': {
-        target: "http://10.87.10.91:8080",
+        target: "http://10.87.21.107:8080",
         // ws:true,
         changOrigin:true,
         pathRewrite:{