凉纪 2 роки тому
батько
коміт
f1a21027fa

+ 1 - 1
src/components/orgTree/index.vue

@@ -61,7 +61,7 @@ export default {
     },
     onSelect(value) {
       this.$emit('change', value.id)
-      this.$emit('change', value)
+      this.$emit('changeItem', value)
     }
   },
   model: {

+ 7 - 7
src/components/upload/index.vue

@@ -47,7 +47,7 @@ export default {
       value:{
         handler(val){
           this.imageList= this.fileList = val.map(v=>{
-          
+
             let imgUrl =
               process.env.NODE_ENV === "development"
                 ?  config.baseUrl + v.path
@@ -58,7 +58,7 @@ export default {
               path:v.path,
             }
           })
-          
+
         },
         deep:true,
         immediate:true
@@ -101,13 +101,13 @@ export default {
             process.env.NODE_ENV === "development"
               ?  config.baseUrl + res.data.url
               : window.origin + res.data.url;
-         
+
           this.imageList.push({ name: res.data.name, url: imgUrl,path:res.data.url});
           this.$emit('input',this.imageList)
-          
+
         }).catch((err) => {
           /*上传失败*/
-          
+
           this.$toast.fail('上传失败')
         });
       },
@@ -117,9 +117,9 @@ export default {
         imageList.forEach(item=>{
           item.imgPath=item.path
           item.path=item.imgPath
-          
+
         })
-        
+
         this.$emit('input',imageList)
       }
     },

+ 129 - 0
src/components/upload/uploader.vue

@@ -0,0 +1,129 @@
+<template>
+    <div>
+        <van-uploader
+          ref="uploader"
+          v-bind="$attrs"
+          v-model="fileList"
+          :before-read="beforeRead"
+          :after-read="afterRead"
+          :max-count="maxCount"
+          @delete="deleteHandler"
+          :max-size="maxSize * 1024*1024"/>
+    </div>
+</template>
+<script>
+import {upload} from "@/api/public";
+import ImageCompressor from "js-image-compressor";
+import {imgUrl} from "@/utils";
+export default {
+    props:{
+      value:{
+        type: Array,
+      },
+      //最大上传数量
+      maxCount:{
+        type: Number,
+        default: 6,
+      },
+      //文件大小,单位MB
+      maxSize:{
+        type: Number,
+        default: 5,
+      },
+
+    },
+    data() {
+      return {
+        fileList:[],
+        //上传之后的图片列表,双向绑定之后覆盖fileList
+        imageList:[]
+      };
+    },
+
+    mounted() {
+
+    },
+    watch:{
+      value:{
+        handler(val){
+          //console.log(imgUrl(v.imgPath),'111')
+          this.imageList= this.fileList = val.map(v=>{
+            return {
+              name: v.name,
+              url:  imgUrl(v.imgPath),
+              path:v.path,
+            }
+          })
+
+        },
+        deep:true,
+        immediate:true
+      }
+    },
+    methods: {
+      //上传前压缩
+      beforeRead(file){
+        console.log(file,'图片压缩前')
+        return new Promise((resolve, reject) => {
+            new ImageCompressor({
+              file,
+              quality: 0.6,
+              success: (result) => {
+                //this.$toast('图片压缩成功')
+                console.log(result,'图片压缩后')
+                let imgFile = new File([result], result.name, {
+                  width: result.width,
+                  height: result.height,
+                  type: result.type,
+                });
+                console.log(imgFile,'后')
+                resolve(imgFile);
+              },
+              error: (e) => {
+                console.log('imageError:'+e);
+                this.$toast('图片压缩失败')
+                reject(e);
+              },
+             });
+        });
+      },
+      //上传到服务器
+      afterRead(fileObj){
+        let formData = new FormData();
+        formData.append("file", fileObj.file);
+        upload(formData, "image").then((res) => {
+          /*上传成功*/
+          this.imageList.push({ name: res.data.name, url: imgUrl(res.data.url),imgPath:res.data.url});
+          this.$emit('input',this.imageList)
+
+        }).catch((err) => {
+          /*上传失败*/
+
+          this.$toast.fail('上传失败')
+        });
+      },
+      //删除
+      deleteHandler(){
+        let imageList=JSON.parse(JSON.stringify(this.fileList))
+        imageList.forEach(item=>{
+          item.imgPath=item.path
+          item.path=item.imgPath
+
+        })
+
+        this.$emit('input',imageList)
+      }
+    },
+    model:{
+      prop:'value',
+      event:'input'
+    }
+};
+</script>
+<style lang="scss" scoped>
+  .upload-text{
+    font-size: 18px;
+    color: #999;
+    margin-top: 5px;
+  }
+</style>

+ 18 - 0
src/utils/date.js

@@ -32,3 +32,21 @@ export function newDateTime(time) {
   var ss = date.getSeconds() < 10 ? "0" + date.getSeconds() : date.getSeconds()
   return y + '-' + m+'-'+d+' '+hh+mm+ss
 }
+
+
+// 时间比较
+export function timeCheck(arr) {
+  let srcs = arr.filter((s) => s);
+  for (let i = srcs.length - 1; i > 0; i--) {
+    let a = timeToNumber(srcs[i]);
+    let b = timeToNumber(srcs[i - 1]);
+    if (a <= b) {
+      return false;
+    }
+  }
+  return true;
+}
+
+function timeToNumber(src) {
+  return src.replace(":", "") * 1;
+}

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

@@ -5,7 +5,7 @@
       <div class="menu-list-item" v-for="(v,i) in menuList" :key="i">
         <p @click="onclick">{{v.meta.title}}</p>
         <van-grid border :column-num="3">
-          <van-grid-item v-for="(item,index) in v.children" :key="index" :icon="item.meta.icon" :text="item.meta.title" :to="item.path" />
+          <van-grid-item v-for="(item,index) in v.children" :key="index" :icon="imgUrl(item.meta.icon)" :text="item.meta.title" :to="item.path" />
         </van-grid>
 <!--          <li v-for="(item,index) in v.list" :key="index">-->
 <!--            <div></div>-->

+ 1 - 1
src/views/menu/LZRegister/edit.vue

@@ -175,7 +175,7 @@
 import NavBar from '@/components/NavBar';
 import SelectCell from '@/components/selectCell';
 import DateCell from '@/components/dateCell';
-import Uploader from '@/components/upload';
+import Uploader from '@/components/upload/uploader';
 import NfcPopup from '@/components/nfcPopup/more';
 import {taskDetails,saveTaskData} from "@/views/menu/LZRegister/api";
 import {formatDate} from "@/filters/filter";

+ 17 - 43
src/views/menu/workTime/index.vue

@@ -2,7 +2,7 @@
   <div class="works-time">
     <nav-bar></nav-bar>
     <div class="form-box">
-      <org-tree v-model="formData.orgId" @change="orgChange"></org-tree>
+      <org-tree v-model="formData.orgId"></org-tree>
       <!--   选择日期   -->
       <van-collapse v-model="activeCalendar">
         <van-collapse-item title="日期" :label="formData.ymdDate" name="1">
@@ -28,20 +28,8 @@
 
       <!--  选择时间    -->
       <van-cell-group >
-        <date-cell :disabled="formData.isDisabled || !formData.isEnable" title="营业开始" v-model="formData.workTime" date-type="time"></date-cell>
-        <date-cell :disabled="formData.isDisabled || !formData.isEnable" title="营业结束" v-model="formData.workOffTime" date-type="time"></date-cell>
-<!--        <van-cell title="开始时间" is-link  :label="formData.workTime" @click="formData.isDisabled?null:showTimePopup(1)"/>-->
-<!--        <van-cell title="结束时间" is-link  :label="formData.workOffTime"  @click="formData.isDisabled?null:showTimePopup(0)"/>-->
-        <van-popup v-model="showTime" round  position="bottom" >
-          <van-datetime-picker
-            v-model="selectedTime"
-            type="time"
-            min-hour="0"
-            max-hour="23"
-            @confirm="datePickerConfirm"
-            :columns-order="['hour', 'minute']"
-          />
-        </van-popup>
+        <date-cell :disabled="formData.isDisabled || !formData.isEnable" title="营业开始" v-model="formData.workTime" @change="startChange" date-type="time"></date-cell>
+        <date-cell :disabled="formData.isDisabled || !formData.isEnable" title="营业结束" @change="endChange" v-model="formData.workOffTime" date-type="time"></date-cell>
       <!--   操作     -->
       </van-cell-group>
       <van-cell center title="是否复制到全月" v-if="!formData.isDisabled">
@@ -63,6 +51,7 @@ import DateCell from '@/components/dateCell';
 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},
@@ -105,16 +94,10 @@ export default {
     ...mapGetters(['orgName','orgId']),
   },
   methods:{
-    orgChange(){
-      // let data = {
-      //   ...this.query
-      // }
-      // data.date = `${this.query.date}-01`;
-      // if(!this.query.orgId) return this.$toast('请选择机构');
-      // dataList(data).then(res=>{
-      //   this.dataList = res.data;
-      // })
+    startChange(){
+
     },
+    endChange(){},
     //切换状态
     changeRadio(s){
       this.formData.isEnable = s;
@@ -128,15 +111,6 @@ export default {
       this.$refs.calendar.copyMouth(this.formData);
       this.isCopy = true;
     },
-    //根据状态切换选择时间
-    datePickerConfirm(date){
-      if(this.timeFlag) {
-        this.formData.workTime = date;
-      }else{
-        this.formData.workOffTime = date;
-      }
-      this.showTime = false;
-    },
     //获取机构树
     getTreeList(){
       deptTreeList(this.orgId).then(res=>{
@@ -157,22 +131,14 @@ export default {
       this.showOrg = false;
       this.fieldValue = selectedOptions.map((option) => option.text).join('/');
     },
-    //显示日历
-    showCalendar(){
-      this.calendar = !this.calendar;
-    },
     //显示机构选择
     showPopup() {
       this.showOrg = true;
     },
-    //显示时间选择
-    showTimePopup(key){
-      this.timeFlag = key;
-      this.showTime = true;
-    },
     //提交
     onsubmit(){
       if(!this.formData.orgId) return this.$toast('请选择机构');
+
       if(this.isCopy){
         let data = {
           orgIdList:[this.formData.orgId],
@@ -184,6 +150,15 @@ export default {
           this.isCopy = false;
         })
       }else {
+        if(this.formData.isEnable === null){
+          return this.$toast('请选择营业状态');
+        }else {
+          if(this.formData.isEnable){
+            if(!this.formData.workTime) return this.$toast('请选择开始时间');
+            if(!this.formData.workOffTime) return this.$toast('请选择结束时间');
+            if(!timeCheck([this.formData.workTime,this.formData.workOffTime])) return this.$toast('开始时间不能大于结束时间');
+          }
+        }
         let data = {
           orgIdList:[this.formData.orgId],
           workTimeList:[this.formData]
@@ -198,7 +173,6 @@ export default {
     //日期选择
     onChange(day){
       this.selectDate = day;
-      console.log(this.selectDate,'this.date')
       this.formData.ymdDate = this.selectDate.ymdDate;
       this.formData.isEnable = this.selectDate.isEnable;
       this.formData.workTime = this.selectDate.workTime;