Browse Source

修复作息管理问题

凉纪 2 năm trước cách đây
mục cha
commit
8836fed4c4

+ 100 - 0
src/components/HoursCell/index.vue

@@ -0,0 +1,100 @@
+<template>
+  <div class="date-cell" >
+    <van-cell v-if="disabled" :title="title" :label="label" />
+    <van-cell v-else :title="title" :label="label" @click="clickItem">
+      <template #right-icon>
+        <van-icon name="notes-o" class="date-icon"/>
+      </template>
+    </van-cell>
+    <van-popup v-model="showPicker" round  position="bottom" :close-on-popstate="true" get-container="#app">
+      <van-datetime-picker
+        v-bind="$attrs"
+        show-toolbar
+        v-model="selected"
+        type="time"
+        :columns="columns"
+        @cancel="cancelPicker"
+        @confirm="pickerConfirm"
+      />
+    </van-popup>
+  </div>
+</template>
+
+<script>
+
+import dayjs from "dayjs";
+import {formatDate} from "@/filters/filter";
+
+export default {
+  props:{
+    disabled:{
+      type: [Boolean,String],
+      default: false,
+    },
+    //默认值
+    value:{
+      type: String,
+      default: null,
+    },
+    //标题
+    title:{
+      type: String,
+      default: null,
+    },
+  },
+  data(){
+    return{
+      showPicker:false,
+      selected:null,
+      columns: [],
+      defaultTime:null,
+      label:null
+    }
+  },
+  watch:{
+    value:{
+      handler (val) {
+        if(!val) {
+          this.selected = null;
+          this.label = null;
+        }else {
+          this.selected = val;
+          this.label = val;
+        }
+      },
+      immediate: true
+    }
+  },
+  methods:{
+    cancelPicker(){
+      this.showPicker = false;
+    },
+    pickerConfirm(val){
+      this.selected = val;
+      this.showPicker = false;
+      this.$emit('change',this.selected)
+    },
+    clickItem(){
+      this.showPicker = true;
+    },
+  },
+  model:{
+    prop: 'value',
+    event: 'change',
+  }
+}
+</script>
+
+<style lang="scss">
+.date-icon{
+  font-weight: 500;
+  width: 42px;
+  height: 6.4vw;
+  color: #008cd6;
+  font-size: 42px;
+  line-height: 6.4vw;
+}
+.van-cell__label{
+  margin: 0;
+}
+</style>

+ 16 - 26
src/components/dateCell/index.vue

@@ -1,7 +1,7 @@
 <template>
   <div class="date-cell" >
-    <van-cell v-if="disabled" :title="title" :label="selected" />
-    <van-cell v-else :title="title" :label="selected" @click="clickItem">
+    <van-cell v-if="disabled" :title="title" :label="label" />
+    <van-cell v-else :title="title" :label="label" @click="clickItem">
       <template #right-icon>
         <van-icon name="notes-o" class="date-icon"/>
       </template>
@@ -10,7 +10,7 @@
       <van-datetime-picker
         v-bind="$attrs"
         show-toolbar
-        v-model="defaultTime"
+        v-model="selected"
         :type="dateType"
         :columns="columns"
         @cancel="cancelPicker"
@@ -44,7 +44,7 @@ export default {
     //时间类型,见van-datetime-picker
     dateType:{
       type: String,
-      default: 'time',
+      default: 'date',
     },
   },
   data(){
@@ -52,27 +52,26 @@ export default {
       showPicker:false,
       selected:null,
       columns: [],
-      defaultTime:new Date(),
+      defaultTime:null,
       type: {
         'date': {value: 'YYYY-MM-DD'},
-        'time': {value: 'mm:ss'},
         'year-month':{ value: 'YYYY-MM'},
         'month-day': {value: 'MM-DD'},
         'datetime':{ value: 'YYYY-MM-DD HH:mm:ss'},
-      }
+      },
+      label:'',
     }
   },
   watch:{
     value:{
       handler (val) {
+        console.log(val,'valllll')
         if(!val){
-          this.selected = null
+          this.selected = null;
+          this.label = '';
         }else{
-          if(this.dateType === 'time'){
-            this.selected = val
-          }else {
-            this.selected =  formatDate(val,this.type[this.dateType].value);
-          }
+          this.selected = val;
+          this.label = formatDate(val,this.type[this.dateType].value);
         }
       },
       immediate: true
@@ -80,26 +79,17 @@ export default {
   },
   created() {
     //初始化时间
-    if(this.dateType === 'time'){
-     let h = new Date().getHours();
-     this.defaultTime = `${h}:00`;
-    }
-    this.defaultTime = new Date();
+    this.selected = new Date();
   },
   methods:{
     cancelPicker(){
       this.showPicker = false;
     },
     pickerConfirm(val){
-      console.log(val,this.type[this.dateType].value,'val')
-      if(this.dateType === 'time'){
-        this.selected = val
-      }else {
-        this.selected =  formatDate(val,this.type[this.dateType].value);
-      }
-      console.log(this.selected,'123')
+      this.selected = val;
+      this.label = formatDate(val,this.type[this.dateType].value);
       this.showPicker = false;
-      this.$emit('change',this.selected)
+      this.$emit('change',this.label)
     },
     clickItem(){
       this.showPicker = true;

+ 5 - 1
src/utils/globalMixins.js

@@ -32,7 +32,11 @@ export default {
       console.log(item,'item')
       return item?.value
     },
-    //查询字典具体类型的中的某一项
+    /** 获取字典值
+     * key: String 查询具体值
+     * dictType: String 字典类型
+     * 组件页面中需要设置:mapGetters(['dictionary']']),
+     * */
     getDictLabel(key,dictType){
       let item = this.dictionary?.find((v)=>{
         return  v.key === dictType

+ 1 - 1
src/views/menu/educationStatistics/index.vue

@@ -48,7 +48,7 @@ export default {
   data() {
     return {
       query: {
-        date: null,
+        date: `${formatDate(new Date(),'YYYY-MM')}`,
         orgId: null,
         planId: null
       },

+ 2 - 2
src/views/menu/problemItem/index.vue

@@ -6,7 +6,7 @@
       <org-tree v-model="query.orgId"  @change="refreshData"></org-tree>
       <div class="search-flex">
         <select-cell class="van-hairline--right" title="确认状态" v-model="query.confirmStatus" :data-list="getDictItem('question_confirm_status')" @change="refreshData"/>
-        <date-cell title="发现日期"  v-model="query.submitTime" date-type="date" @change="refreshData"/>
+        <date-cell title="发现日期"  v-model="query.submitTime" @change="refreshData"/>
       </div>
       <div class="card-list">
         <van-empty description="暂无数据" v-if="!dataList || dataList.length === 0" />
@@ -91,7 +91,7 @@ export default {
   data() {
     return {
       query:{
-        submitTime:null,
+        submitTime:`${formatDate(new Date(),'YYYY-MM-DD')}`,
         orgId:null,
         confirmStatus:'0',
         pageSize:10,

+ 1 - 1
src/views/menu/securityCheckRegister/index.vue

@@ -98,7 +98,7 @@ export default {
       //配置子页面路径
       path:'/securityDetail',
       query:{
-        taskTime: null,
+        taskTime: `${formatDate(new Date(),'YYYY-MM-DD')}`,
         checkOrgId:null,
         beCheckedOrgId:null,
         roldIds:[],

+ 37 - 39
src/views/menu/workTime/index.vue

@@ -13,14 +13,14 @@
       <!--   选择状态   -->
       <van-radio-group :disabled="formData.isDisabled" v-model="formData.isEnable">
         <van-cell-group>
-          <van-cell title="营业" clickable @click="formData.isDisabled?null: changeRadio(1)">
+          <van-cell title="营业" clickable @click="formData.isDisabled?null: changeRadio('1')">
             <template #right-icon>
-              <van-radio :name="1" />
+              <van-radio name="1" />
             </template>
           </van-cell>
-          <van-cell title="歇业" clickable @click="formData.isDisabled?null: changeRadio(0)">
+          <van-cell title="歇业" clickable @click="formData.isDisabled?null: changeRadio('0')">
             <template #right-icon>
-              <van-radio :name="0" />
+              <van-radio name="0" />
             </template>
           </van-cell>
         </van-cell-group>
@@ -28,8 +28,8 @@
 
       <!--  选择时间    -->
       <van-cell-group >
-        <date-cell :disabled="formData.isDisabled || !formData.isEnable" title="营业开始" v-model="formData.openTime" @change="startChange" date-type="time"></date-cell>
-        <date-cell :disabled="formData.isDisabled || !formData.isEnable" title="营业结束" @change="endChange" v-model="formData.closeTime" date-type="time"></date-cell>
+        <hours-cell :disabled="formData.isDisabled || !formData.isEnable || formData.isEnable =='0'" title="营业开始" v-model="formData.openTime"></hours-cell>
+        <hours-cell :disabled="formData.isDisabled || !formData.isEnable || formData.isEnable =='0'" title="营业结束" v-model="formData.closeTime"></hours-cell>
       <!--   操作     -->
       </van-cell-group>
       <van-cell center title="是否复制到全月" v-if="!formData.isDisabled">
@@ -47,14 +47,14 @@
 import NavBar from '@/components/NavBar';
 import Calendar from '@/components/Calendar';
 import OrgTree from '@/components/orgTree';
-import DateCell from '@/components/dateCell';
+import HoursCell from '@/components/HoursCell';
 import {mapGetters} from "vuex";
 import {deptTreeList} from "@/api/public";
 import {editWorkTime} from "@/views/menu/workTime/api";
 import {timeCheck} from "@/utils/date"
 import {dataList} from "@/views/menu/educationStatistics/api";
 export default {
-  components:{NavBar,Calendar,OrgTree,DateCell},
+  components:{NavBar,Calendar,OrgTree,HoursCell},
   data(){
     return{
       // orgInfo:{
@@ -62,8 +62,8 @@ export default {
       //   orgName:null,
       // },
       formData:{
-        workTime:null,
-        workOffTime:null,
+        openTime:null,
+        closeTime:null,
         isEnable:null,
         ymdDate:null,
         isDisabled:false,
@@ -94,13 +94,11 @@ export default {
     ...mapGetters(['orgName','orgId']),
   },
   methods:{
-    startChange(){
-
-    },
-    endChange(){},
     //切换状态
     changeRadio(s){
       this.formData.isEnable = s;
+      this.formData.openTime = null;
+      this.formData.closeTime = null;
     },
     //获取复制的数据
     getCopyData(arr){
@@ -111,30 +109,30 @@ export default {
       this.$refs.calendar.copyMouth(this.formData);
       this.isCopy = true;
     },
-    //获取机构树
-    getTreeList(){
-      deptTreeList(this.orgId).then(res=>{
-        this.options = res.data;
-        this.orgInfo.orgId = this.orgId;
-        this.orgInfo.orgName = this.orgName;
-        console.log(res,'3333')
-      })
-    },
-    //改变机构后将重新发起请求
-    changeTree({selectedOptions}){
-      console.log(selectedOptions,'aaaaaa')
-      this.formData.orgId = selectedOptions[selectedOptions.length-1].id;
-      this.formData.orgName = selectedOptions[selectedOptions.length-1].name;
-    },
+    // //获取机构树
+    // getTreeList(){
+    //   deptTreeList(this.orgId).then(res=>{
+    //     this.options = res.data;
+    //     this.orgInfo.orgId = this.orgId;
+    //     this.orgInfo.orgName = this.orgName;
+    //     console.log(res,'3333')
+    //   })
+    // },
+    // //改变机构后将重新发起请求
+    // changeTree({selectedOptions}){
+    //   console.log(selectedOptions,'aaaaaa')
+    //   this.formData.orgId = selectedOptions[selectedOptions.length-1].id;
+    //   this.formData.orgName = selectedOptions[selectedOptions.length-1].name;
+    // },
     // 全部选项选择完毕后,会触发 finish 事件
-    onFinish({ selectedOptions }) {
-      this.showOrg = false;
-      this.fieldValue = selectedOptions.map((option) => option.text).join('/');
-    },
-    //显示机构选择
-    showPopup() {
-      this.showOrg = true;
-    },
+    // onFinish({ selectedOptions }) {
+    //   this.showOrg = false;
+    //   this.fieldValue = selectedOptions.map((option) => option.text).join('/');
+    // },
+    // //显示机构选择
+    // showPopup() {
+    //   this.showOrg = true;
+    // },
     //提交
     onsubmit(){
       if(!this.formData.orgId) return this.$toast('请选择机构');
@@ -153,10 +151,10 @@ export default {
         if(this.formData.isEnable === null){
           return this.$toast('请选择营业状态');
         }else {
-          if(this.formData.isEnable){
+          if(this.formData.isEnable == '1'){
             if(!this.formData.openTime) return this.$toast('请选择开始时间');
             if(!this.formData.closeTime) return this.$toast('请选择结束时间');
-            if(!timeCheck([this.formData.workTime,this.formData.workOffTime])) return this.$toast('开始时间不能大于结束时间');
+            if(!timeCheck([this.formData.openTime,this.formData.closeTime])) return this.$toast('开始时间不能大于结束时间');
           }
         }
         let data = {