1
0

4 Коміти cda940b9ea ... eada7dca5a

Автор SHA1 Опис Дата
  manywhy eada7dca5a 修改申请记录中的filterStatus 11 місяців тому
  manywhy 73f3cc2e7c 更新dev分支 11 місяців тому
  manywhy 71e6644c92 更新dev分支 11 місяців тому
  manywhy 08f74fc659 提交feature分支 11 місяців тому

+ 1 - 0
src/attendance/view/AttendanceNew/ApplyRecord.vue

@@ -422,6 +422,7 @@ export default {
 }
 .leftkep {
   padding: 0.2rem 0.12rem 0.2rem 0.32rem;
+  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;
   }

+ 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 = []

+ 29 - 9
src/point/view/integral/deptRank.vue

@@ -1,13 +1,22 @@
 <template>
   <div class="mrd-container">
     <van-nav-bar title="部门对比" left-text="返回" @click-left="$route_back" left-arrow />
+
+    <!-- 条件筛选 -->
     <van-dropdown-menu v-if="showSearchBar">
-<!--  A/B分    -->
+      <!-- 时间选择 -->
       <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>
+      <!--  积分类型 A/B分    -->
       <van-dropdown-item>
         <van-icon name="list-switch" slot="title" size="1.5em" />
         <template slot="default">
@@ -27,6 +36,8 @@
         </template>
       </van-dropdown-item>
     </van-dropdown-menu>
+
+    <!-- 数据列表 -->
     <div class="mrd-content">
       <scroller
         ref="scroller"
@@ -82,7 +93,7 @@
 <script>
 import Vue from 'vue';
 import moment from "moment/moment";
-import { DropdownMenu, DropdownItem ,Calendar,Switch} from 'vant';
+import { DropdownMenu, DropdownItem, Calendar, Switch} from 'vant';
 import DeptSelectorDropdown from '@/components/DeptSelectorDropdown';
 import RuleCategorySelDropdown from '@/components/RuleCategorySelDropdown';
 import ReconnectingWebSocket from "reconnecting-websocket";
@@ -101,6 +112,7 @@ export default {
     startDate.setTime(startDate.getTime() - 3600 * 1000 * 24 * 7);
     startDate = moment(startDate).format('YYYY-MM-DD');
     let endDate = moment().format('YYYY-MM-DD');
+    // 获取积分类型
     let pts = this.$getTypes.map(type => {
       return {value:type.id,text:type.name,code:type.code}
     });
@@ -115,18 +127,18 @@ export default {
     maxDate.setDate(0);
 
     return{
-      pts:pts,
+      pts: pts,
       searchForm:{
         startDate:startDate,
         endDate:endDate,
         deptId:0,
         deptName:'全公司',
         deptIncludeSub:false,
-        ptId:ptB ? ptB.value : 0,
+        ptId: ptB ? ptB.value : 0,
         ptName: ptB ? ptB.text : '',
-        ruleId:0,
-        ruleIncludeSub:false,
-        itemId:0
+        ruleId: 0,
+        ruleIncludeSub: false,
+        itemId: 0
       },
       dataList:[],
       showCalendar:false,
@@ -356,4 +368,12 @@ export default {
   }
 
 }
+
+/deep/ .van-calendar__header-subtitle {
+  width: 100%;
+  font-size: 0.28rem;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
 </style>

+ 1 - 0
src/point/view/integral/integral_entry_n.vue

@@ -744,6 +744,7 @@ export default {
 
       this.rwsBusinessSubmit(members,items);
     },
+
     rwsClipResult(event){
       const clipboard = new Clipboard(event.target,{
         text: () => JSON.stringify(this.rwsBusinessData.result)

+ 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: ' ';

+ 14 - 5
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">
@@ -252,7 +254,6 @@ export default {
     return {
       // deptRank:false,
       userMonth:{task:{reward:{},deduction:{},exec:{}},ratio:{}},
-
       // rankingList: [], // 我的排名列表
       rankingTotal: 0, // 我的排名列表数
       situationChart: '', // 管理者奖扣
@@ -635,7 +636,7 @@ export default {
     opneWebSocket() {
       let data={type:"es_info",recorder_id:this.userInfo.id,month:this.month};
       this.$socketApiTow.sendData(data, (res) => {
-        if (res.code == 1&&res.type=='es_info') {
+        if (res.code == 1 && res.type=='es_info') {
             let data = res.result;
             var task = data.task;
             var ratio = task.ratio.enable== 0 ? '-' : `${task.ratio.reward_ratio}:1`
@@ -794,6 +795,7 @@ export default {
     },
     onWsMessage(event){
       let msg = event.data ?  JSON.parse(event.data) : null;
+      console.log(msg);
       if (!msg) return;
       let type = msg.type || 'none';
       switch (type){
@@ -877,7 +879,6 @@ export default {
       this.pk.pkTimeScope[0] = val[0]
       this.pk.pkTimeScope[1] = val[1]
       this.pk.pkTimeScopeStr = this.$moment(this.pk.pkTimeScope[0]).format("MM/DD") + "-" + this.$moment(this.pk.pkTimeScope[1]).format("MM/DD");
-      // if (this.pk.pkDocList.length > this.pk.currentDocIndex) this.getPkRankList(this.pk.pkDocList[this.pk.currentDocIndex].id)
       if (this.pk.pkDocList.length > this.pk.currentDocIndex) this.rwsPkRankList(this.pk.pkDocList[this.pk.currentDocIndex].id)
     }
   }
@@ -1187,4 +1188,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>

+ 2 - 2
src/utils/auth.js

@@ -220,7 +220,7 @@ export function getUserData() {
 // 获取积分类型
 export function getTypes(id) {
   if (id) {
-    var arr = (window.plus ? JSON.parse(plus.storage.getItem('SET_POINT_TYPES')) : JSON.parse(localStorage.getItem('SET_POINT_TYPES')))||store.getters.point_types
+    var arr = (window.plus ? JSON.parse(plus.storage.getItem('SET_POINT_TYPES')) : JSON.parse(localStorage.getItem('SET_POINT_TYPES'))) || store.getters.point_types
     var item = arr.filter(element => {
       return typeof (id) === 'string' ? element.code == id : element.id == id
     })
@@ -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;
     }

Деякі файли не було показано, через те що забагато файлів було змінено