瀏覽代碼

提交feature分支

manywhy 5 月之前
父節點
當前提交
08f74fc659

+ 3 - 2
src/attendance/view/AttendanceNew/ApplyRecord.vue

@@ -13,7 +13,7 @@
             <div class="content">
               <div class="title">
                 <div class="detail">{{ item.type_mark }}申请</div>
-                <div :class="{ wait: item.status == 0, refuse: item.status == -1 }" class="status">{{ filterStatus(item.status) }}</div>
+                <div :class="{ wait: item.status == 0, refuse: item.status == -1 }" class="status">{{ filtetatus(item.status) }}</div>
               </div>
               <div v-if="item.type == 4" class="desc">请假类型:{{ item.holiday_name }}</div>
               <div class="desc">申请时间:{{ item.application_time }}</div>
@@ -421,7 +421,8 @@ export default {
   color: #909399;
 }
 .leftkep {
-  padding: 0.2rem 0.12rem 0.2rem 0.32rem;
+  padding: 0.2rem 0.32rem 0.2rem;
+  box-sizing: border-box;
 }
 .headAll {
   height: calc(100% - 3rem) !important;

文件差異過大導致無法顯示
+ 883 - 774
src/attendance/view/AttendanceNew/Index.vue


+ 3 - 1
src/components/DeptSelectorDropdown.vue

@@ -3,7 +3,7 @@
     <div class="dept_path" style="white-space:nowrap;" v-if="list.length==0">
       <div class="dept_paths">
         <a href="javascript:void(0);" @click="backToIndex(-1)">全公司</a>
-        <a v-for="(item, i) in selectedDeptStack" :key="i" href="javascript:void(0);" @click.stop="backToIndex(i)">
+        <a v-for="(item, i) in selectedDeptStack" style="display: flex; align-items: center;" :key="i" href="javascript:void(0);" @click.stop="backToIndex(i)">
           <van-icon name="arrow" />
           {{ item.name }}
         </a>
@@ -187,6 +187,8 @@ export default {
 }
 
 .employee_cell {
+  display: flex;
+  align-items: center;
   padding: 0.16rem 0.32rem;
   touch-action: none;
 }

+ 2 - 1
src/components/EmployeeSelectorCell.vue

@@ -27,8 +27,9 @@
           <em v-show="index > 0">,</em>
           {{ item.name }}
         </span>
-        等{{ selected_data.employee.length }}人
+        等
       </div>
+      <div>{{ selected_data.employee.length }}人</div>
     </template>
     <EmployeeSelector
       :title="bar_title"

+ 14 - 6
src/components/NumberInput.vue

@@ -8,6 +8,7 @@
     :required="required"
     :id="com_id"
     :class="{'v-input': show_dept_selector}"
+    style="display: flex; align-items: center;"
   >
     <template slot="right-icon">
       <div class="picker-box" @click="activeIsAdd" v-if="chosePoint&&!isForbidSet">
@@ -22,7 +23,7 @@
      <div class="flex-box-ce">
           <span v-if="isAdd" class="red">+</span>
           <span v-else class="green">-</span>
-          <van-field  style="padding: 0.1rem 0;" @input="onInput" type="digit" :readonly="onReadonly" @blur="onBlur"  v-model.number="numVal" placeholder="分值"/>
+          <van-field  style="padding: 0.1rem 0;" @input="onInput" type="digit" :readonly="onReadonly"  @focus="onFocus" @blur="onBlur"  v-model.number="numVal" placeholder="分值"/>
       </div>
 <!--     <div @click.stop="show_keyboard">
         <span v-if="input_value > 0" class="red">+</span>
@@ -126,11 +127,14 @@ export default {
   },
   computed:{
     onReadonly(){
-      if((this.min&&this.min == this.max)||this.isForbidSet){
-        return true
-      }else{
-       return false
-      }
+      // 防止传入的this.min, this.max为 '', undefined, null的情况
+      if((!!this.min && !!this.max && this.min == this.max) || this.isForbidSet) return true
+      else return false
+      // if((this.min&&this.min == this.max)||this.isForbidSet){
+      //   return true
+      // }else{
+      //  return false
+      // }
     }
   },
   watch: {
@@ -228,7 +232,11 @@ export default {
         // }
         this.$emit('value', value * 1)
     },
+    onFocus() {
+      this.$emit("inputing", "")
+    },
     onBlur() {
+       this.$emit("inputed", "")
       let value=this.numVal;
       if (!this.isAdd) {
         value = value * 1 * -1

+ 3 - 1
src/components/RuleCategorySelDropdown.vue

@@ -2,7 +2,7 @@
   <div class="dept-select-drodown__wrap">
       <div class="dept_path" style=" white-space:nowrap;">
         <div class="dept_paths">
-          <a href="javascript:void(0);" @click="backToIndex(-1)" >全部</a>
+          <a href="javascript:void(0);" style="display: flex; align-items: center;" @click="backToIndex(-1)" >全部</a>
           <a
             v-for="(item, i) in selectedDeptStack"
             :key="i"
@@ -182,6 +182,8 @@ export default {
   }
 
   .employee_cell {
+    display: flex;
+    align-items: center;
     padding: 0.16rem 0.32rem;
     touch-action: none;
   }

+ 42 - 16
src/components/RuleScopeSelector.vue

@@ -171,7 +171,7 @@
           >
             全部
           </el-button>
-          <el-tree
+           <!-- <el-tree
             ref="ruleTree"
             node-key="id"
             :data="ruleTree"
@@ -179,7 +179,9 @@
             highlight-current
             style="margin-top: 16px"
             @node-click="onRuleClick"
-          />
+          /> -->
+          <collapse :ruleTree="ruleTree" :current-rule-id="currentRuleId" @open="onRuleClick"/>
+          <!-- <collapse :current-rule-id="currentRuleId" :ruleTree="ruleTree"  /> -->
           <div style="height: 0.5rem;"></div>
         </div>
       </template>
@@ -189,9 +191,12 @@
 
 <script>
 import {_debounce} from "../utils/auth";
-
+import collapse from "./collapse/index.vue";
 export default {
   name:'RuleScopeSelector',
+  components: {
+    collapse
+  },
   props:{
     visible:{
       type:Boolean,
@@ -219,6 +224,7 @@ export default {
       showSelector:false,
       itemObject:null,
       ruleTree:[],
+      activeNames: ['0'],
       items:[],
       itemSelected:[],
       currentRuleId:0,
@@ -272,7 +278,7 @@ export default {
         item.forEach((record) => {
           let temp = {
             ...record,
-            selected:this.itemSelected.some(i => i.id === record.id)
+            selected: this.itemSelected.some(i => i.id === record.id)
           }
           this.items.push(temp)
         })
@@ -292,10 +298,9 @@ export default {
       this.$axiosUser('get','/api/pro/integral/rule/trees/scope',data)
         .then(res => {
           if (res.data.code === 1){
-            this.ruleTree = res.data.data.rule_tree
-            this.itemObject = res.data.data.item_list
-            // this.initItems(this.itemObject)
-            this.$refs.scroller.triggerPullToRefresh()
+            this.ruleTree = res.data.data.rule_tree; // 分类列表,树结构
+            this.itemObject = res.data.data.item_list; // 细节列表
+             this.$refs.scroller.triggerPullToRefresh()
           }
         })
     },
@@ -317,14 +322,15 @@ export default {
       }
     },
     onRuleClick(rule){
-      this.currentRuleId = rule.id || 0
+      this.currentRuleId = rule.id || 0;
+      console.log(this.currentRuleId);
     },
     onRuleClear(){
-      this.$refs['ruleTree'].setCurrentKey(null)
+      this.$refs['ruleTree'] && this.$refs['ruleTree'].setCurrentKey(null)
       this.currentRuleId = 0
     },
     onConfirm(){
-      this.$emit("confirm",this.itemSelected.map(item => {
+      this.$emit("confirm", this.itemSelected.map(item => {
         return {...item}
       }))
       this.close()
@@ -336,19 +342,19 @@ export default {
       this.onConfirm()
     },
     clear(){
-      this.itemSelected = []
-      this.initItems(this.itemObject)
+      this.itemSelected = [];
+      this.onRefresh();
     },
     calculateItem(){
-      this.items = []
-      let itemObjects = []
+      this.items = [];
+      let itemObjects = [];
       if (!this.itemObject) return
       if (this.currentRuleId > 0){
         if (!this.itemObject[`rule_${this.currentRuleId}`]) {
           this.items = []
           return
         }
-        itemObjects = {1:this.itemObject[`rule_${this.currentRuleId}`]}
+        itemObjects = {1: this.itemObject[`rule_${this.currentRuleId}`]}
       } else {
         itemObjects = this.itemObject
       }
@@ -474,4 +480,24 @@ export default {
   padding: 0;
 }
 
+/deep/ .el-tree-node {
+  margin: 0 0.24rem;
+  border-bottom: 0.02rem solid #ebedf0;
+}
+/deep/ .el-tree-node__content {
+  height: 1rem;
+}
+
+/deep/ .el-tree-node__children .el-tree-node__content{
+  border-bottom: none;
+}
+
+/deep/ .el-tree-node__label {
+  font-size: 0.32rem;
+}
+
+/deep/ .el-tree-node__expand-icon {
+  font-size: 0.3rem;
+}
+
 </style>

+ 11 - 4
src/components/YearMonthPicker.vue

@@ -1,8 +1,15 @@
 <template>
   <div class="bg-fff">
     <van-row>
-      <van-col span="9"><div class="btn-left"><van-icon name="arrow-left" @click="prev" /></div></van-col>
-      <van-col span="6"><icon name="YMPicker_item_icon" class="YMPicker_item_icon"></icon><div class="date-text" @click="show = true">{{currentDate_show}}</div></van-col>
+      <van-col span="9">
+        <div class="btn-left">
+          <van-icon name="arrow-left" @click="prev" />
+        </div>
+      </van-col>
+      <van-col span="6" style="display: flex; align-items: center;">
+        <icon name="YMPicker_item_icon" class="YMPicker_item_icon"></icon>
+        <div class="date-text" @click="show = true">{{currentDate_show}}</div>
+      </van-col>
       <van-col span="9"><div class="btn-right"><van-icon name="arrow" @click="next" /></div></van-col>
     </van-row>
 
@@ -135,8 +142,8 @@
      background:#238dfa;
    }
   .YMPicker_item_icon{
-    width:0.23rem;
-    height:auto;
+    width: 0.25rem;
+    height: 0.25rem;
     padding-right: 0.15rem;
     color:#323233;
   }

+ 108 - 0
src/components/collapse/index - 副本.vue

@@ -0,0 +1,108 @@
+<template>
+  <div class="collspseBox">
+    <van-row class="collspse_item" v-for="(item, index) in  ruleTree" :key="item.id" @click.stop="open(item, index)" >
+      <van-col span="21" class="title" :class="currentRuleId == item.id ? 'item-active' : 'item-gray'">{{ item.name }}</van-col>
+      <van-col span="3" class="icon">
+        <van-icon v-if="item.child && item.child.length > 0" :name="item.active ? 'arrow-down' : 'arrow'" :color="currentRuleId == item.id ? '#409EFF' : '#878D99'" />
+      </van-col>
+      <van-col span="24" class="content" v-if="item.child && item.child.length > 0" :style="{ height: item.active ? 'auto' : '0' }">
+        <collapse :currentRuleId="currentRuleId" :ruleTree="item.child" @open="$emit('open', $event)" />
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<!--  -->
+
+<script>
+  export default {
+    name: "collapse",
+    props: {
+      ruleTree: Array,
+      currentRuleId: [String, Number],
+    },
+    data() {
+      return {
+        activeName: "",
+      }
+    },
+     methods: {
+      open(item, index) {
+        this.activeName = item.name;
+        this.$set(this.ruleTree[index], 'active', !this.ruleTree[index].active);
+        this.$emit("open", item)
+      }
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  .item-active {
+    color: #409EFF !important;
+  }
+  .item-gray {
+    color: #323233 !important;
+  }
+.collspseBox {
+  padding: 14px 10px;
+
+  .collspse_item {
+    background-color: #fff;
+    padding: 15px 12px;
+    border-radius: 8px;
+    overflow: hidden;
+    margin-bottom: 10px;
+    box-shadow: 0 0px 6px rgba(100, 101, 102, 0.1);
+
+    .icon {
+      text-align: right;
+    }
+
+    .title {
+      font-size: 0.32rem;
+      color: #323233;
+      white-space: nowrap;
+      text-wrap: nowrap;
+      word-break: keep-all;
+      overflow: hidden;
+      text-overflow: ellipsis;
+    }
+
+    .content {
+      transition: all .5s;
+
+      .collspseBox {
+        padding: 0;
+
+        .collspse_item {
+          padding: 16px 0 0 12px;
+          margin-bottom: 0;
+          box-shadow: none;
+
+          .title {
+            font-size: 0.3rem;
+            color: #2F3541;
+            font-family: "PingFang SC";
+            font-weight: 400;
+            position: relative;
+            padding-left: 5px;
+          }
+
+          // .title::before {
+          //   content: '';
+          //   position: absolute;
+          //   top: calc(50% - 1px);
+          //   left: 0;
+          //   width: 2px;
+          //   height: 2px;
+          //   background-color: #2F3541;
+          //   border-radius: 2px;
+          // }
+        }
+      }
+    }
+  }
+
+}
+
+</style>

+ 156 - 0
src/components/collapse/index.vue

@@ -0,0 +1,156 @@
+<template>
+  <div class="collspseBox">
+    <van-row class="collspse_item" v-for="(item, index) in  ruleTree" :key="item.id" >
+      <van-col class="icon" span="2"  @click.stop="open(item, index)">
+        <van-icon v-if="item.child && item.child.length > 0" size="16" :name="item.active ? 'arrow-down' : 'arrow'" />
+      </van-col>
+      <van-col span="22" class="title" :class="currentRuleId == item.id ? 'item-active' : 'item-gray'"  @click.stop="open(item, index)">
+        <label style="display: flex; align-items: center;">
+          <input class="radio_button" type="radio" :checked="currentRuleId == item.id" :value="item.id" name="treeGroup" @change="handleChange(item)">
+          {{ item.name }}
+        </label>
+      </van-col>
+
+      <van-col span="24" class="content" v-if="item.child && item.child.length > 0" :style="{ height: item.active ? 'auto' : '0' }">
+        <collapse :currentRuleId="currentRuleId" :ruleTree="item.child" @open="$emit('open', $event)" />
+      </van-col>
+    </van-row>
+  </div>
+</template>
+
+<!--  -->
+
+<script>
+  export default {
+    name: "collapse",
+    props: {
+      ruleTree: Array,
+      currentRuleId: {
+        type: [String, Number],
+        default: 0
+      },
+    },
+
+    data() {
+      return {
+        selectId: 0,
+      }
+    },
+
+    methods: {
+      handleChange(item) {
+        this.$emit("open", item);
+      },
+      open(item, index) {
+        this.$set(this.ruleTree[index], 'active', !this.ruleTree[index].active);
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="scss" scoped>
+  .item-active {
+    color: #409EFF !important;
+  }
+  .item-gray {
+    color: #323233 !important;
+  }
+
+.collspseBox {
+  padding: 14px 10px;
+
+  .collspse_item {
+    background-color: #fff;
+    padding: 15px 12px;
+    border-radius: 8px;
+    overflow: hidden;
+    margin-bottom: 10px;
+    box-shadow: 0 0px 6px rgba(100, 101, 102, 0.1);
+
+    .icon {
+      text-align: center;
+      vertical-align: middle;
+      color: #d2d2d2;
+    }
+
+    .title {
+      font-size: 0.32rem;
+      color: #323233;
+      display: flex;
+      align-items: center;
+      white-space: nowrap;
+      text-wrap: nowrap;
+      word-break: keep-all;
+      overflow: hidden;
+      text-overflow: ellipsis;
+      /* 单选框样式 */
+      .radio_button {
+        -webkit-appearance: none; /* 移除默认样式 */
+        appearance: none; /* 移除默认样式 */
+        outline: none; /* 移除轮廓 */
+        display: inline-block;
+        width: 0.3rem; /* 设置宽度 */
+        height: 0.3rem; /* 设置高度 */
+        border-radius: 50%; /* 设置为圆形 */
+        background-color: white; /* 初始背景颜色为白色 */
+        position: relative; /* 设置相对定位 */
+        margin: 0 8px 0 0; /* 设置边距 */
+        border: 1px solid #d2d2d2;
+        cursor: pointer; /* 设置鼠标指针为手型 */
+      }
+
+      .radio_button:checked {
+        width: 0.3rem; /* 设置宽度 */
+        height: 0.3rem; /* 设置高度 */
+        background-color: #409EFF; /* 选中时中心白色 */
+        border: none; /* 选中时去掉边框 */
+        z-index: 2; /* 确保在最上面 */
+      }
+
+      .radio_button:checked::before {
+        content: "";
+        position: absolute;
+        top: 50%; /* 使伪元素垂直居中 */
+        left: 50%; /* 使伪元素水平居中 */
+        transform: translate(-50%, -50%); /* 使伪元素水平垂直居中 */
+        width: 0.12rem;
+        height: 0.12rem;
+        border-radius: 50%; /* 使伪元素变成圆形 */
+        background-color: #ffffff; /* 外部红色 */
+        z-index: 1; /* 确保伪元素在最前面 */
+      }
+    }
+
+    .content {
+      transition: all .5s;
+
+      .collspseBox {
+        padding: 0;
+
+        .collspse_item {
+          padding: 16px 0 0 12px;
+          margin-bottom: 0;
+          box-shadow: none;
+
+          .title {
+            display: flex;
+            align-items: center;
+            font-size: 0.3rem;
+            color: #2F3541;
+            font-family: "PingFang SC";
+            font-weight: 400;
+            position: relative;
+            padding-left: 5px;
+          }
+
+
+        }
+      }
+    }
+  }
+
+}
+
+</style>

+ 60 - 11
src/main.js

@@ -1,4 +1,3 @@
-
 import Vue from 'vue'
 import App from './App'
 import router from './router'
@@ -23,7 +22,39 @@ import axiosKc from '@/utils/axiosKc'
 import 'shepherd.js/dist/css/shepherd.css';
 
 // import 'vant/lib/index.css';
-import { Tabbar, Empty, TabbarItem, ShareSheet, Loading, Divider, Overlay,Grid, GridItem, Form, Field, NavBar, Row, Col, List, Picker, Cell, CellGroup, Toast, Popup, Dialog, RadioGroup, Radio, Notify, Button, Icon, Tab, Tabs } from 'vant'
+import {
+  Tabbar,
+  Empty,
+  TabbarItem,
+  ShareSheet,
+  Loading,
+  Divider,
+  Overlay,
+  Grid,
+  GridItem,
+  Form,
+  Field,
+  NavBar,
+  Row,
+  Col,
+  List,
+  Picker,
+  Cell,
+  CellGroup,
+  Toast,
+  Popup,
+  Dialog,
+  RadioGroup,
+  Radio,
+  Notify,
+  Button,
+  Icon,
+  Tab,
+  Tabs,
+  Collapse,
+  CollapseItem
+} from 'vant'
+
 
 /*element ui*/
 import {
@@ -34,7 +65,23 @@ import {
 import 'element-ui/lib/theme-chalk/index.css';
 
 
-import { getWxToken, setWxToken, getIsIdentity, supremeAuthority, getIsWx, getTypes, getTypesName, getUserData, getEmployeeMap, getCache, setCache, removeCache, returnDeptName, getEmployeeMapItem, returnFh } from '@/utils/auth'
+import {
+  getWxToken,
+  setWxToken,
+  getIsIdentity,
+  supremeAuthority,
+  getIsWx,
+  getTypes,
+  getTypesName,
+  getUserData,
+  getEmployeeMap,
+  getCache,
+  setCache,
+  removeCache,
+  returnDeptName,
+  getEmployeeMapItem,
+  returnFh
+} from '@/utils/auth'
 Vue.prototype.$echarts = echarts
 Vue.prototype.$moment = moment
 Vue.prototype.$getTypesName = getTypesName
@@ -52,8 +99,8 @@ Vue.prototype.$axiosKq = axiosKq
 Vue.prototype.$axiosKc = axiosKc
 Vue.prototype.$removeCache = removeCache
 Vue.prototype.$returnDeptName = returnDeptName
-Vue.prototype.$socketApi = socketApi   //长连接
-Vue.prototype.$socketApiTow = socketApiTow   //长连接
+Vue.prototype.$socketApi = socketApi //长连接
+Vue.prototype.$socketApiTow = socketApiTow //长连接
 Vue.prototype.$returnFh = returnFh
 Vue.prototype.$isWx = getIsWx()
 
@@ -70,10 +117,12 @@ Vue.component('userImage', userImage)
 /*element ui 按需引入*/
 Vue.use(ELTree).use(ELButton).use(ELDrawer)
 
-Vue.use(Button).use(Tabbar).use(TabbarItem).use(ShareSheet).use(Grid).use(Overlay).use(Loading).use(Divider).use(GridItem).use(Picker).use(Form).use(Field).use(List).use(Tabs).use(Tab).use(NavBar).use(Row).use(Col).use(Cell).use(CellGroup).use(Toast).use(Popup).use(Dialog).use(RadioGroup).use(Radio).use(Icon).use(Notify).use(Empty)
+Vue.use(Button).use(Tabbar).use(TabbarItem).use(ShareSheet).use(Grid).use(Overlay).use(Loading).use(Divider).use(
+  GridItem).use(Picker).use(Form).use(Field).use(List).use(Tabs).use(Tab).use(NavBar).use(Row).use(Col).use(Cell).use(
+  CellGroup).use(Toast).use(Popup).use(Dialog).use(RadioGroup).use(Radio).use(Icon).use(Notify).use(Empty).use(Collapse).use(CollapseItem)
 
-Vue.prototype.$route_back = function (setp) {
-  if (typeof (setp) == 'undefined') {
+Vue.prototype.$route_back = function(setp) {
+  if (typeof(setp) == 'undefined') {
     setp = -1
   }
   if (window.history.length <= 1 && window.plus) {
@@ -87,7 +136,7 @@ Vue.prototype.$route_back = function (setp) {
   }
 }
 
-Vue.directive('isKeyboard', function (el) {
+Vue.directive('isKeyboard', function(el) {
   let isAndroid = true;
   if (navigator.userAgent.indexOf('Android') > 0) {
     isAndroid = true;
@@ -97,7 +146,7 @@ Vue.directive('isKeyboard', function (el) {
   if (isAndroid) {
     //获取原窗口的高度
     var originalHeight = document.documentElement.clientHeight || document.body.clientHeight;
-    window.onresize = function () {
+    window.onresize = function() {
       //键盘弹起与隐藏都会引起窗口的高度发生变化
       var resizeHeight = document.documentElement.clientHeight || document.body.clientHeight;
       if (resizeHeight - 0 < originalHeight - 0) {
@@ -108,7 +157,7 @@ Vue.directive('isKeyboard', function (el) {
         el.style['display'] = 'block'
       }
     };
-  } else {  // ios:focusin和focusout支持冒泡,对应focus和blur, 使用focusin和focusout的原因是focusin和focusout可以冒泡,focus和blur不会冒泡,这样就可以使用事件代理,处理多个输入框存在的情况。
+  } else { // ios:focusin和focusout支持冒泡,对应focus和blur, 使用focusin和focusout的原因是focusin和focusout可以冒泡,focus和blur不会冒泡,这样就可以使用事件代理,处理多个输入框存在的情况。
     document.body.addEventListener("focusin", () => {
       //软键盘弹出的事件处理
       el.style['display'] = 'none'

+ 1 - 1
src/okr/view/okrHome.vue

@@ -169,7 +169,7 @@ export default {
   },
   computed:{
     barColor(){
-      return function (item) { 
+      return function (item) {
         return item.day<0 ? (item.composite_state == 4?'#2879ff':'#f56c6c'):'#2879ff'
        }
     },

+ 2 - 2
src/okr/view/okrHome/okrBack.vue

@@ -24,9 +24,9 @@
             <div v-else v-for="(item, index) in backlogList" :key="index">
               <div class="backlog_list_tit">{{ item.time }}</div>
               <div v-for="(arr, keys) in item.list" :key="keys" @click="openDetail(arr)" :style="'z-index:' + (item.list.length - keys)" class="performanceList backlog_list">
-                  <div class="flex-box">
+                  <div class="flex-box" style="align-items: center;">
                      <span class="flex-1" v-html="arr.content"></span>
-                     <van-icon name="arrow" />
+                     <van-icon name="arrow" color="#b1b1b1" />
                   </div>
               </div>
             </div>

+ 3 - 1
src/performance/components/statementcontent/statement_details.vue

@@ -3,7 +3,9 @@
     <van-nav-bar :title="barTItle" left-text="" left-arrow @click-left="$route_back"></van-nav-bar>
     <header class="performanceList" v-if="moduleshow">
       <van-row>
-        <van-col span="24"><van-search v-model="keyword" placeholder="请输入员工姓名搜索" @input="keyInput" style="padding: 0.2rem 0.12rem .2rem .32rem;" /></van-col>
+        <van-col span="24">
+          <van-search v-model="keyword" placeholder="请输入员工姓名搜索" @input="keyInput" style="padding: 0.2rem 0.32rem .2rem .32rem;" />
+        </van-col>
       </van-row>
     </header>
     <div class="headScreen flex-no-wrap" v-if="moduleshow">

+ 10 - 10
src/performance/components/workbenchcontent/messageInform.vue

@@ -25,15 +25,16 @@
               <div class="backlog_list_tit">{{ item.time }}</div>
               <div v-for="(arr, keys) in item.list" :key="keys" @click="unreadCli(arr)" :style="'z-index:' + (item.list.length - keys)" class="performanceList backlog_list">
                 <div class="flex-box">
-                <userImage
-                  class="about-me__avatar"
-                  :id="arr.userInfo.id"
-                  :img_url="arr.userInfo.img_url"
-                  :user_name="arr.userInfo.name"
-                  fontSize="0.24"
-                  width="0.65rem"
-                  height="0.65rem"
-                ></userImage>
+                  <userImage
+                    class="about-me__avatar"
+                    :id="arr.userInfo.id"
+                    :img_url="arr.userInfo.img_url"
+                    :user_name="arr.userInfo.name"
+                    fontSize="0.24"
+                    width="0.65rem"
+                    height="0.65rem"
+                  >
+                  </userImage>
                   <span v-html="arr.content"></span>
                 </div>
               </div>
@@ -67,7 +68,6 @@ export default {
         page: 1, // 当期页
         page_size: 10 // 一页多少数据
       },
-
       theBackupListcc: []
     }
   },

+ 20 - 3
src/point/view/integral/batchList.vue

@@ -66,6 +66,8 @@
                  name="积分"
                  required
                  v-if="item.pid==0"
+                 @inputing="inputing"
+                 @inputed="inputed"
                  v-validate="'required'">
                  </NumberInput>
                  <div class="flex-box flex-v-ce jf" v-else>
@@ -124,7 +126,9 @@
                   name="积分"
                   required
                   v-if="item.pid==0"
-                  v-validate="'required'">
+                  v-validate="'required'"
+                  @inputing="inputing"
+                  @inputed="inputed">
                   </NumberInput>
                   <div class="flex-box flex-v-ce jf" v-else>
                     <div>填写积分</div>
@@ -212,6 +216,8 @@
                      title="填写积分"
                      name="积分"
                      required
+                     @inputing="inputing"
+                     @inputed="inputed"
                      v-validate="'required'">
                      </NumberInput>
                  </div>
@@ -223,6 +229,8 @@
                      title="填写积分"
                      name="积分"
                      required
+                     @inputing="inputing"
+                     @inputed="inputed"
                      v-validate="'required'">
                      </NumberInput>
                  </div>
@@ -266,7 +274,7 @@
       </scroller>
       <div class="flex-box btns" v-show="rightText" :class="{ isIos: isIos }" >
         <van-button plain type="danger" class="flex-1" style="margin-right: 0.24rem" @click="reject()">拒绝</van-button>
-        <van-button plain type="info" class="flex-1" @click="pass()">通过</van-button>
+        <van-button plain type="info" class="flex-1" @click="pass()" :disabled="isDisabled">通过</van-button>
       </div>
       <van-dialog v-model="showReject" title="批量拒绝" class="reject_popup" show-cancel-button :beforeClose="save_btn">
         <van-cell-group>
@@ -319,7 +327,8 @@ export default {
       },
       isIos: this.$getCache('iPhone'),
       showReject: false, // 驳回弹窗
-      reject_text: ''// 驳回意见
+      reject_text: '',// 驳回意见
+      isDisabled: false
     }
   },
   created () {
@@ -360,6 +369,14 @@ export default {
 
       })
     },
+    // 用户输入中
+    inputing() {
+      this.isDisabled = true;
+    },
+    // 用户输入完
+    inputed() {
+      this.isDisabled = false;
+    },
     // 通过
     pass () {
       var obj, is = true, items = []

+ 14 - 2
src/point/view/integral/deptRank.vue

@@ -6,8 +6,12 @@
       <van-dropdown-item @open="calendarOpen">
         <van-icon name="calendar-o" slot="title" size="1.5em" />
       </van-dropdown-item>
-      <van-dropdown-item :title="searchForm.deptName" ref="deptDropdownItem"><DeptSelectorDropdown @onConfirm="onConfirmDept" /></van-dropdown-item>
-      <van-dropdown-item title="规则" ref="ruleDropdownItem"><RuleCategorySelDropdown @onConfirm="onConfirmRule" @onCancel="searchForm.ruleId = 0"/></van-dropdown-item>
+      <van-dropdown-item :title="searchForm.deptName" ref="deptDropdownItem">
+        <DeptSelectorDropdown @onConfirm="onConfirmDept" />
+      </van-dropdown-item>
+      <van-dropdown-item title="规则" ref="ruleDropdownItem">
+        <RuleCategorySelDropdown @onConfirm="onConfirmRule" @onCancel="searchForm.ruleId = 0"/>
+      </van-dropdown-item>
       <van-dropdown-item>
         <van-icon name="list-switch" slot="title" size="1.5em" />
         <template slot="default">
@@ -356,4 +360,12 @@ export default {
   }
 
 }
+
+/deep/ .van-calendar__header-subtitle {
+  width: 100%;
+  font-size: 0.28rem;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
 </style>

+ 15 - 3
src/point/view/integral/integral_entry_n.vue

@@ -176,7 +176,7 @@ import {Switch,Progress} from 'vant'
 import RuleScopeSelector from "../../../components/RuleScopeSelector.vue";
 import ReconnectingWebSocket from "reconnecting-websocket";
 import {generateUUID, getToken} from "../../../utils/auth";
-
+import Clipboard from "clipboard";
 Vue.use(Switch).use(Progress)
 export default {
   name: 'integral_entry_n',
@@ -744,8 +744,20 @@ export default {
       this.rwsBusinessSubmit(members,items);
     },
     rwsClipResult(){
-      navigator.clipboard.writeText(JSON.stringify(this.rwsBusinessData.result));
-      this.$notify({type: 'info', message: '结果已经复制到剪切板'})
+      const clipboard = new Clipboard(event.target,{
+        text: () => JSON.stringify(this.rwsBusinessData.result)
+      });
+      clipboard.on('success',() => {
+        this.$notify({type: 'info', message: '复制成功'});
+        clipboard.destroy();
+      });
+      clipboard.on('error', () => {
+        this.$notify({type: 'info', message: '复制失败,请联系系统管理员'});
+        clipboard.destroy();
+      });
+      clipboard.onClick(event);
+      // navigator.clipboard.writeText(JSON.stringify(this.rwsBusinessData.result));
+      // this.$notify({type: 'info', message: '结果已经复制到剪切板'})
     }
   },
   created () {

+ 7 - 3
src/point/view/integral/rule_category.vue

@@ -23,8 +23,8 @@
     <van-search v-model="keyword" placeholder="请输入分类名称或规则内容" />
     <div class="dept_path" v-show="pid_list_arr.length > 0">
       <a href="javascript:void(0);" @click="back_by_index(0)">全部</a>
-      <a v-for="(item, index) in pid_list_arr" :key="index" href="javascript:void(0);" @click="back_by_index(index + 1)">
-        <van-icon name="arrow" />
+      <a v-for="(item, index) in pid_list_arr" :key="index" href="javascript:void(0);" @click="back_by_index(index + 1)" style="margin-left: 0.1rem;">
+        <van-icon name="arrow" size="12" />
         {{ item.name }}
       </a>
     </div>
@@ -557,6 +557,8 @@ export default {
   margin-right: 0.1rem;
 }
 .dept_path a {
+  display: flex;
+  align-items: center;
   color: #238dfa;
   font-size: 0.28rem;
 }
@@ -567,13 +569,15 @@ export default {
   vertical-align: middle;
 }
 .dept_path {
+  display: flex;
+  align-items: center;
+  background-color: #fff;
   height: 0.6rem;
   position: relative;
   font-size: 0.32rem;
   line-height: 0.4rem;
   overflow-x: scroll;
   padding: 0 0.32rem;
-  background-color: #fff;
 }
 .dept_path:after {
   content: ' ';

+ 12 - 2
src/point/view/pointHome.vue

@@ -169,12 +169,14 @@
         </van-row>
       </div>
 
-<!--  团队PK    -->
-      <div class="rankingList" style="border-top: 0.2rem solid #f1f1f1;" v-if="pk.pkDocList.length > 0">
+      <!--  团队PK    -->
+      <div class="rankingList"  v-if="pk.pkDocList.length > 0">
         <van-cell title="团队PK" :value="pk.pkTimeScopeStr" is-link @click="openCalendar"></van-cell>
         <van-tabs
           v-model="pk.pkDocIndex"
           @click="clickPkDoc"
+          animated
+          swipeable
         >
           <van-tab v-for="(doc,index) in pk.pkDocList" :key="index" :title="doc.name">
             <van-cell-group v-if="pk.pkTeamList.length > 0">
@@ -1187,4 +1189,12 @@ export default {
   background-color: #F1F1F1;
 }
 
+/deep/ .van-calendar__header-subtitle {
+  width: 100%;
+  font-size: 0.28rem;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+
 </style>

+ 1 - 1
src/utils/auth.js

@@ -241,7 +241,7 @@ export function getTypesName(id) {
 //是否平台管理或者平台创始人
 export function getIsAdministrator() {
   var userInfo = getUserData();
-  if(userInfo.is_site_owner||userInfo.is_site_manager){
+  if(userInfo.is_site_owner || userInfo.is_site_manager){
     return true
   }else{
     return false

+ 4 - 2
src/view/body/initHome.vue

@@ -1,7 +1,9 @@
 <template>
     <div class="html-box">
       <van-nav-bar class="left-text-bold" left-text="首页">
-       <template slot="right"><van-icon v-if="is_app" class="icon-box"  name="scan" @click="$router.push({ name: 'scanqr' })"></van-icon></template>
+       <template slot="right">
+        <van-icon v-if="is_app" class="icon-box"  name="scan" @click="$router.push({ name: 'scanqr' })"></van-icon>
+        </template>
       </van-nav-bar>
       <div class="flex-box-ce" style="padding: 0.16rem 0.32rem;background-color: #FFFAE5;font-size: 0.28rem;" @click="openUrl" v-if="ggData.name">
         <van-icon name="bullhorn-o" />
@@ -155,7 +157,7 @@
         shepherd.start();
       },
       ActiveactiveName(val){
-        this.activeName=val;
+        this.activeName = val;
       },
       initTab(){
         this.tabs=[

+ 4 - 3
src/view/course/user.vue

@@ -148,7 +148,7 @@
       </van-overlay>
     </div>
   </template>
-  
+
   <script>
   import Clipboard from "clipboard";
   import QRCode from "qrcodejs2";
@@ -336,7 +336,7 @@
           e.clearSelection(); //清除选中的文字的选择状态
           that.$toast.success("ID复制成功~");
         });
-  
+
         that.clipboard.on("error", function(e) {
           console.error(e);
         });
@@ -347,6 +347,8 @@
           path: url
         });
       }
+
+
     }
   };
   </script>
@@ -543,4 +545,3 @@
     font-weight: 600;
   }
   </style>
-  

+ 53 - 19
src/view/index.vue

@@ -22,11 +22,11 @@
         </van-tabbar-item>
       </van-tabbar>
 
-      <van-popup v-model="updateVisible" :close-on-click-overlay="false" style="border-radius: 0.15rem; background: #fff0;">
+      <van-popup v-model="updateVisible" :close-on-click-overlay="false" style="border-radius: 0.15rem; background: #fff0; overflow: visible;">
         <div class="buyPopupBody" style="width: 85vw;">
           <div class="buyPopupContent">
-            <div class="buyPopupTitle"> {{announcement.type==1? '版本更新':'系统公告'}}</div>
-            <div style="max-height: 400px;overflow-y: auto;font-size: 0.3rem;" v-html="announcement.focus"></div>
+            <div class="buyPopupTitle"> {{announcement.type == 1? '版本更新':'系统公告'}}</div>
+            <div style="padding: 0.5rem 0.3rem 0.3rem 0.3rem; overflow-y: auto;font-size: 0.3rem; box-sizing: border-box;" v-html="announcement.focus"></div>
             <van-row gutter="20">
               <van-col span="12"><van-button block type="info" @click="updateVisible=false">我知道了</van-button></van-col>
               <van-col span="12"><van-button block type="default" @click="getItemBuyPopupPage">查看详情</van-button></van-col>
@@ -182,26 +182,60 @@
     margin-bottom: 0.08rem;
   }
 
+  // .buyPopupBody {
+  //   width: 85vw;
+  // }
+  // .buyPopupContent{
+  //   background: white;
+  //   padding:0.2rem 0.24rem;
+  //   border-radius: 0.15rem;
+  // }
+
+  // .buyPopupTitle{
+  //   background: #1a89fa;
+  //   text-align: center;
+  //   border-radius: 0.1rem;
+  //   font-weight: normal;
+  //   font-size: 0.32rem;
+  //   height: 0.8rem;
+  //   line-height: 0.8rem;
+  //   color: #fff;
+  //   margin-top: 0.24rem;
+  // }
+
   .buyPopupBody {
     width: 85vw;
+    .buyPopupContent {
+      position: relative;
+      background: white;
+      padding: 0 5vw 5vw 5vw;
+      border-radius: 0.15rem;
+      .buyPopupTitle {
+        background: #1a89fa;
+        position: absolute;
+        left: 0.6rem;
+        right: 0.6rem;
+        top: -0.3rem;
+        text-align: center;
+        border-radius: 0.1rem;
+        line-height: 2;
+        font-weight: normal;
+        font-size: 0.36rem;
+        color: #fff;
+      }
+      .buyPopupTxt {
+        font-size: 0.32rem;
+        line-height: 1.8;
+        padding-top: 0.8rem;
+      }
+      .buyPopupTel {
+        color: #1a89fa;
+        font-weight: bold;
+      }
+    }
   }
-  .buyPopupContent{
-    background: white;
-    padding:0.2rem 0.24rem;
-    border-radius: 0.15rem;
-  }
+
   .buyPopupContent /deep/ img,.buyPopupContent /deep/ ul,.buyPopupContent /deep/ li,.buyPopupContent /deep/ p{
     width: 100%;
   }
-  .buyPopupTitle{
-    background: #1a89fa;
-    text-align: center;
-    border-radius: 0.1rem;
-    font-weight: normal;
-    font-size: 0.32rem;
-    height: 0.8rem;
-    line-height: 0.8rem;
-    color: #fff;
-    margin-top: 0.24rem;
-  }
 </style>

+ 27 - 2
src/view/system/scan_qr.vue

@@ -30,7 +30,7 @@ export default {
   },
   watch:{
     $route(to, from) {
-      if(to.path=='/home'&&this.barcode){
+      if(to.path=='/home' && this.barcode){
         this.barcode.close();
       }
     }
@@ -39,7 +39,7 @@ export default {
     routeBack(is){
       this.barcode.close();
       this.$nextTick(()=>{
-          this.$route_back()
+        this.$route_back()
       })
     },
     backButtons(){
@@ -137,7 +137,32 @@ export default {
       });
     },
 
+    backChange() {
+      this.barcode.close();
+      this.$nextTick(()=>{
+        this.$route_back()
+      })
+    },
+    wulifanhui() {
+      console.log("监听到了");
+    }
+
+  },
+  mounted(){
+    // 如果支持 popstate 一般移动端都支持了
+    if (window.history && window.history.pushState) {
+      // 往历史记录里面添加一条新的当前页面的url
+      // history.pushState(null, null, document.URL);
+      // 给 popstate 绑定一个方法 监听页面刷新
+      window.addEventListener('popstate', this.backChange, false); //false阻止默认事件
+    }
   },
+
+  destroyed(){
+    window.removeEventListener('popstate', this.wulifanhui, false);//false阻止默认事件
+  },
+
+
   created () {
     setTimeout(() => {
       plus.navigator.setStatusBarStyle('light')

+ 4 - 3
src/view/user/account.vue

@@ -17,7 +17,7 @@
           <span class="per-info__tel">{{ user_info.name }}</span>
         </template>
       </van-cell> -->
-      
+
       <van-cell title="手机号" is-link to="user_mobile">
         <template slot="default">
           <span class="per-info__tel">{{ user_info.tel | mobile }}</span>
@@ -67,7 +67,7 @@ export default {
       auths: [],
       aweixin: null,
       wo_token:'',
-      isUploader:this.$getCache('isUploader'),
+      isUploader: this.$getCache('isUploader'),
     };
   },
   created() {
@@ -89,7 +89,7 @@ export default {
         message: '当您在我们的产品中使用拍照、拍摄、扫描二维码、图片上传等功能时,我们需要获取您设备的相机权限,以便您正常使用图片上传、图片下载、附件上传、头像设置等服务',
       }).then(() => {
         this.$setCache('isUploader',true)
-        this.isUploader=true
+        this.isUploader = true
       })
     },
     // 判断是否获取微信登录认证
@@ -294,6 +294,7 @@ export default {
     background-color: #fff;
     justify-content: center;
     touch-action: none;
+    color: #ff5f4e;
   }
 }
 </style>

+ 52 - 24
src/view/user/company_info.vue

@@ -1,20 +1,22 @@
 <template>
   <div>
     <van-nav-bar :title="title" left-text="返回" @click-left="$route_back" left-arrow></van-nav-bar>
-    <div class="body_com has_header">
-      <scroller>
-        <van-cell-group>
-          <van-cell title="公司LOGO" is-link class="company_info">
-            <template slot="default">
-              <img :src="site_info.logo_url?site_info.logo_url:'static/images/default_company_logo.png'" class="needsclick company_img" @click.stop="select_img" />
-            </template>
-          </van-cell>
-        </van-cell-group>
-        <van-cell-group class="company_name">
-          <van-cell title="公司名称" is-link :value="site_info.name" @click="showPopup" />
-        </van-cell-group>
-      </scroller>
-      <vue-img-cropper
+    <van-cell-group>
+      <van-cell title="公司LOGO" is-link class="company_info">
+        <template solt="default">
+          <vue-img-cropper v-if="isUploader" ref="cropper" :height="400" :width="400" :maxScale="6" :compressionRatio="0.5"  @cutImg="showCutImg" @showLoading="showLoading" @hideLoading="hideLoading">
+            <img :src="site_info.logo_url?site_info.logo_url : 'static/images/default_company_logo.png'" class="needsclick company_img" />
+          </vue-img-cropper>
+          <div v-else @click="openText()">
+            <img :src="site_info.logo_url?site_info.logo_url : 'static/images/default_company_logo.png'" class="needsclick company_img" />
+          </div>
+        </template>
+      </van-cell>
+    </van-cell-group>
+    <van-cell-group class="company_name">
+      <van-cell title="公司名称" is-link :value="site_info.name" @click="showPopup" />
+    </van-cell-group>
+      <!-- <vue-img-cropper
         ref="cropper"
         :height="400"
         :width="400"
@@ -24,7 +26,7 @@
         @showLoading="showLoading"
         @hideLoading="hideLoading"
         @showError="showError">
-      </vue-img-cropper>
+      </vue-img-cropper> -->
 
       <van-dialog v-model="show" title="修改公司名称" class="edit_com_popup" show-cancel-button @confirm="save_btn">
         <van-cell-group>
@@ -56,7 +58,8 @@ export default {
       user_info: this.$userInfo(),
       click_count: 0,
       edit_com_name: '',
-      company_info:{}
+      company_info:{},
+      isUploader: this.$getCache('isUploader'),
     }
   },
   // 组件
@@ -66,14 +69,39 @@ export default {
   },
   // 方法
   methods: {
-    select_img () {
-      let self = this
-      if (this.click_count == 0) {
-        self.$refs.cropper.getImg()
-        setTimeout(function () {
-          self.click_count = 0
-        }, 20)
-      }
+    // select_img () {
+    //   if (this.click_count == 0) {
+    //     // if(self.$getCache("isUploader")) {
+    //     //   self.$refs.cropper.getImg()
+    //     //   // setTimeout(() => {
+    //     //   //   self.click_count = 0
+    //     //   // }, 20)
+    //     // }else {
+
+    //     // }
+    //     this.$dialog.confirm({
+    //       title: '权限获取',
+    //       message: '当您在我们的产品中使用拍照、拍摄、扫描二维码、图片上传等功能时,我们需要获取您设备的相机权限,以便您正常使用图片上传、图片下载、附件上传、头像设置等服务',
+    //     }).then(() => {
+    //       this.$refs.cropper.getImg()
+
+    //       // setTimeout(() => {
+    //       //   this.click_count = 0
+    //       // }, 20)
+    //     })
+
+    //   }
+    // },
+
+    openText(){
+      // 功道云需要使用媒体、相册、文件等权限,以便您正常使用图片上传、图片分享、图片下载等服务。
+      this.$dialog.confirm({
+        title: '权限获取',
+        message: '当您在我们的产品中使用拍照、拍摄、扫描二维码、图片上传等功能时,我们需要获取您设备的相机权限,以便您正常使用图片上传、图片下载、附件上传、头像设置等服务',
+      }).then(() => {
+        this.$setCache('isUploader',true)
+        this.isUploader = true
+      })
     },
     showCutImg (d) {
       this.$toast.loading({

+ 20 - 10
src/view/user/department.vue

@@ -25,7 +25,9 @@
       <scroller ref="scroller_com"  :isInitRefresh="false" :on-refresh="refresh">
 
         <div style="padding: 0.2rem 0.32rem;background-color: #fff;" @click="parent_click">
-          <div style="background-color: #f7f8fa;border-radius:0.04rem;color:#c8c9cc;padding: 0.12rem 0.32rem;"><van-icon name="search" /> 请输入搜索姓名</div>
+          <div style="background-color: #f7f8fa;border-radius:0.04rem;color:#c8c9cc;padding: 0.12rem 0.32rem;">
+            <van-icon name="search" /> 请输入搜索姓名
+          </div>
         </div>
 <!--
         <van-search  placeholder="请输入搜索姓名" :disabled="true" @click="parent_click" /> -->
@@ -40,14 +42,18 @@
 
         <div>
           <van-cell-group :border="false" v-show="pid==0" >
-            <van-cell label-class="employee_count"
-            :title="company_info.name"
-            :border="false" clickable class="company_info"
-            @click="edit_site_info"
-            :is-link="getRole_noe"
-            :label="total +'人'">
+            <van-cell
+              label-class="employee_count"
+              :title="company_info.name"
+              :border="false"
+              clickable
+              class="company_info"
+              @click="edit_site_info"
+              :is-link="getRole_noe"
+              :label="total +'人'"
+            >
               <template slot="icon">
-                <img :src="company_info.logo_url?company_info.logo_url:'static/images/default_company_logo.png'" class="company_dept_img"/>
+                <img :src="company_info.logo_url ? company_info.logo_url : 'static/images/default_company_logo.png'" class="company_dept_img"/>
               </template>
             </van-cell>
           </van-cell-group>
@@ -60,7 +66,7 @@
             </van-cell>
           </van-cell-group>
           <div v-show="pid != 0">
-            <div class="fontColorC" style="padding: 0 0.32rem;font-size: 0.28rem;">管理员</div>
+            <div class="fontColorC" style="padding: 0.1rem 0.32rem;font-size: 0.28rem;">管理员</div>
             <div class="manager flex-box flex-v-ce">
                <div class="flex-box flex-v-ce flex-1 flex-d-wrap" style="padding-right: 0.2rem;" v-if="showDepart">
                   <van-tag closeable size="medium" type="primary" @close="closeManager(item)" v-for="(item,index) in dept_info.manager" :key="index" style="margin-right: 5px;margin-top: 5px;">{{item.name}}</van-tag>
@@ -68,7 +74,7 @@
                <div v-else style="color: #F56C6C;font-size: 14px" class="flex-1">管理员未设置</div>
                <van-button icon="plus" type="info" size="small" plain @click="show_dept_selector=true" />
             </div>
-            <div style="text-align: center;font-size: 12px;" class="fontColorC">只能选择直属部门的员工作为部门管理员</div>
+            <div style="text-align: center; padding: 0.2rem 0 0 0; font-size: 12px;" class="fontColorC">只能选择直属部门的员工作为部门管理员</div>
           </div>
           <van-cell-group>
             <van-cell  v-if="isApp && false" is-link title="邀请成员" @click="show_share" class="new_employee_cell employee_cell">
@@ -786,6 +792,8 @@ export default {
   }
   .pageIndexBtnText{font-size:0.24rem;}
 .dept_path a {
+  display: flex;
+  align-items: center;
   color: #238dfa;
   font-size: 0.28rem;
 }
@@ -800,6 +808,8 @@ export default {
   vertical-align: middle;
 }
 .dept_path {
+  display: flex;
+  align-items: center;
   position: relative;
   font-size: 0.32rem;
   line-height: 0.4rem;

+ 2 - 0
src/view/user/employee_info.vue

@@ -240,6 +240,8 @@ export default {
     padding-top: 0;
     font-size:0.32rem;
     color: #323233;
+    display: flex;
+    align-items: center;
     &.disabled{
       color: #959595;
     }

部分文件因文件數量過多而無法顯示