guojy 1 рік тому
батько
коміт
d25474b7bd

+ 1 - 1
src/components/EmployeeSelector.vue

@@ -80,7 +80,7 @@
         <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line"><span style="opacity: 0;">空</span></el-col>
         <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
           <div class="option-box">
-            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-if="multi && can_select_employee">已选择{{ employee_selected_list.length }}个员工</span>
+            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-if="multi && can_select_employee">已选择{{ employee_selected_list.length }}</span>
             <el-button type="type" @click="clear_data">清空</el-button>
           </div>
           <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" style="height: 400px;">

+ 1 - 1
src/main.js

@@ -21,7 +21,7 @@ import noData from '@/components/noData'
 Vue.component('NoData', noData)
 
 import VConsole from 'vconsole'
-// new VConsole()
+new VConsole()
 
 // 头像
 import userImage from '@/components/user_image'

+ 0 - 1
src/router/index.js

@@ -465,7 +465,6 @@ export const asyncRouterMap = [
       {
         path: '/rule_manage',
         name: 'integral_rule',
-
         component: () => import('@/views/integral/rule/rule_category'),
         meta: { title: '积分规则', icon: 'rule_manage_icon', noCache: true }
       },

+ 0 - 6
src/store/modules/user.js

@@ -95,12 +95,6 @@ const user = {
     // 人员列表
     get_employee_map({ commit }) {
       return new Promise((resolve, reject) => {
-        // let employee_map = employee_map = JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP'))
-        // if (employee_map) {
-        //   commit('SET_EMPLOYEE_MAP', employee_map)
-        //   resolve(employee_map)
-        // } else {
-
           get_employee_map().then(response => {
             if (response.data.code == 1) {
               const data = {}

+ 2 - 2
src/utils/downloadFile.js

@@ -9,8 +9,8 @@ import VueRouter from 'vue-router'
 var deriveJobId='';
 var circulation=0;
 var loadingInstance
-export default function downloadFile(url, params,routerPath){
-    MessageBox.confirm('确认导出排名?', '导出', {
+export default function downloadFile(url, params,routerPath,str){
+    MessageBox.confirm(str? str:'确认导出排名?', '导出', {
       confirmButtonText: '确定',
       cancelButtonText: '取消',
       type: 'warning'

+ 0 - 17
src/utils/request.js

@@ -51,7 +51,6 @@ service.interceptors.response.use(
         setTimeout(() => {
           bool = true
         }, 5000)
-      } else {
       }
       return Promise.reject('error')
     } else if (res.code === 2001) {
@@ -80,24 +79,8 @@ service.interceptors.response.use(
           }
         })
 
-        // console.log(store.state)
-
-        // store.state.user.pastDue = true
-        // localStorage.clear()
-        // sessionStorage.clear()
-        // removeAllToken()
-        // Router.push({
-        //   path: '/login'
-        // })
         return Promise.reject('error')
     } else {
-      // console.log('setToken')
-      // console.log(res.refresh_token)
-      // if(res.refresh_token && res.code == 1){
-      //   console.log('公司Token'+moment().format('YYYY-MM-DD  HH:mm:ss'))
-      //   console.log(res.refresh_token)
-      //   setToken(res.refresh_token);
-      // }
       return response
     }
   },

+ 1 - 11
src/views/common/EmployeeSelector.vue

@@ -99,7 +99,7 @@
         <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line"><span style="opacity: 0;">空</span></el-col>
         <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
           <div class="option-box">
-            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-if="multi && can_select_employee">已选择{{ employee_selected_list.length }}个员工</span>
+            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-if="multi && can_select_employee">已选择{{ employee_selected_list.length }}</span>
             <el-button type="type" @click="clear_data">清空</el-button>
           </div>
           <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" style="height: 400px;">
@@ -298,16 +298,6 @@ export default {
         }, 200);
       }
     },
-    // dept_id(val) {
-    //   this.dept_select_id = val[val.length - 1];
-    //   this.$nextTick(() => {
-    //     if (this.can_select_employee) {
-    //       this.$refs.dept.dropDownVisible = false;
-    //     }
-    //     this.get_user_list();
-    //     this.checked = false;
-    //   });
-    // },
     keyword(val) {
       this.list = this.searchBox.filter(item => item.name.includes(this.keyword));
       if (!val) {

+ 1 - 1
src/views/common/EmployeeSelector1 copy.vue

@@ -74,7 +74,7 @@
         <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line"><span style="opacity: 0;">空</span></el-col>
         <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
           <div class="option-box">
-            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-show="multi">已选择{{employee_selected_list.length}}个员工</span>
+            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-show="multi">已选择{{employee_selected_list.length}}</span>
             <el-button type="type" @click="clear_data">清空</el-button>
           </div>
           <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" style="height: 400px;">

+ 1 - 1
src/views/common/EmployeeSelector1.vue

@@ -51,7 +51,7 @@
         <el-col :xs="2" :sm="2" :md="2" :lg="2" :xl="2" class="col-line"><span style="opacity: 0;">空</span></el-col>
         <el-col :xs="11" :sm="11" :md="11" :lg="11" :xl="11" class="scroller-box">
           <div class="option-box">
-            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-show="multi">已选择{{ employee_selected_list.length }}个员工</span>
+            <span style="line-height: 40px; padding-left: 10px;" class="fl" v-show="multi">已选择{{ employee_selected_list.length }}</span>
             <el-button type="type" @click="clear_data">清空</el-button>
           </div>
           <el-scrollbar wrap-class="column-wrapper scrollable-items-container" :native="false" style="height: 400px;">

+ 257 - 393
src/views/common/applicationIntegrationPopup.vue

@@ -1,50 +1,19 @@
 <template>
   <div>
-    <!-- 奖扣ab分弹窗 -->
-    <el-dialog
-      :title="title"
-      :visible.sync="visible"
-      :close-on-click-modal="false"
-      :before-close="closePopup"
-      width="600px">
+    <!-- 积分申请 -->
+    <el-dialog :title="title" :visible.sync="visible" :close-on-click-modal="false" :before-close="closePopup" width="600px">
       <div>
-        <el-form :model="dialogData" ref="dialogData" label-width="80px" v-loading="loading">          
+        <el-form :model="dialogData" ref="dialogData" label-width="80px" v-loading="loading">
           <div v-for="(item,index) in dialogData.items" :key="index" @click="itemIndex = index">
-
             <div style="overflow: hidden;">
               <span style="line-height: 36px;">申请明细({{index+1}})</span>
               <el-button type="text" class="fr" v-show="index > 0 || dialogData.items.length > 1" @click="delItem(index)">删除</el-button>
             </div>
-
-            <el-form-item label="录入对象" :prop="'items.'+ index +'.employeeName'" :rules="[{ required: true, message: '请选择录入对象', trigger: 'change' }]">
-              <el-row>
-                <el-col :span="18">
-                  <el-input v-show="item.employeeNames.length==0" auto-complete="off" v-model="item.employeeName" placeholder="请选择录入对象"></el-input>
-                  <div @click="item.show_employee_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
-                  <div v-if="item.employeeNames.length>0"  @click="item.show_employee_selector = true" class="zindexName">
-                    <span v-for="(arr,att) in item.employeeNames" :key="att">
-                      <WWOpenData type="userName" :openid="arr.name"></WWOpenData><span v-if="(item.employeeNames.length-att)>1">,</span>
-                    </span>
-                  </div>
-                </el-col>
-              </el-row>
-              <!-- <EmployeeSelector
-                :is_filtration_creator="true"
-                :employee_not_select="item.employee_not_select"
-                :can_select_employee="true"
-                :can_select_dept="false"
-                :multi="false"
-                :selected="item.employee_selected"
-                :visible.sync="item.show_employee_selector"
-                @confirm="employee_confirm"/> -->
-              <EmployeeSelector
-                :isChecKedAll="false"
-                :employee_not_select="item.employee_not_select"
-                :multi="false"
-                :selected="item.employee_selected"
-                :visible.sync="item.show_employee_selector"
-                @confirm="employee_confirm"
-              />
+            <el-form-item label="录入对象" :prop="'items.'+ index +'.employeeInfo.name'" :rules="[{ required: true, message: '请选择录入对象', trigger: 'change' }]">
+              <div class="zindexName" @click="selectEmployee(index)">
+                <WWOpenData type="userName" v-if="item.employeeInfo.id" :openid="item.employeeInfo.name"></WWOpenData></span>
+                <span style="color: #DCDFE6;" v-else>请选择录入对象</span>
+              </div>
             </el-form-item>
 
             <el-form-item label="指定规则">
@@ -62,6 +31,7 @@
               :popper-class="'itemClass'"
               :options="rule_item_list"
               @change="ruleItemChange"
+              @visible-change="visibleChange($event,index)"
               :show-all-levels="false"
               :props="{ children: 'child', label: 'name', value: 'id'}"
               ></el-cascader>
@@ -71,7 +41,7 @@
               <div v-show="item.rule_item_details.range_type == 2">{{get_point_name(item.rule_item_details.pt_id)}}  {{item.rule_item_details.min_point}} ~ {{item.rule_item_details.max_point}}</div>
               <div>{{item.rule_item_details.name}}</div>
             </el-form-item>
-            
+
             <el-form-item label="发生时间" :prop="'items.'+ index +'.event_time'" :rules="[{ required: true, message: '请选择时间', trigger: 'blur' }]">
               <el-row>
                 <el-col :span="18">
@@ -79,11 +49,11 @@
                 </el-col>
               </el-row>
             </el-form-item>
-            
-            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 100, message: '长度在 3 到 100 个字符', trigger: 'blur' }]">
+
+            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 300, message: '长度在 3 到 300 个字符', trigger: 'blur' }]">
               <el-row>
                 <el-col :span="18">
-                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限100字)" style="width: 100%;" v-model="item.remark"></el-input>
+                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限300字)" style="width: 100%;" v-model="item.remark"></el-input>
                 </el-col>
               </el-row>
             </el-form-item>
@@ -105,42 +75,11 @@
                 <el-button size="small" type="primary" >点击上传</el-button>(最多选择3张)
               </uploadOss>
             </el-form-item>
-            
-            <el-form-item label="审批人" :prop="'items.'+ index +'.approvalName'" :rules="[{ required: true, message: '请选择审批人', trigger: 'blur' }]">
-              
-              <el-row>
-                <el-col :span="18">
-                  <el-input v-if="item.approvalName==''" auto-complete="off" v-model="item.approvalName" placeholder="请选择审批人"></el-input>
-                  <div v-if="item.approval_selected.length == 0" @click="approval_selected_null" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
-                  
-                  <div v-else-if="item.approvalName!=''" @click="item.show_approval_selector = true" class="zindexName">
-                    <WWOpenData type="userName" :openid="item.approvalName"></WWOpenData>
-                  </div>
-                  <div v-else-if="item.approvalName==''" @click="item.show_approval_selector = true" style=" position: absolute; top: 0; right: 0; left: 0; bottom: 0; z-index: 9;"></div>
-                </el-col>
-              </el-row>
-              <!-- <EmployeeSelector
-                :employee_not_select="item.approval_not_select"
-                :can_select_employee="true"
-                :can_select_dept="false"
-                :multi="false"
-                :employee_list="item.approval_employee_list"
-                :selected="item.approval_selected"
-                :visible.sync="item.show_approval_selector"
-                @confirm="approval_confirm"/> -->
-              <EmployeeSelector
-                :employee_not_select="item.approval_not_select"
-                :multi="false"
-                :isChecKedAll="false"
-                :is_filtration_creator="false"
-
-                :user_employee_list="true"
-                :employee_list="item.approval_employee_list"
-
-                :selected="item.approval_selected"
-                :visible.sync="item.show_approval_selector"
-                @confirm="approval_confirm"
-              />
+            <el-form-item label="审批人" :prop="'items.'+ index +'.reviewerInfo.name'" :rules="[{ required: true, message: '请选择审批人', trigger: 'blur' }]">
+              <div class="zindexName" @click="selectReviewer(index)">
+                <WWOpenData type="userName" v-if="item.reviewerInfo.id" :openid="item.reviewerInfo.name"></WWOpenData></span>
+                <span style="color: #DCDFE6;" v-else>请选择审批人</span>
+              </div>
             </el-form-item>
 
           </div>
@@ -158,27 +97,49 @@
       </div>
     </el-dialog>
 
-        <el-dialog
-          :title="'提交结果'"
-          :visible.sync="error_list_show"
-          :append-to-body='true'
-          @close='error_list_SX'
-          width="700px">
-          <el-table :data="error_list">
-            <el-table-column prop="target" label="员工">
-              <template slot-scope="scope">
-                <WWOpenData type="userName" :openid="scope.row.target"></WWOpenData>
-              </template>
-            </el-table-column>
-            <el-table-column prop="point" label="积分"></el-table-column>
-            <el-table-column prop="status" label="处理状态">
-              <template slot-scope="scope">
-                <span :style="'color:'+(scope.row.status==0?'#f70000':'#47bf47')">{{scope.row.status==0?'申请失败':'申请成功'}}</span>
-              </template>
-            </el-table-column>
-            <el-table-column prop="msg" label="备注信息"></el-table-column>
-          </el-table>
-        </el-dialog>
+    <!-- 录入对象 -->
+    <EmployeeSelector
+      :isChecKedAll="false"
+      :multi="false"
+      isRequired
+      :selected="employee_selected"
+      :visible.sync="isShowEmployee"
+      @confirm="employee_confirm"
+    />
+
+    <!-- 审批人 -->
+    <EmployeeSelector
+      :multi="false"
+      :isChecKedAll="false"
+      :is_filtration_creator="false"
+      :user_employee_list="true"
+      isRequired
+      :employee_list="approval_employee_list"
+      :selected="approval_selected"
+      :visible.sync="isShowApproval"
+      @confirm="approval_confirm"
+    />
+
+    <el-dialog
+      :title="'提交结果'"
+      :visible.sync="error_list_show"
+      :append-to-body='true'
+      width="700px">
+      <el-table :data="error_list">
+        <el-table-column prop="target" label="员工">
+          <template slot-scope="scope">
+            <WWOpenData type="userName" :openid="scope.row.target"></WWOpenData>
+          </template>
+        </el-table-column>
+        <el-table-column prop="point" label="积分"></el-table-column>
+        <el-table-column prop="status" label="处理状态">
+          <template slot-scope="scope">
+            <span :style="'color:'+(scope.row.status==0?'#f70000':'#47bf47')">{{scope.row.status==0?'申请失败':'申请成功'}}</span>
+          </template>
+        </el-table-column>
+        <el-table-column prop="msg" label="备注信息"></el-table-column>
+      </el-table>
+    </el-dialog>
   </div>
 </template>
 
@@ -187,7 +148,6 @@
   import EmployeeSelector from '@/views/common/EmployeeSelector'
   import uploadOss from "@/views/upload_oss/upload"
   import { getToken } from '@/utils/auth'
-  import { get_employee_map } from '@/api/login'
 
   export default {
     name: 'applicationIntegration',
@@ -221,31 +181,16 @@
         error_list_show:false,//错误信息弹窗
         Xtoken: { 'X-Token': getToken() },
         loading: false,
-        dialogData:{ 
+        dialogData:{
           items: [{
             rule_switch: true,
             rule_id: '',
             item_id: '',
             remark: '',
             event_time: moment().format('YYYY-MM-DD'),
-
-            // 审批人信息
-            reviewer_id: '',
-            approvalName: '',
-            approval_not_select: [],
-            approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
-            approval_employee_list: [],//当前选中人的 上级
-            approval_selected: {dept: [],employee:[]},
-            show_approval_selector: false,
-
-            // 录入对象
-            employee_id: '',
-            employeeName: '',
-            employeeNames:[],
-            employee_not_select: [],
-            employee_selected: {dept: [],employee:[]},
-            show_employee_selector: false,
-
+            approval_employee_list:[],
+            employeeInfo:{},// 录入对象
+            reviewerInfo:{},// 审批人信息
             // 附件
             fileList: [],
             files: [],
@@ -260,139 +205,205 @@
         // 规则细则
         rule_item_list: [],
         flatteningIntegralRules: null,
-        user_info: null,
-        employee_map: JSON.parse(localStorage.getItem('SET_EMPLOYEE_MAP')),
+        user_info: this.$store.getters.user_info,
         point_types: JSON.parse(localStorage.getItem('SET_POINT_TYPES')),
         btn_loading: false,
-
+        itemIndex:0,
         user_list: [],
+
+        // 审批人
+        approval_employee_list:[],
+        approval_selected:{dept: [],employee:[]},
+        isShowApproval:false,
+
+        // 录入对象
+        employee_selected:{dept: [],employee:[]},
+        isShowEmployee:false,
       }
     },
     components: {EmployeeSelector,uploadOss},
-    watch:{},
-    mounted() {
-      get_employee_map().then(response => {
-        if (response.data.code == 1) {
-          const data = {}
-          for (const i in response.data.data.list) {
-            data[response.data.data.list[i].id] = response.data.data.list[i]
-          }
-          if (window.plus) {
-            plus.storage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
-          } else {
-            localStorage.setItem('SET_EMPLOYEE_MAP', JSON.stringify(data))
-          }
-          this.employee_map = data
+    watch:{
+      visible(val){
+        if(val){
+          // 初始化录入对象
+          this.dialogData.items[0].employeeInfo = this.user_info;
+          this.getUserInfo(this.user_info.id,(res)=>{
+             this.initializesReviewer(res.employee_detail.superior_list,this.itemIndex) //设置上级列表
+             this.dialogData.items[0].reviewerInfo={};
+             let superior_id= res.employee_detail.superior_id //选中对象的直属上级id
+             res.employee_detail.superior_list.forEach(e=>{
+               if(e.id==superior_id){
+                 this.dialogData.items[0].reviewerInfo=e;
+               }
+             })
+          })
         }
-      })
-
+      },
+    },
+    mounted() {
       this.getRuleItemData()
-      this.user_info = this.$store.getters.user_info
-      this.point_types = JSON.parse(localStorage.getItem('SET_POINT_TYPES'))
-      // 初始化录入对象
-      this.dialogData.items[0].employee_selected.employee = [{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}]
-      this.dialogData.items[0].employee_id = this.user_info.id
-      this.dialogData.items[0].employeeName = this.user_info.name
-      this.dialogData.items[0].employeeNames = this.dialogData.items[0].employee_selected.employee
-
-      this.initializesReviewer(this.user_info.employee_detail.superior_list,0,true)
     },
     methods: {
-      // 附件上传
-      beforeUpload(file){
-        const isJPG = /^image\/(jpeg|png|jpg)$/.test(file.type)
-        const isLt2M = file.size / 1024 / 1024 < 1
-        if (!isJPG) {
-          this.$message.error('上传头像图片只能是 JPG 格式!')
-        }
-        if (!isLt2M) {
-          this.$message.error('上传头像图片大小不能超过 2MB!')
+
+      // 选择录入对象
+      selectEmployee(index){
+        const item = this.dialogData.items[index];
+        if(item.employeeInfo.id){
+          this.employee_selected.employee=[item.employeeInfo]
         }
-        return isJPG && isLt2M   
+        this.isShowEmployee=true;
       },
-      onFilePreView(file) {
-        window.open(file.response.url,'_blank')
+      // 选择审批人
+      selectReviewer(index){
+        const item = this.dialogData.items[index];
+        if(!item.employeeInfo.id){
+          this.$message.error("请先选择录入对象")
+          return false
+        }
+        this.approval_employee_list=item.approval_employee_list;
+        if(item.reviewerInfo.id){
+          this.approval_selected.employee=[item.reviewerInfo]
+        }
+        this.isShowApproval=true;
       },
-      onFileRemove(file, fileList) {
-        this.dialogData.items[this.itemIndex].fileList = fileList
-        this.dialogData.items[this.itemIndex].files = []
-        fileList.forEach((element,index) => {
-          this.dialogData.items[this.itemIndex].files.push(element.url)
+
+      // 提交数据
+      save(){
+        let reviewer_infoid = false
+        let data = {items: []}
+        this.dialogData.items.forEach(element => {
+          let obj={
+            rule_id: element.rule_id || 0,
+            employee_id: element.employeeInfo.id || 0 ,
+            item_id: element.item_id || 0,
+            remark: element.remark,
+            event_time: element.event_time,
+            pt_id: element.pt_id,
+            reviewer_id: element.reviewerInfo.id || 0,
+            files: element.files
+          }
+          data.items.push(obj)
+          if(element.reviewerInfo.id == this.user_info.id) reviewer_infoid = true
         });
+        if(reviewer_infoid){
+          this.btn_loading = false
+          this.$message.warning('不能提交给自己审批,请直接对员工进行【积分奖扣】或更换审批人')
+          return
+        }
+        this.$http('post','/api/integral/review/apply',data,'v2').then(res => {
+            this.$refs['dialogData'].resetFields();
+            this.$message.success(res.data.msg)
+            this.error_list = res.data.data.list
+            this.error_list_show = true
+            this.dialogData.items[0].employee_id = this.user_info.id
+            this.closePopup()
+        }).finally(()=>{
+          this.btn_loading = false
+        })
       },
-      handleFilesSuccess(response, file, fileList) {
-        this.dialogData.items[this.itemIndex].fileList = fileList
-        this.dialogData.items[this.itemIndex].files = []
-        fileList.forEach((element,index) => {
-          this.dialogData.items[this.itemIndex].files.push(element.url)
+      // 选择审核人
+      approval_confirm(data){
+        const item = this.dialogData.items[this.itemIndex]
+        if(data.employee.length>0){
+          item.reviewerInfo = data.employee[0]
+        }else{
+          item.reviewerInfo={};
+        }
+      },
+      // 选择对象
+      employee_confirm(data){
+        const item = this.dialogData.items[this.itemIndex]; //对应申请
+        let employee=data.employee[0];
+        if(employee){
+          item.employeeInfo=employee;
+          this.getUserInfo(employee.id,(res)=>{
+             this.initializesReviewer(res.employee_detail.superior_list,this.itemIndex) //设置上级列表
+             item.reviewerInfo={};
+             let superior_id= res.employee_detail.superior_id //选中对象的直属上级id
+             res.employee_detail.superior_list.forEach(e=>{
+               if(e.id==superior_id){
+                 item.reviewerInfo=e;
+               }
+             })
+          })
+        }
+      },
+      //获取缓存起来的审批人
+      getUserInfo(id,func) {
+      		this.$http('get', '/api/employee/info', {id: id }).then(res =>{
+            func(res.data.data)
+          })
+      },
+      // 获取积分名称
+      get_point_name(id){
+        let name = ''
+        this.point_types.forEach(element => {
+          if (element.id == id) {
+            name = element.name
+          }
         });
+        return name
       },
-
-      // 审核人为空
-      approval_selected_null(){
-        this.$message.error('您没有审批人,请联系管理员');
+      // 初始化审核人列表
+      initializesReviewer(list,index){
+        const superior = list || this.user_info.employee_detail.superior_list
+        const num = index || 0
+        const item = this.dialogData.items[num]
+        item.approval_employee_list = [...superior]
+      },
+      // 当switch 改变了
+      switchChange(index,value){
+        this.itemIndex = index
+        const item = this.dialogData.items[this.itemIndex]
+        if (!value) {
+          item.rule_id = ""
+          item.item_id = ""
+          item.rule_item_list_value = ""
+          item.rule_item_details = {range_type: ''}
+        }else{
+          item.rule_id = ""
+          item.rule_list_value = ""
+        }
       },
       // 获取规则信息
       getRuleData(){
-        let self = this
         let data = {
           cycle_type: '1'
         }
         this.integralType === 1?data.pt_id = '1':this.integralType === 2?data.pt_id = '2':data.pt_id = '3'
         this.$http('get','/api/integral/rule/trees',data).then(res => {
-					if (res.data.code == 1) {
-            const resultData = res.data.data
-            self.rule_list = resultData.rule_tree
-          }
-          self.rule_list = self.getTreeData(self.rule_list)
-				}).catch(e => {self.$message.error(e.data.msg)})
+          const resultData = res.data.data
+          this.rule_list = this.getTreeData(resultData.rule_tree)
+      	})
       },
       // 获取规则细则
       getRuleItemData(){
-        let self = this
         let data = {cycle_type: '1'}
-        self.loading = true
+        this.loading = true
         this.$http('get','/api/integral/rule/trees',data,'v2').then(res => {
-					if (res.data.code == 1) {
             const resultData = res.data.data
-            self.rule_item_list = resultData.tree
-            // self.flatteningIntegralRules = self.getItemDetail(self.rule_item_list)//
-          }
-        }).catch(e => {self.$message.error(e.data.msg)})
-        .finally(()=>{
-          self.loading = false
+            this.rule_item_list = resultData.tree
+        }).finally(()=>{
+          this.loading = false
         })
       },
+      visibleChange(val,index){
+        if(val){
+          this.itemIndex=index
+        }
+      },
       // 规则细则变化关闭down
       ruleItemChange(value){
         let item = this.dialogData.items[this.itemIndex]
         let ruleItemDetail = null
         ruleItemDetail = this.$refs["ruleItem"][this.itemIndex].getCheckedNodes()[0].data
-        console.log(ruleItemDetail)
         if(ruleItemDetail){
           item.rule_item_details = ruleItemDetail
           item.remark = ruleItemDetail.name
           item.rule_id = ruleItemDetail.pid
           item.item_id = value[value.length - 1]
         }
-        this.$refs.ruleItem.dropDownVisible = false; 
-        // let item = this.dialogData.items[this.itemIndex]
-        // let ruleItemDetail = {}
-        // // this.flatteningIntegralRules.forEach(element => {
-        // //   if (element.id == value[value.length - 1]) {
-        // //     ruleItemDetail = {...element}
-        // //   }
-        // // })
-        
-        // console.log(this.$refs["ruleItem"][this.itemIndex].getCheckedNodes()[0].data)
-        // ruleItemDetail = this.$refs["ruleItem"][this.itemIndex].getCheckedNodes()[0].data
-        // if(ruleItemDetail){
-        //   item.rule_item_details = ruleItemDetail
-        //   item.remark = ruleItemDetail.name
-        //   item.rule_id = ruleItemDetail.pid
-        //   item.item_id = value[value.length - 1]
-        // }
-        // this.$refs.ruleItem.dropDownVisible = false; 
+        this.$refs.ruleItem.dropDownVisible = false;
       },
       // 规则分类变化关闭dewn
       ruleChange(value){
@@ -412,19 +423,36 @@
         }
         return data;
       },
-
-      getItemDetail(arr) {//此递归暂不用,规则多的情况下会出问题
-        let result = []
-        for (const item of arr) {
-          var res = JSON.parse(JSON.stringify(item)) // 先克隆一份数据作为第一层级的填充
-          delete res['child']
-          result.push(res)
-          if (item.child instanceof Array && item.child.length > 0) { // 如果当前child为数组并且长度大于0,才可进入getItemDetail()方法
-            result = result.concat(this.getItemDetail(item.child))
-          }
+      // 附件上传
+      beforeUpload(file){
+        const isJPG = /^image\/(jpeg|png|jpg)$/.test(file.type)
+        const isLt2M = file.size / 1024 / 1024 < 1
+        if (!isJPG) {
+          this.$message.error('上传头像图片只能是 JPG 格式!')
+        }
+        if (!isLt2M) {
+          this.$message.error('上传头像图片大小不能超过 2MB!')
         }
-        return result
+        return isJPG && isLt2M
       },
+      onFilePreView(file) {
+        window.open(file.response.url,'_blank')
+      },
+      onFileRemove(file, fileList) {
+        this.dialogData.items[this.itemIndex].fileList = fileList
+        this.dialogData.items[this.itemIndex].files = []
+        fileList.forEach((element,index) => {
+          this.dialogData.items[this.itemIndex].files.push(element.url)
+        });
+      },
+      handleFilesSuccess(response, file, fileList) {
+        this.dialogData.items[this.itemIndex].fileList = fileList
+        this.dialogData.items[this.itemIndex].files = []
+        fileList.forEach((element,index) => {
+          this.dialogData.items[this.itemIndex].files.push(element.url)
+        });
+      },
+
       // 加一条
       addItem(){
         this.dialogData.items.push({
@@ -433,24 +461,9 @@
           item_id: '',
           remark: '',
           event_time: moment().format('YYYY-MM-DD'),
-
-          // 审批人信息
-          reviewer_id: '',
-          approvalName: '',
-          approval_not_select: [],
-          approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
-          approval_employee_list: this.user_info.employee_detail.superior_list,
-          approval_selected: {dept: [],employee:[]},
-          show_approval_selector: false,
-
-          // 录入对象
-          employee_id: this.user_info.id,
-          employeeName: this.user_info.name,
-          employeeNames: [{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}],
-          employee_not_select: [],
-          employee_selected: {dept: [],employee:[{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}]},
-          show_employee_selector: false,
-
+          employeeInfo:{},// 录入对象
+          reviewerInfo:{},// 审批人信息
+          approval_employee_list:[],
           // 附件
           fileList: [],
           files: [],
@@ -473,11 +486,10 @@
             message: '删除成功!'
           });
         })
-        
+
       },
       closeDialog(formName){
         this.$refs[formName].resetFields();
-        // this.$emit('update:visible', false)
         this.closePopup()
       },
       delItem(index){
@@ -501,138 +513,6 @@
           }
         });
       },
-      // 提交数据
-      save(){
-        let reviewer_infoid = false
-        let self = this
-        let data = {items: []}
-        self.dialogData.items.forEach(element => {
-          data.items.push({rule_id: element.rule_id || 0, employee_id: element.employee_id || 0 ,item_id: element.item_id || 0, remark: element.remark, event_time: element.event_time, pt_id: element.pt_id, reviewer_id: element.reviewer_id || 0, files: element.files})
-          if(element.reviewer_id == this.user_info.id) reviewer_infoid = true
-        });
-        if(reviewer_infoid){ 
-          self.btn_loading = false
-          this.$message.warning('不能提交给自己审批,请直接对员工进行【积分奖扣】或更换审批人')
-          return
-        }
-        this.$http('post','/api/integral/review/apply',data,'v2').then(res => {
-          if(res.data.code == 1){
-            self.$refs['dialogData'].resetFields();
-            // self.$emit('update:visible', false)
-            self.$message.success(res.data.msg)
-            this.error_list = res.data.data.list
-            this.error_list_show = true
-            this.dialogData.items[0].employee_id = this.user_info.id
-            this.closePopup()
-          }else{
-            self.$message.error(res.data.msg)
-          }
-          self.btn_loading = false
-        }).catch(e => {self.$message.close()})
-        .finally(()=>{
-        })
-      },
-      //关闭错误信息时的回调
-      error_list_SX(){
-        // this.loadBaseData();
-        // this.loadEmployeeList()
-      },
-      // 当switch 改变了
-      switchChange(index,value){
-        this.itemIndex = index
-        const item = this.dialogData.items[this.itemIndex]
-        if (!value) {
-          item.rule_id = ""
-          item.item_id = ""
-          item.rule_item_list_value = ""
-          item.rule_item_details = {range_type: ''}
-        }else{
-          item.rule_id = ""
-          item.rule_list_value = ""
-        }
-      },
-      // 初始化审核人
-      initializesReviewer(list,index,bool){
-        const superior = list || this.user_info.employee_detail.superior_list
-        const num = index || 0
-        const item = this.dialogData.items[num]
-        item.approval_employee_list = [...superior]
-        // if (superior.length !== 0) {
-        //   if(bool){
-        //     item.approval_employee_id = this.user_info.employee_detail.superior_id//直属上级(这里是第一个,默认为当前登录人)
-        //   }
-        //   if(item.approval_employee_id != 0){//判断有无直属上级
-        //     for(let a in item.approval_employee_list){
-        //       if(item.approval_employee_id == item.approval_employee_list[a].id){
-        //         item.approval_employee_list[a].direct_Supervisor = true//一个字段,是直属上级的字段,为true
-        //       }
-        //     }
-        //     for(let i in superior){
-        //         if(item.approval_employee_id == superior[i].id){
-        //           item.approval_selected.employee = [{id: superior[i].id ,img_url: superior[i].img_url,name: superior[i].name}]
-        //           item.reviewer_id = superior[i].id
-        //           item.approvalName = superior[i].name//审批人
-        //         }
-        //     }
-        //   }else{
-        //     // 拿取列表最后一个的数据,没有筛选
-        //     item.approval_selected.employee = [{id: superior[superior.length - 1].id ,img_url: superior[superior.length - 1].img_url,name: superior[superior.length - 1].name}]
-        //     item.reviewer_id = superior[superior.length - 1].id//审批人id
-        //     item.approvalName = superior[superior.length - 1].name//审批人name
-        //   }
-          
-        // }
-      },
-      // 选择审核人
-      approval_confirm(data){
-        const item = this.dialogData.items[this.itemIndex]
-        item.approvalName = ''
-        item.approval_selected.employee = []
-        item.reviewer_id = ''
-        if (data.employee !== null && data.employee.length != 0) {
-          item.approvalName = data.employee[0].name
-          item.approval_selected.employee = [{name: data.employee[0].name,id:data.employee[0].id,img_url: data.employee[0].img_url}]
-          item.reviewer_id = data.employee[0].id
-        }
-      },
-      // 选择对象
-      employee_confirm(data){
-        const item = this.dialogData.items[this.itemIndex]
-        if (data.employee !== null && data.employee.length != 0) {
-          for (const key in this.employee_map) {
-            if (this.employee_map.hasOwnProperty(key)) {
-              const element = this.employee_map[key];//循环人员列表
-              if(element.id == data.employee[0].id){//通过选中的id拿到当前人员信息
-                item.approval_employee_id = element.superior_id//选中对象的直属上级id
-                // item.approval_employee_list = element.superior_list//选中对象的上级列表
-                this.initializesReviewer(element.superior_list,this.itemIndex)
-              }
-            }
-          }
-        }
-        item.employeeName = ''
-        item.employeeNames = []
-        item.employee_selected.employee = []
-        item.employee_id = ''
-        if (data.employee !== null && data.employee.length != 0) {
-          item.employeeNames = data.employee
-          item.employeeName = data.employee[0].name
-          item.employee_selected.employee = [{name: data.employee[0].name,id:data.employee[0].id,img_url: data.employee[0].img_url}]
-          item.employee_id = data.employee[0].id
-        }
-        
-      },
-      // 获取积分名称
-      get_point_name(id){
-        let name = ''
-        this.point_types.forEach(element => {
-          if (element.id == id) {
-            name = element.name
-          }
-        });
-        return name
-      },
-
       // 关闭弹窗
       closePopup(){
         //关闭重置窗口状态
@@ -642,24 +522,9 @@
             item_id: '',
             remark: '',
             event_time: moment().format('YYYY-MM-DD'),
-
-            // 审批人信息
-            reviewer_id: '',
-            approvalName: '',
-            approval_not_select: [],
-            approval_employee_id:0,//当前选中人的直属上级。0表示没有直属上级
-            approval_employee_list: [],//当前选中人的 上级
-            approval_selected: {dept: [],employee:[]},
-            show_approval_selector: false,
-
-            // 录入对象
-            employee_id: this.user_info.id,
-            employeeName: this.user_info.name,
-            employeeNames: [{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}],
-            employee_not_select: [],
-            employee_selected: {dept: [],employee:[{id: this.user_info.id ,img_url: this.user_info.img_url,name: this.user_info.name}]},
-            show_employee_selector: false,
-
+            employeeInfo:{},// 录入对象
+            reviewerInfo:{},// 审批人信息
+            approval_employee_list:[],
             // 附件
             fileList: [],
             files: [],
@@ -697,7 +562,6 @@
      border-radius:3px;
      padding-left:15px;
      overflow: hidden;
+     cursor: pointer;
   }
-  // ruleClass
-  // itemClass
-</style>
+</style>

+ 2 - 2
src/views/common/bonusPointsPopup.vue

@@ -94,10 +94,10 @@
               </el-row>
             </el-form-item>
 
-            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 100, message: '长度在 3 到 100 个字符', trigger: 'blur' }]">
+            <el-form-item label="事件内容" :prop="'items.'+ index +'.remark'" :rules="[{ required: true, message: '请输入事件内容', trigger: 'blur' },{ min: 3, max: 300, message: '长度在 3 到 300 个字符', trigger: 'blur' }]">
               <el-row>
                 <el-col :span="18">
-                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限100字)" style="width: 100%;" v-model="item.remark"></el-input>
+                  <el-input type="textarea" rows="6" placeholder="请输入事件内容(限300字)" style="width: 100%;" v-model="item.remark"></el-input>
                 </el-col>
               </el-row>
             </el-form-item>

+ 3 - 2
src/views/common/rewardTask.vue

@@ -78,6 +78,7 @@
               format="yyyy-MM-dd HH:mm"
               value-format="yyyy-MM-dd HH:mm"
               default-time="18:00"
+              :clearable="false"
               >
             </el-date-picker>
           </el-form-item>
@@ -115,8 +116,8 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 100 ,message: '长度不能超过 100 个字', trigger: 'blur' }]">
-            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限100字)"></el-input>
+          <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 300 ,message: '长度不能超过 300 个字', trigger: 'blur' }]">
+            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
           </el-form-item>
           <el-form-item label="重复周期" prop="task_cycle">
             <el-select v-model="formData.task_cycle" placeholder="请选择重复周期">

+ 3 - 2
src/views/common/rewardTaskAmend.vue

@@ -78,6 +78,7 @@
               format="yyyy-MM-dd HH:mm"
               value-format="yyyy-MM-dd HH:mm"
               default-time="18:00"
+              :clearable="false"
               >
             </el-date-picker>
           </el-form-item>
@@ -115,8 +116,8 @@
             </el-select>
           </el-form-item>
 
-          <el-form-item label="任务描述" prop="task_remark" :rules="[{ max: 100 ,message: '长度不能超过 100 个字', trigger: 'blur' }]">
-            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限100字)"></el-input>
+          <el-form-item label="任务描述" prop="task_remark" :rules="[{ max: 300 ,message: '长度不能超过 300 个字', trigger: 'blur' }]">
+            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
           </el-form-item>
           <!-- <el-form-item label="重复周期" prop="task_cycle">
             <el-select v-model="formData.task_cycle" placeholder="请选择重复周期">

+ 11 - 30
src/views/common/temporaryTask.vue

@@ -29,16 +29,6 @@
                 </div>
               </el-col>
             </el-row>
-            <!-- <EmployeeSelector
-              :employee_not_select="approval_not_select"
-              :employee_list="employee_list"
-              :isChecKedAll="true"
-              :can_select_employee="true"
-              :can_select_dept="false"
-              :multi="true"
-              :selected="approval_selected"
-              :visible.sync="show_approval_selector"
-              @confirm="approval_confirm"/> -->
           </el-form-item>
           <el-form-item label="审批人" prop="reviewer_id" :rules="[{ required: true, message: '请选择审批人', trigger: 'change' }]">
             <el-row>
@@ -50,22 +40,12 @@
                 </div>
               </el-col>
             </el-row>
-            <!-- <EmployeeSelector
-              :employee_not_select="reviewer_not_select"
-              :employee_list="reviewer_employee_list"
-              :can_select_employee="true"
-              :can_select_dept="false"
-              :multi="false"
-              :use_employee_list="true"
-              :selected="reviewer_selected"
-              :visible.sync="show_reviewer_selector"
-              @confirm="reviewer_confirm"/> -->
           </el-form-item>
 
           <el-form-item label="规则积分" prop="pt_id" :rules="[{ required: true, message: '请选择规则积分', trigger: 'blur' }]">
             <el-radio-group v-model="formData.pt_id" >
               <el-radio v-for="(item,index) in point_types" :key="index" v-show="item.code !== 'JX'" :label="item.id">{{item.name}}</el-radio>
-            </el-radio-group>            
+            </el-radio-group>
           </el-form-item>
 
           <el-form-item label="截止日期" prop="expire_time" v-if="formData.task_cycle == 0" :rules="[{ required: true, message: '请选择截止日期', trigger: 'blur' }]">
@@ -76,6 +56,7 @@
               format="yyyy-MM-dd HH:mm"
               value-format="yyyy-MM-dd HH:mm"
               default-time="18:00"
+              :clearable="false"
               >
             </el-date-picker>
           </el-form-item>
@@ -114,7 +95,7 @@
           </el-form-item>
 
           <el-form-item label="任务备注" prop="task_remark" :rules="[{ max: 300 ,message: '长度不能超过 300 个字', trigger: 'blur' }]">
-            <el-input type="textarea" :rows="5" v-model="formData.task_remark" placeholder="请输入任务内容(限300字)"></el-input>
+            <el-input type="textarea" :rows="5" v-model="formData.task_remark" show-word-limit  placeholder="请输入任务内容(限300字)"></el-input>
           </el-form-item>
           <el-form-item label="重复周期" prop="task_cycle">
             <el-select v-model="formData.task_cycle" placeholder="请选择重复周期">
@@ -125,18 +106,18 @@
           <div style="margin-left: 80px; margin-bottom: 8px;">以天为单位,每逾期一天扣分</div>
           <el-form-item label="逾期扣分" prop="timeout_deduction_point">
             <el-input v-model="formData.timeout_deduction_point" oninput="value=value.replace(/[^\d]/g,'')" placeholder="请输入数值"></el-input>
-          </el-form-item> 
+          </el-form-item>
 
           <el-form-item>
             <el-button type="primary" @click="sub('formData')">提交</el-button>
             <el-button @click="resetForm('formData')">取消</el-button>
           </el-form-item>
-          
+
 
         </el-form>
       </div>
     </el-dialog>
-    
+
     <!-- 执行人 -->
     <EmployeeSelector
       :employee_list="employee_list"
@@ -212,9 +193,9 @@
 
         // 重复周期
         task_cycle_arr: [
-          {value:  0, name: '不重复'}, 
-          {value:  1, name: '每天重复'}, 
-          {value:  2, name: '每周重复'}, 
+          {value:  0, name: '不重复'},
+          {value:  1, name: '每天重复'},
+          {value:  2, name: '每周重复'},
           {value:  3, name: '每月重复'}
         ],
         // 周期时间
@@ -257,7 +238,7 @@
         // /api/integral/work/publish
         // 选择重复任务之后
         // /api/integral/schedule/publish/work
-        
+
         let self = this
         let data = JSON.parse(JSON.stringify(self.formData))
         if(data.task_cycle == 0){
@@ -337,4 +318,4 @@
      padding-left:15px;
      overflow: hidden;
   }
-</style>
+</style>

+ 1 - 20
src/views/common/temporaryTaskAmend.vue

@@ -27,16 +27,6 @@
                 </div>
               </el-col>
             </el-row>
-            <!-- <EmployeeSelector
-              :employee_not_select="approval_not_select"
-              :employee_list="employee_list"
-              :isChecKedAll="false"
-              :can_select_employee="true"
-              :can_select_dept="false"
-              :multi="false"
-              :selected="approval_selected"
-              :visible.sync="show_approval_selector"
-              @confirm="approval_confirm"/> -->
             <EmployeeSelector
               :employee_list="employee_list"
 			        :user_employee_list="true"
@@ -57,16 +47,6 @@
                 </div>
               </el-col>
             </el-row>
-            <!-- <EmployeeSelector
-              :employee_not_select="reviewer_not_select"
-              :employee_list="reviewer_employee_list"
-              :can_select_employee="true"
-              :can_select_dept="false"
-              :multi="false"
-              :use_employee_list="true"
-              :selected="reviewer_selected"
-              :visible.sync="show_reviewer_selector"
-              @confirm="reviewer_confirm"/> -->
             <EmployeeSelector
               :multi="false"
 			        :isChecKedAll="false"
@@ -92,6 +72,7 @@
               format="yyyy-MM-dd HH:mm"
               value-format="yyyy-MM-dd HH:mm"
               default-time="18:00"
+              :clearable="false"
               >
             </el-date-picker>
           </el-form-item>

+ 202 - 150
src/views/integral/EmployeeTable.vue

@@ -2,7 +2,7 @@
   <div>
     <el-alert class="diy-tip" title="温馨提示:" :closable="false"  type="success" description show-icon>
       当前组织架构成员通过微信通讯录同步,员工开启积分管理后才能正式启用并进入“功道云积分制”,如果您的微信通讯录有变动,点击
-      <span class="blue" style="margin-left: 10px;cursor: pointer;" @click="tb()" v-loading="tbLoading">
+      <span class="blue" style="margin-left: 10px;cursor: pointer;" @click="tb()">
         <i class="el-icon-refresh"></i>
         立即同步
       </span>
@@ -30,7 +30,6 @@
               >
                 <div
                   content="tree"
-                  v-show="treedata.length != 0"
                   class="custom-tree-node"
                   slot-scope="{ node, data }"
                   style="font-size: 14px;color: #606266; width:100%; text-align: left;"
@@ -83,7 +82,6 @@
                     value-format="timestamp"
                     placeholder="选择日期时间"
                     :clearable="false"
-                    :picker-options="assistantOptions"
                   ></el-date-picker>
                 </div>
               </template>
@@ -109,10 +107,16 @@
                 <div :class="[scope.row.is_official == 1 ? 'switch-box' : '']" @click="changeIs(scope.row.is_official, scope.row.id)"><div class="switch"></div></div>
               </template>
             </el-table-column>
+            <el-table-column prop="id" label="操作" >
+              <template slot-scope="scope">
+                <el-link type="primary" :disabled="scope.row.is_creator == 1 || scope.row.is_official == 0"  @click="moreMessage(scope.row.id)" :underline="false">更多信息</el-link>
+              </template>
+            </el-table-column>
             <template slot="empty">
               <noData></noData>
             </template>
           </el-table>
+
           <el-pagination
             @size-change="handleSizeChange"
             @current-change="handleCurrentChange"
@@ -126,99 +130,96 @@
       </el-col>
     </el-row>
 
-    <el-dialog title="设置是否参与排名" :visible.sync="dialogVisible" top="30vh" width="520px" :before-close="handleClose">
-      <div style="margin-left:20px;">
-        <el-radio v-for="(item, index) in radioLi" :key="index" v-model="radio" :label="item.id">
-          <span style="font-size:17px;">{{ item.name }}</span>
-          <p style="font-size:14px;margin:8px 0 0 24px;">{{ item.kam }}</p>
-        </el-radio>
-      </div>
-      <span slot="footer" class="dialog-footer">
-        <el-button @click="dialogVisible = false">取 消</el-button>
-        <el-button type="primary" @click="setRanking" :disabled="rangLoad">确 定</el-button>
-      </span>
+
+
+    <el-dialog  :close-on-click-modal="false" ref="EditInformation_list" title="员工详情" width="500px" :visible.sync="diaTableVisible">
+    	<div style="padding-right:20px;">
+    		<el-form ref="detailForm" v-loading="show_loading">
+    			<el-form-item label="管理上级" prop="name" :label-width="'100px'">
+            <div class="input-box" @click="setSuperior()">
+              <div v-if="superior_list.length==0" class="fontColorT">暂无管理上级</div>
+              <div v-else>
+                <span v-for="(item,index) in superior_list">
+                  <WWOpenData type="userName" :openid="item.name"></WWOpenData>,
+                </span>
+              </div>
+            </div>
+    			</el-form-item>
+    			<el-form-item label="直属上级" prop="name" :label-width="'100px'">
+    				<div class="input-box" @click="dirSuperior()">
+              <div v-if="dirSupervisor.id"><WWOpenData type="userName" :openid="dirSupervisor.name"></WWOpenData></div>
+              <div v-else class="fontColorT">暂无直属上级</div>
+            </div>
+    			</el-form-item>
+    		</el-form>
+    	</div>
     </el-dialog>
+
+    <!-- 设置管理上级 -->
+
+<!--    :employee_list="manageListData"
+    :user_employee_list="true" -->
+
+    <EmployeeSelector
+      title="管理上级"
+      :visible.sync="manageScope_show"
+      :is_filtration_creator="false"
+      :multi="true"
+      :selected="selected_manage"
+      @confirm="manage_confirm"
+    />
+    <!-- 直属上级 -->
+    <EmployeeSelector
+      title="直属上级"
+      :visible.sync="scope_loading"
+      :is_filtration_creator="false"
+      :isChecKedAll="false"
+      :multi="false"
+      :employee_list="superior_list"
+      :user_employee_list="true"
+      :selected="selected_manage"
+      @confirm="dirSup_confirm"
+    />
   </div>
 </template>
 <script>
 import noData from '@/components/noData';
+import EmployeeSelector from '@/views/common/EmployeeSelector'
 import { _debounce } from '@/api/auth';
 export default {
-  components: {
-    noData
-  },
-
+  components: {noData,EmployeeSelector},
   data() {
     return {
-      entryData: {
-        userId: 0,
-        accedence_time: ''
-      },
       is: 1,
       no: 0,
       page: 1,
       perPage: 10,
       total: 0,
       info: {}, //公司信息
-      tips_show: true,
       bmList: [],
       userList: [],
-      class_type: '',
-      treedata: [1],
-      tableData: [],
       keywords: '',
       dept_id: 0,
-
       tableToading: false,
-      tbLoading: false,
       selectIds: [],
       enable_loading: false,
       visible: false,
-
       ruleDeprt: false,
-      dialogVisible: false,
-      rankingtakePartInId: '',
-      radio: '1',
 
-      rangLoad: false,
-      radioLi: [{ id: '1', name: '参与排名', kam: '在排名中展示此人' }, { id: '0', name: '不参与排名', kam: '排名不展示此人(自定义排名除外)' }],
-      assistantOptions: {
-        // disabledDate(time) {
-        //   let date = new Date();
-        //   var lastDayOfThisMonth = new Date(
-        //     date.getFullYear(),
-        //     date.getMonth() + 1,
-        //     0
-        //   );
-        //   return time.getTime() > lastDayOfThisMonth;
-        // },
-        // shortcuts: [
-        //   {
-        //     text: "今天",
-        //     onClick(picker) {
-        //       picker.$emit("pick", new Date());
-        //     }
-        //   },
-        //   {
-        //     text: "昨天",
-        //     onClick(picker) {
-        //       const date = new Date();
-        //       date.setTime(date.getTime() - 3600 * 1000 * 24);
-        //       picker.$emit("pick", date);
-        //     }
-        //   },
-        //   {
-        //     text: "本周一",
-        //     onClick(picker) {
-        //       const date = new Date();
-        //       date.setTime(
-        //         date.getTime() + 3600 * 1000 * 24 * (1 - date.getDay())
-        //       );
-        //       picker.$emit("pick", date);
-        //     }
-        //   }
-        // ]
-      }
+      // 设置上级
+      newId: 0,
+      diaTableVisible: false,
+      show_loading:false,
+      manageScope_show: false, //管理上级
+      scope_loading: false, //直接上级
+
+      userInfo: {},
+      superior_list: [], //用户上级
+      dirSupervisor:{}, //用户直属上级
+      employeeAll:[],//启用的人员列表
+      manageListData: [],//公司管理员列表
+      employeeList: [],
+      selected_manage: { employee: [], dept: [] },
     };
   },
   watch: {
@@ -226,24 +227,90 @@ export default {
       this.getEmployee();
     }
   },
-  mounted() {
-    this.$nextTick(function() {
-      if (localStorage.getItem('rule')) {
-        this.tips_show = false;
-      } else {
-        this.tips_show = true;
-      }
-    });
-  },
   created() {
     this.getInfo();
-    // this.getDepartment();
     this.getEmployee();
   },
-
+  mounted() {
+    this.filtration();
+    // this.manageList();
+  },
   methods: {
+    manage_confirm(date) {
+    	let manageId = [];
+    	date.employee.forEach(item => manageId.push(item.id))
+    	let data = {
+    		employee_id: this.newId,
+    		manage_id: manageId
+    	}
+    	this.$http('post', '/api/employee/superior', data).then(res =>{
+    			this.$message.success('设置成功');
+    			this.moreMessage();
+    	})
+    },
+    dirSup_confirm(date){
+    	let data = {
+    		employee_ids: [this.newId],
+    		superior_id: date.employee.length > 0 ? date.employee[0].id : null
+    	}
+    	this.$http('post','/api/employee/directly_superior',data).then(res =>{
+    			this.$message.success('设置成功');
+    			this.moreMessage();
+    	})
+    },
+    setSuperior(){
+    	this.selected_manage.employee =JSON.parse(JSON.stringify(this.superior_list));
+    	this.manageScope_show = true
+    },
+    dirSuperior(row){
+    	if(this.dirSupervisor.id){
+    		this.selected_manage.employee = [this.dirSupervisor]
+    	}else{
+    		this.selected_manage.employee = []
+    	}
+    	this.scope_loading = true
+    },
+    moreMessage(id) {
+    	if(id){
+    		this.newId = id
+    	}
+    	this.diaTableVisible = true
+    	this.show_loading = true
+    	this.$http('get', '/api/employee/info', { id: this.newId }).then(res=>{
+        	let data = res.data.data
+          this.userInfo = data
+        	if(data.employee_detail.superior_list){
+        		let employeeD = data.employee_detail
+        		if(employeeD.superior_id != 0){
+        			this.dirSupervisor = employeeD.superior_list.filter(x => x.id == employeeD.superior_id)[0]||{}
+        		}else{
+        			this.dirSupervisor = {}
+        		}
+        		// 过滤已经离职人员
+        		this.superior_list=[...this.employeeAll].filter(x => [...employeeD.superior_list].some(y => y.id === x.id));
+        	}
+      }).finally(() =>{
+    		this.show_loading = false
+    	})
+    },
+    // 所有已启用的人员
+    filtration() {
+      this.$http('get', '/api/employee/index', {page: 0, page_size: 3000,is_official:1 }).then(res => {
+    	 this.employeeAll = res.data.data.list;
+      });
+    },
+    //管理列表
+    manageList(){
+    	let params = {
+    		roles: ['creator', 'admin', 'point_manager', 'dept_manager']
+    	}
+    	this.$http('get', '/api/employee/role_employee', params).then(res =>{
+    		if(res.data.code == 1){
+    			this.manageListData = res.data.data.list
+    		}
+    	})
+    },
     entryclick(row) {
-      console.log(row);
       let data = {
         employee_id: row.id,
         accedence_time: row.accedence_time / 1000
@@ -258,63 +325,13 @@ export default {
           row.entryIf = false;
         });
     },
-    entryTime(row) {
-      console.log(row);
-      row.entryIf = true;
-    },
-
-    setRanking() {
-      this.rangLoad = true;
-      let data = {
-        employee_id: this.rankingtakePartInId,
-        switch: Number(this.radio)
-      };
-      this.$http('post', '/api/employee/ranking_switch', data)
-        .then(res => {
-          if (res.data.code == 1) {
-            this.$message.success({ message: res.data.msg });
-            this.getEmployee();
-          }
-        })
-        .finally(() => {
-          this.dialogVisible = false;
-          setTimeout(() => {
-            this.rangLoad = false;
-          }, 200);
-        });
-    },
-    rankingtakePartIn(id, is_ranking) {
-      this.radio = is_ranking.toString();
-      this.rankingtakePartInId = id;
-      this.dialogVisible = true;
-    },
-    handleClose(done) {
-      done();
-    },
     //同步信息
     tb() {
       this.$http('get', '/api/sync').then(res => {
         if (res.data.code == 1) {
           this.$message.success({ message: '正在同步,请稍候刷新页面查看同步结果' });
-          // this.getEmployee();
-          // this.getInfo();
         }
       });
-      // this.$confirm('下次同步时间需在10分钟之后,是否同步?', '提示', {
-      //   confirmButtonText: '确定',
-      //   cancelButtonText: '取消',
-      //   type: 'warning'
-      // }).then(() => {
-      // 	this.tbLoading = true;
-      // 	this.$http('post','/api/ding/department_sync').then(res => {
-      // 		this.$message.success({ message: '同步成功' });
-      // 		this.dept_id=0;
-      // 		this.getInfo();
-      // 		this.getEmployee();
-      // 	}).finally(()=>{
-      // 		this.tbLoading = false;
-      // 	});
-      // });
     },
     //搜索
     searchUser: _debounce(function() {
@@ -323,17 +340,38 @@ export default {
     }),
     //是否开通
     changeIs(e, id) {
-      var url = e == 1 ? '/api/employee/disable' : '/api/employee/enable';
-      this.$http('post', url, { employee_id: [id] }).then(res => {
-        if (res) {
-          if (e == 0) {
-            this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
-          } else {
-            this.$message.success({ message: res.data.msg });
+      if(e==1){
+        this.$confirm("禁用后,相关人员将不再允许进入积分系统,并且移除其上下级管理关系,确认禁用吗?", "提示", {
+          confirmButtonText: "确定",
+          cancelButtonText: "取消",
+          type: "warning",
+        }).then(() => {
+            var url = e == 1 ? '/api/employee/disable' : '/api/employee/enable';
+            this.$http('post', url, { employee_id: [id] }).then(res => {
+              if (res) {
+                if (e == 0) {
+                  this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
+                } else {
+                  this.$message.success({ message: res.data.msg });
+                }
+                this.getEmployee();
+              }
+            });
+        });
+      }else{
+        var url = e == 1 ? '/api/employee/disable' : '/api/employee/enable';
+        this.$http('post', url, { employee_id: [id] }).then(res => {
+          if (res) {
+            if (e == 0) {
+              this.$message.success({ message: '开启成功,可在"角色权限设置对应管理范围"' });
+            } else {
+              this.$message.success({ message: res.data.msg });
+            }
+            this.getEmployee();
           }
-          this.getEmployee();
-        }
-      });
+        });
+      }
+      
     },
     //批量开通权限
     participation() {
@@ -357,7 +395,6 @@ export default {
     //获取公司信息
     getInfo(is) {
       this.ruleDeprt = true;
-      // api/test?employee_id=155
       this.$http('get', '/api/site/info').then(res => {
         this.info = res.data.data;
         this.getDepartment(is);
@@ -412,7 +449,7 @@ export default {
         params.page = this.page - 1;
       }
       this.$http('get', '/api/employee/index', params)
-        .then(res => {  
+        .then(res => {
         this.total = res.data.data.pageInfo.count;
           let list = res.data.data.list;
           list.forEach(item => {
@@ -433,11 +470,6 @@ export default {
       localStorage.setItem('visible', 'true');
       this.visible = false;
     },
-    //关闭提示
-    tips_close() {
-      localStorage.setItem('rule', 'true');
-      this.tips_show = false;
-    },
     handleSizeChange: function(val) {
       this.perPage = val;
       this.page = 1;
@@ -452,6 +484,26 @@ export default {
 };
 </script>
 <style lang="scss" scoped>
+.input-box{
+    -webkit-appearance: none;
+    background-color: #FFF;
+    background-image: none;
+    border-radius: 4px;
+    border: 1px solid #DCDFE6;
+    box-sizing: border-box;
+    color: #606266;
+    display: inline-block;
+    font-size: inherit;
+    height: 40px;
+    line-height: 40px;
+    outline: 0;
+    padding: 0 15px;
+    transition: border-color .2s cubic-bezier(.645,.045,.355,1);
+    width: 100%;
+    overflow: hidden;
+    text-overflow: ellipsis;
+    white-space: nowrap;
+}
 .name {
   text-overflow: ellipsis;
   display: inline-block;

+ 21 - 47
src/views/integral/rule/rule_category.vue

@@ -9,9 +9,9 @@
     <el-row class="display-flex" v-loading="dept_loading">
       <el-col :span="6" class="rule_class_box">
         <div class="padding24">
+
           <el-button class="btn-block" @click="add_class" type="primary">+ 添加规则分类</el-button>
-          <el-tree v-show="dept_list !== null && dept_list.length != 0" :data="dept_list" :props="defaultProps"
-            @node-click="dept_click" :expand-on-click-node="false" :highlight-current="true" class="cate-tree"></el-tree>
+          <el-tree  v-show="dept_list !== null && dept_list.length != 0" :data="dept_list" :props="defaultProps"  @node-click="dept_click" :expand-on-click-node="false" :highlight-current="true" class="cate-tree rule_category_box" style="height: 660px;"></el-tree>
           <div v-show="!dept_loading && dept_list !== null && dept_list.length == 0" class="" style="margin-top: 100px;">
             <div style="padding: 0 10px">
               <img src="static/images/nodata_default.png" width="100%" alt="">
@@ -19,48 +19,25 @@
             <div style="text-align: center; line-height:34px">还没有规则分类</div>
             <div style="text-align: center; color: #26A2FF;" @click="add_class">添加规则分类</div>
           </div>
+
         </div>
       </el-col>
       <el-col :span="18" class="border-right">
         <div class="padding24">
-          <h2><pre style="font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;">{{dept_name}}<el-button style="margin-left: 10px" v-show="show_edit_btn" @click="edit_class">编辑</el-button></pre>
-          </h2>
+          <h2><pre style="font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;">{{dept_name}}<el-button style="margin-left: 10px" v-show="show_edit_btn" @click="edit_class">编辑</el-button></pre></h2>
           <div style="margin-top:2px; margin-bottom:15px;" class="inline-block-btn-list">
-            <el-button
-              type="danger"
-              plain
-              @click="del_item"
-            >批量删除</el-button>
-            <el-button
-              type="primary"
-              @click="add_rule"
-            >添加规则</el-button>
-            <el-button
-              type="primary"
-              plain
-              @click="theImportRules"
-            >导入规则</el-button>
-<!--            <el-button
-              type="primary"
-              plain
-              @click="derivedRule"
-            >导出规则</el-button> -->
+            <el-button type="danger" plain @click="del_item">批量删除</el-button>
+            <el-button type="primary" @click="add_rule">添加规则</el-button>
+            <el-button type="primary" plain @click="theImportRules">导入规则</el-button>
+            <el-button type="primary" plain @click="derivedRule">导出规则</el-button>
             <div class="gap-right-8 fr" style="display:inline-block; width:180px;">
-              <el-input
-                placeholder="搜索规则内容"
-                ref="search-bar"
-                v-model="keyword"
-                class="input-with-select"
-                @keyup.enter.native="onFilterChanged"
-              >
+              <el-input placeholder="搜索规则内容" ref="search-bar" v-model="keyword" class="input-with-select" @keyup.enter.native="onFilterChanged">
                 <el-button slot="append" icon="el-icon-search" @click="onFilterChanged"></el-button>
               </el-input>
             </div>
           </div>
-          <el-table stripe ref="multipleTable" :data="list" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange"
-            @row-click="editDetails" class="rule_category_box">
-            <el-table-column type="selection" width="55">
-            </el-table-column>
+          <el-table stripe ref="multipleTable" :data="list" tooltip-effect="dark" style="width: 100%" @selection-change="handleSelectionChange" @row-click="editDetails" class="rule_category_box">
+            <el-table-column type="selection" width="55"></el-table-column>
             <el-table-column prop="remark" label="内容" width="500" style="padding-right:30px;"></el-table-column>
             <el-table-column label="分值">
               <template slot-scope="scope">
@@ -95,24 +72,17 @@
       width="700px">
       <el-form :model="rules_detail_form" ref="rules_detail_form" :rules="rules" label-width="80px">
         <el-form-item label="规则内容" prop="remark">
-          <el-input v-model="rules_detail_form.remark" placeholder="请输入规则内容" type="textarea" :rows="3"></el-input>
+          <el-input v-model="rules_detail_form.remark" placeholder="请输入规则内容" type="textarea" :rows="4" maxlength="300" show-word-limit></el-input>
         </el-form-item>
 
         <el-form-item label="所属分类" prop="rule_id">
           <div style="position: relative;">
-            <div style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 9;" @click="not_data"
-              v-show="dept_list !==null && dept_list.length == 0"></div>
-              
-          <el-cascader placeholder="请选择分类" v-model="rules_detail_form.rule_id" :options="dept_list" :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'child'}"  @change="cascader_close" ref="cascaderHandle"
-            clearable></el-cascader>
-
-            <!-- <el-cascader placeholder="请选择分类" v-model="rules_detail_form.rule_id" @visible-change="select_rule" @change="cascader_close"
-              :options="dept_list" ref="cascaderHandle" :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'child'}"></el-cascader> -->
+            <div style="position: absolute; top: 0; left: 0; right: 0; bottom: 0; z-index: 9;" @click="not_data" v-show="dept_list !==null && dept_list.length == 0"></div>
+            <el-cascader placeholder="请选择分类" v-model="rules_detail_form.rule_id" :options="dept_list" :props="{ checkStrictly: true, label: 'name', value: 'id', children: 'child'}"  @change="cascader_close" ref="cascaderHandle" clearable></el-cascader>
           </div>
         </el-form-item>
         <el-form-item label="规则类型" prop="pt_id">
-          <el-radio v-model="rules_detail_form.pt_id" :label="item.id" v-for="(item,index) in point_types" :key="index"
-            v-show="item.name !== '绩效分'">{{item.name}}</el-radio>
+          <el-radio v-model="rules_detail_form.pt_id" :label="item.id" v-for="(item,index) in point_types" :key="index" v-show="item.name !== '绩效分'">{{item.name}}</el-radio>
         </el-form-item>
         <el-form-item label="规则积分" prop="range_type">
           <el-radio-group v-model="rules_detail_form.range_type">
@@ -400,7 +370,7 @@
       //导出规则按钮
       derivedRule(){
         let token = getToken()?getToken():this.$getToken
-        window.open(this.publicBASE_API+'/api/download/rule_item/item?employee_id='+this.$store.getters.user_info.id +'&token='+token)
+        window.open(this.publicBASE_API+'/api/download/rule_item/item?employee_id='+this.$userInfo().id +'&token='+token)
       },
       //规则为空时点击 导入规则按钮
       theImportRules(){
@@ -1190,7 +1160,7 @@
             } else {
               self.rules_detail_form.item_id=self.rules_detail_form.id
               // let data = self.rules_detail_form
-              
+
               let datas = self.rules_detail_form
               let data = {}
               for(let key in datas){
@@ -1301,6 +1271,10 @@
 </script>
 
 <style scoped lang="scss">
+  .rule_category_box{
+    height: 600px;
+    overflow-y: scroll;
+  }
   .border-right:after{
     content: " ";
     position: absolute;

+ 34 - 129
src/views/setting/fixed_integral.vue

@@ -33,7 +33,6 @@
                 <template slot="title">
                   <i class="el-icon-edit-outline" @click.stop="edit_grouping(item)"></i>
                   <span class="title_top"><pre style="font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;max-width: calc(100vh - 500px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">{{item.name}}</pre></span>
-                  <!-- <i class="el-icon-edit-outline" @click.stop="edit_grouping(item)">编辑</i> -->
                 </template>
                 <span
                   :index="i.toString()"
@@ -74,24 +73,6 @@
 
           <el-col v-if="item_list.length != 0">
             <el-row>
-              <!-- <el-col :span="24" style="font-size:20px;color:#303133;line-height:36px;">
-                <pre  style="font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;display:flex">
-                  <el-popover trigger="hover" placement="top" popper-class="popperSPBOX" style="padding: 9px 0 0 10px;">
-                    <span style="white-space: pre-wrap">{{right_rules_detail.remark}}</span>
-                    <div slot="reference" class="name-wrapper"  style=" max-width: calc(100vh - 500px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">
-                      <span style="white-space: pre">{{right_rules_detail.remark}}</span>
-                    </div>
-                  </el-popover>
-                  <el-popover trigger="hover" placement="top" popper-class="popperSPBOX" style="padding: 9px 0 0 10px;">
-                    <span>{{right_rules_detail.min_point}}</span>
-                    <div slot="reference" class="name-wrapper"  style=" max-width: calc(100vh - 830px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;">
-                      <span>{{right_rules_detail.min_point}}</span>
-                    </div>
-                  </el-popover>
-                  <span style="padding: 9px 0 0 0;">B分</span> -->
-              <!-- <el-button plain style="padding:10px 12px; margin-left: 10px;" @click="edit_rules(right_rules_detail)">编辑</el-button></pre>
-              </el-col> -->
-
               <el-col :span="24" style="white-space: pre-wrap;font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;display:flex;flex-wrap:wrap;font-size:20px;color:#303133;line-height:36px;">
                   <div><span style="font-size:19px">{{right_rules_detail.remark}}</span></div>
                   <div>
@@ -99,8 +80,6 @@
                     <el-button plain style="padding:10px 12px; margin-left: 10px;" @click="edit_rules(right_rules_detail)">编辑</el-button>
                   </div>
               </el-col>
-
-
             </el-row>
             <el-row :gutter="0" style="margin-top:20px;">
               <el-col :span="4">
@@ -109,11 +88,6 @@
               <el-col :span="4">
                 <el-button type="primary" @click="add_employee_show= true">添加人员</el-button>
               </el-col>
-              <!-- <el-button
-                type="primary"
-                plain
-                @click="import_rules_show = true"
-              >导入自动积分</el-button> -->
               <el-col :span="7" style="padding-left:15px;float:right;position: relative;">
                 <div v-if="dropOuOfPers.currentLabel && dropOuOfPers.currentLabel != ''" class="dropOuOfPersName" @click="takePartIn">
                   <WWOpenData type="userName" :openid="dropOuOfPers.currentLabel"></WWOpenData>
@@ -128,15 +102,6 @@
                     <span style="float: left"><WWOpenData type="userName" :openid="item.name"></WWOpenData></span>
                   </el-option>
                 </el-select>
-                <!-- <el-input
-                  placeholder="输入关键词"
-                  ref="search-bar"
-                  v-model="integralKeywords"
-                  class="input-with-select"
-                  @keyup.enter.native="onFilterChanged"
-                >
-                  <el-button slot="append" icon="el-icon-search" @click="onFilterChanged"></el-button>
-                </el-input> -->
               </el-col>
             </el-row>
             <el-table
@@ -173,6 +138,8 @@
                     <div v-if="scope.row.task_cycle==1">每天</div>
                     <div v-if="scope.row.task_cycle==2">每周</div>
                     <div v-if="scope.row.task_cycle==3">每月</div>
+                    <div v-if="scope.row.task_cycle==4">每季度</div>
+                    <div v-if="scope.row.task_cycle==5">每年</div>
                 </template>
               </el-table-column>
               <template slot="empty">
@@ -205,22 +172,11 @@
     >
       <el-form :model="grouping" ref="grouping" :rules="grouping_rules" label-width="100px">
         <el-form-item label="分类名称" prop="name">
-          <el-input v-model="grouping.name" placeholder="请输入分类名称"></el-input>
+          <el-input v-model="grouping.name" placeholder="请输入分类名称" maxlength="25"></el-input>
         </el-form-item>
         <div style="overflow: hidden;">
-          <el-button
-            class="fl"
-            :disabled="btn_disabled"
-            type="danger"
-            v-show="grouping_type == 'edit'"
-            @click="del_grouping(grouping)"
-          >删除</el-button>
-          <el-button
-            class="fr"
-            :disabled="btn_disabled"
-            type="primary"
-            @click="grouping_btn('grouping')"
-          >确定</el-button>
+          <el-button class="fl" :disabled="btn_disabled" type="danger" v-show="grouping_type == 'edit'" @click="del_grouping(grouping)">删除</el-button>
+          <el-button class="fr" :disabled="btn_disabled" type="primary" @click="grouping_btn('grouping')">确定</el-button>
           <el-button class="fr" :disabled="btn_disabled" @click="grouping_close('grouping')">取消</el-button>
         </div>
       </el-form>
@@ -240,7 +196,7 @@
         label-width="120px"
       >
         <el-form-item label="规则名称" prop="remark">
-          <el-input v-model="rules_detail_form.remark" placeholder="请输入规则名称"></el-input>
+          <el-input v-model="rules_detail_form.remark" placeholder="请输入规则内容" type="textarea" :rows="4" maxlength="300" show-word-limit></el-input>
         </el-form-item>
         <el-form-item label="分类" prop="rule_id">
           <el-select v-model="rules_detail_form.rule_id" style="width: 100%;" placeholder="请选择分类">
@@ -253,15 +209,12 @@
           </el-select>
         </el-form-item>
         <el-form-item label="积分" prop="min_point">
-          <el-input v-model="rules_detail_form.min_point" placeholder="请输入积分"></el-input>
+          <el-input v-model="rules_detail_form.min_point" maxlength="10" placeholder="请输入积分"></el-input>
           <span
             data-v-a17f1960
             style="display: block; font-size: 12px; color: rgb(96, 98, 102);text-align: left;"
-          >固定加分加B分</span>
+          >固定加B分</span>
         </el-form-item>
-        <!-- <el-form-item label="是否与考勤挂钩" prop="is_attendance">
-          <el-switch v-model="rules_detail_form.is_attendance"></el-switch>
-        </el-form-item> -->
         <div style="overflow: hidden;">
           <el-button
             type="danger"
@@ -317,14 +270,6 @@
           注:非在职状态的员工,系统不会执行自动积分
         </span>
         <div>
-          <!-- <EmployeeSelector1
-            :max="add_employee_max"
-            :can_select_dept="false"
-            :visible.sync="add_employee_visible"
-            @confirm="add_employee_confirm"
-            ref="Employee"
-          ></EmployeeSelector1> -->
-          
           <EmployeeSelector1
             :max="add_employee_max"
             :is_filtration_creator="true"
@@ -375,7 +320,6 @@
               ref="upload"
               :limit = '1'
               :action="integralUpload"
-              :on-preview="handlePreview"
               :on-remove="handleRemove"
               :on-success="handleSuccess"
               :before-upload="beforeFilesUpload"
@@ -463,7 +407,7 @@ export default {
           },
           {
             max: 25,
-            message: "规则名称不能大于25个字",
+            message: "分类名称不能大于25个字",
             trigger: "blur",
           },
         ],
@@ -488,8 +432,8 @@ export default {
             trigger: "blur",
           },
           {
-            max: 50,
-            message: "分类名称不能大于50个字",
+            max: 300,
+            message: "规则名称不能大于300个字",
             trigger: "blur",
           },
         ],
@@ -525,13 +469,20 @@ export default {
           name: "每月自动加分",
           value: 3,
         },
+        {
+          name: "每个季度自动加分",
+          value: 4,
+        },
+        {
+          name: "每年自动加分",
+          value: 5,
+        },
       ],
       task_cycle_name: '',
       add_employee_form: {
         employee_ids: [],
       },
       table_list: [],
-      // selected:{employee:[], dept: []},//选择员工数据
       del_arr: {
         ids: [],
       },
@@ -543,7 +494,7 @@ export default {
       total: 0, //返回的总数据
       page: 1, //默认页数  为1
       pagesize: 10, //每页显示的数据
-      
+
       dropOuOfPers:[],
     };
   },
@@ -551,11 +502,18 @@ export default {
     EmployeeSelector1,
   },
   watch: {
+    add_employee_show(val){
+      if(!val){
+        this.task_cycle_name= '';
+        this.add_employee_form={
+          employee_ids: [],
+        };
+      }
+    },
     select_employee_id(val) {
       this.employee_id = val;
       this.open_right(this.employee_id);
       this.$nextTick(()=>{
-        console.log(this.$refs['dropOuOfref'].selected)
         this.dropOuOfPers = this.$refs['dropOuOfref'].selected
       })
     },
@@ -579,28 +537,9 @@ export default {
         file: this.file
       }
       this.$http('post','/api/integral/auto/import', params).then(res => {
-        if(res.data.code == 1) {
-          // this.import_rules_show = false;
           this.close_import()//成功之后关闭并清除选中的文件
           this.$message.success({message:res.data.msg})
           this.get_rule_trees();
-          // if(res.data.data.list.length != 0){
-          //   this.error_list_show = true
-          //   this.error_list.push(res.data.data)
-          // }else{
-          //   this.$message.success({message:res.data.msg})
-          // }
-          // if(res.data.data.length != 0 && res.data.data.length != undefined){
-          //   this.error_list_show = true
-          //   this.error_list = res.data.data
-          // }else{
-          //   this.get_department_list()
-          // }
-        }else{
-          this.$message({type:'error',message:res.data.msg})
-        }
-      }).catch(()=>{
-
       }).finally(()=>{
         this.save_loading = false
       })
@@ -629,16 +568,10 @@ export default {
         this.import_btn_show = false
       }
     },
-    handlePreview(file) {
-      console.log(file);
-    },
-
-
     handleCurrentChange(val) {
       this.page = val;
       this.open_right(this.handleCurrent);
     },
-
     tips_close() {
       localStorage.setItem("fixed_integral_tips", "true");
       this.tips_show = false;
@@ -698,31 +631,17 @@ export default {
               },5000)
             }
           } else {
-            self.$http("post","/api/integral/auto/add",data,)
-              .then((res) => {
+            self.$http("post","/api/integral/auto/add",data,).then((res) => {
                 if (res.data.code == 1) {
                   self.add_employee_show = false;
-                  self.$message.success(
-                    "此次操作成功" +
-                      res.data.data.success +
-                      "条,失败" +
-                      res.data.data.error +
-                      "条,已经存在的" +
-                      res.data.data.exist +
-                      "条"
-                  );
-                  // self.open_right();
+                  self.$message.success("此次操作成功" + res.data.data.success +"条,失败" + res.data.data.error +"条,已经存在的" + res.data.data.exist + "条");
                   self.get_rule_trees();
                 } else {
                   self.$message.error(res.data.msg);
                 }
-              })
-              .catch((e) => {
-                self.$message.error(e.data.msg);
-              })
-              .finally(() => {
-                self.loading = false;
-              });
+            }).finally(() => {
+              self.loading = false;
+            });
           }
         } else {
           return false;
@@ -730,8 +649,6 @@ export default {
       });
     },
 
-    handleNodeClick(data) {
-    },
     handleSelectionChange(val) {
       this.del_arr.ids = [];
       val.forEach((element) => {
@@ -777,7 +694,6 @@ export default {
     // 编辑规则
     editRule(form) {
       let self = this;
-      // self.table_loading = true
       self.$refs[form].validate((valid) => {
         if (valid) {
           self.btn_disabled = true;
@@ -786,9 +702,7 @@ export default {
           self.rules_detail_form.is_attendance? (self.rules_detail_form.is_attendance = 0):(self.rules_detail_form.is_attendance = 0);
           self.rules_detail_form.item_id = self.rules_detail_form.id;
           data = self.rules_detail_form;
-          // self.right_rules_detail = data
-          self
-            .$http("PUT","/api/integral/rule/items",data,)
+          self.$http("PUT","/api/integral/rule/items",data,)
             .then((res) => {
               if (res.data.code == 1) {
                 self.get_rule_trees();
@@ -963,7 +877,6 @@ export default {
 
     //自动积分规则列表
     open_right(data) {
-      // console.log(data)
       if(this.handleCurrent!=data){
         this.page = 1
       }
@@ -971,14 +884,6 @@ export default {
       let self = this;
       self.rule_list_load = true;
       self.table_loading = true;
-      // var params = {params:{}}
-      // if(data){
-      //   params.params.item_id = data.id || ''
-      //   params.params.employee_id = data.employee_id || ''
-      //   params.params.page = self.page
-      //   self.rule_id = data.rule_id
-      //   self.item_id = data.id
-      // }
       if (data&&data.id) {
         self.add_employee_id = data.id;
         self.add_rulse_id = data.rule_id;

+ 60 - 80
src/views/statistics_new/integral_event.vue

@@ -1,93 +1,75 @@
 <template>
   <div>
     <div class="integral_event_box">
-      <el-row :gutter="20" style="margin-bottom: 20px;">
-
-        <el-col :span="3">
-          <el-select v-model="newTaskFormType" style="width:110px;" filterable placeholder="请选择">
-            <el-option v-for="item in pullrow" :key="item.id" :label="item.value" :value="item.id"></el-option>
-          </el-select>
-        </el-col>
-        <el-col :span="6" class="display_flex" v-show="newTaskFormType==1">
-          <el-cascader
-            class="date-picker-width"
-            v-model="rule"
-            :options="rule_trees"
-            :props="props"
-            @change="rule_null"
-            ref="rule"
-            clearable
-            filterable
-            change-on-select
-            placeholder="选择规则分类"
-          ></el-cascader>
-        </el-col>
-
-        <el-col :span="6" class="display_flex"  v-show="newTaskFormType==2">
-          <el-cascader
-              @change="ruleautomatic"
+      <el-form :inline="true" :model="formData" class="demo-form-inline">
+          <el-form-item>
+            <el-select v-model="newTaskFormType" style="width:110px;" filterable placeholder="请选择">
+                <el-option v-for="item in pullrow" :key="item.id" :label="item.value" :value="item.id"></el-option>
+            </el-select>
+            <el-cascader
+              v-show="newTaskFormType==1"
               class="date-picker-width"
-              v-model="automaticIntegration"
-              :options="rule_list"
+              v-model="rule"
+              :options="rule_trees"
               :props="props"
-              ref="rule1"
+              @change="rule_null"
+              ref="rule"
+              clearable
               filterable
               change-on-select
-              placeholder="选择自动积分"
-              clearable></el-cascader>
-        </el-col>
-
-        <el-col :span="8" class="display_flex">
-          <span class="label">积分分类</span>
-          <el-select class="date-picker-width" v-model="formData.pt_id" clearable placeholder="请选择积分分类">
-            <el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
-          </el-select>
-        </el-col>
-        <el-col :span="7" class="display_flex" style="position: relative;">
-          <span class="label">部门</span>
-          <ShowDeptName @confirm="deptConfirm"></ShowDeptName>
-        </el-col>
-      </el-row>
+              placeholder="选择规则分类"
+            ></el-cascader>
+            <el-cascader
+                v-show="newTaskFormType==2"
+                @change="ruleautomatic"
+                class="date-picker-width"
+                v-model="automaticIntegration"
+                :options="rule_list"
+                :props="props"
+                ref="rule1"
+                filterable
+                change-on-select
+                placeholder="选择自动积分"
+                clearable></el-cascader>
+          </el-form-item>
+          <el-form-item label="积分分类">
+            <el-select v-model="formData.pt_id" clearable placeholder="请选择积分分类">
+              <el-option v-for="item in point_types" :key="item.name" :label="item.name" :value="item.id"></el-option>
+            </el-select>
+          </el-form-item>
+          <el-form-item label="部门">
+              <ShowDeptName @confirm="deptConfirm"></ShowDeptName>
+          </el-form-item>
+          <el-form-item label="时间">
+            <el-date-picker
+              v-model="time_slot"
+              type="daterange"
+              value-format="yyyy-MM-dd"
+              range-separator="至"
+              start-placeholder="开始日期"
+              end-placeholder="结束日期"
+            ></el-date-picker>
+          </el-form-item>
+          <el-form-item label="内容搜索">
+              <el-input v-model="formData.keyword" placeholder="输入关键字查找" maxlength="20" @keyup.enter.native="keyWordSelect" class="persons_name">
+                <el-button slot="append" icon="el-icon-search" @click="keyWordSelect"></el-button>
+              </el-input>
+          </el-form-item>
+          <el-form-item label="人员搜索">
+              <el-input v-model="formData.employee_name" placeholder="输入人员名称" maxlength="20" @keyup.enter.native="keyWordSelect" class="persons_name">
+                <el-button slot="append" icon="el-icon-search" @click="keyWordSelect"></el-button>
+              </el-input>
+          </el-form-item>
+      </el-form>  
 
-      <el-row :gutter="20" style="margin-bottom: 20px;">
-        <el-col class="time_section display_flex" :span="10">
-          <span class="label">时间</span>
-          <el-date-picker
-            v-model="time_slot"
-            type="daterange"
-            value-format="yyyy-MM-dd"
-            range-separator="至"
-            start-placeholder="开始日期"
-            end-placeholder="结束日期"
-          ></el-date-picker>
-        </el-col>
-        <el-col :span="6" class="display_flex">
-          <el-input v-model="formData.keyword" placeholder="输入关键字查找" maxlength="100" @keyup.enter.native="keyWordSelect" class="persons_name">
-            <el-button slot="append" icon="el-icon-search" @click="keyWordSelect"></el-button>
-          </el-input>
-        </el-col>
 
-        <el-col :span="8" style="padding-left:15px;float:right;position: relative;">
-          <div v-if="dropOuOfPers.currentLabel && dropOuOfPers.currentLabel != ''" class="dropOuOfPersName" @click="takePartIn">
-            <WWOpenData type="userName" :openid="dropOuOfPers.currentLabel"></WWOpenData>
-          </div>
-          <el-select v-model="select_employee_id" ref="dropOuOfref" clearable placeholder="请选择人员">
-            <el-option v-for="item in employee_map" :key="item.id" :label="item.name" :value="item.id">
-              <span style="float: left"><WWOpenData type="userName" :openid="item.name"></WWOpenData></span>
-            </el-option>
-          </el-select>
-        </el-col>
-      </el-row>
 
       <el-row :gutter="20" style="margin-bottom: 20px;">
         <el-col :span="4">
-          <!-- <el-button type="primary" @click="excelImportShow = true">导入数据</el-button> -->
           <el-button type="primary" @click="exportExcel" :disabled="deriveDis">导出当前数据</el-button>
-          <!-- <a :href="aherfUrl" ref="aherfClick" v-if="aherfUrl != ''" v-trigger></a> -->
           <a :href="aherfUrl" ref="aherfClick"></a>
         </el-col>
         <el-col :span="17">
-          <!-- <el-button type="primary" plain @click="swiperShowTrue">轮播排名</el-button> -->
           <el-button class="first-element-btn" v-if="noticeRole" :disabled='selectionID.length==0' @click="deleteInBatches" type="danger" >批量删除</el-button>
         </el-col>
       </el-row>
@@ -365,7 +347,8 @@ export default {
       dept_tree: [],
       formData: {
         page: 1,
-        page_size: 10
+        page_size: 10,
+        employee_name:''
       },
       time_slot: null,
       rule_trees: [],
@@ -587,14 +570,11 @@ export default {
       if(this.deriveJobIf < 5){
         this.$http('get','/api/download/result',{job_id: this.deriveJobId}).then((res)=>{
           if(res.data.code == 1){
-            // window.open(res.data.data.url)
-            // window.location.href = res.data.data.url
             this.aherfUrl = res.data.data.url
             this.deriveJobId = ''
             this.deriveDis = false
             this.$nextTick(()=>{
               this.$refs.aherfClick.click()
-              // this.aderivecli()
             })
           }else{
             setTimeout(()=>{
@@ -624,7 +604,7 @@ export default {
       this.formData.start_day ? params.start_day = this.formData.start_day : ''
       this.formData.end_day ? params.end_day = this.formData.end_day : ''
       this.formData.keyword ? params.keyword = this.formData.keyword : ''
-      this.$downloadFile('api/download/integral',params,this.$route.path);
+      this.$downloadFile('api/download/integral',params,this.$route.path,'确认导出当前数据?');
     },
     handleSizeChange(val) {
       this.pageLimit = val;
@@ -681,7 +661,7 @@ export default {
     },
     get_rule_trees() {
       let self = this;
-      self.$http('get','/api/integral/rule/trees')
+      self.$http('get','/api/integral/rule/trees',{cycle_type:1})
         .then(res => {
           if (res.data.code == 1) {
             let arr = res.data.data.rule_tree;

+ 0 - 3
src/views/statistics_new/integral_statistics.vue

@@ -173,14 +173,11 @@ export default {
           job_id: this.deriveJobId
         }).then(res => {
           if (res.data.code == 1) {
-            // window.open(res.data.data.url)
-            // window.location.href = res.data.data.url
             this.aherfUrl = res.data.data.url;
             this.deriveJobId = '';
             this.deriveDis = false;
             this.$nextTick(() => {
               this.$refs.aherfClick.click();
-              // this.aderivecli()
             });
           } else {
             setTimeout(() => {

+ 7 - 72
src/views/workbench/grade/apply_list.vue

@@ -17,22 +17,14 @@
       </el-col>
     </el-row>
 
-    <el-table
-      :data="dataList"
-      stripe
-      fit
-      v-loading="table_loading"
-      v-if="tabs == 'complete'"
-      @row-click="openDetail"
-    >
+    <el-table :data="dataList" stripe fit  v-loading="table_loading" v-if="tabs == 'complete'" @row-click="openDetail">
       <el-table-column label="申请内容" prop="remark">
         <template slot-scope="scope">{{scope.row.remark.customize || scope.row.remark.rule}}</template>
       </el-table-column>
       <el-table-column label="积分" prop="review_point" width="120">
         <template slot-scope="scope">
-          <span :class="{color_green: scope.row.point > 0, color_red: scope.row.point < 0}">
-            <span v-show="scope.row.point > 0">+</span>
-            {{scope.row.point}} {{scope.row.pt_id==3?'B分':scope.row.pt_id==2?'A分':scope.row.pt_id==1?'绩效分':''}}
+          <span :class="{color_green: scope.row.review_point > 0, color_red: scope.row.review_point < 0}">
+            <span v-show="scope.row.review_point > 0">+</span>{{scope.row.review_point}} {{scope.row.pt_id==3?'B分':scope.row.pt_id==2?'A分':scope.row.pt_id==1?'绩效分':''}}
           </span>
         </template>
       </el-table-column>
@@ -63,28 +55,18 @@
       <el-table-column label="申请内容" prop="remark">
         <template slot-scope="scope">{{scope.row.remark.customize || scope.row.remark.rule}}</template>
       </el-table-column>
-      <!-- <el-table-column label="积分" prop="review_point" width="120">
-        <template slot-scope="scope">
-          <span>
-            <span v-show="scope.row.point > 0">+</span>
-            {{scope.row.point}} B分
-          </span>
-        </template>
-      </el-table-column> -->
-      <el-table-column label="积分" prop="review_point" width="120">
+<!--      <el-table-column label="积分" prop="review_point" width="120">
         <template slot-scope="scope">
           <span class="green" v-show="scope.row.point>=0">+{{scope.row.point}} {{$getTypsName(scope.row.pt_id)}}</span>
           <span class="red" v-show="scope.row.point < 0">{{ scope.row.point }} {{$getTypsName(scope.row.pt_id)}}</span>
         </template>
-      </el-table-column>
+      </el-table-column> -->
       <el-table-column label="时间" prop="event_time" width="150"></el-table-column>
       <template slot="empty">
         <div class="nopoint_box" v-if="!formData.keyword">
           <div class="noimg"></div>
           <span class="title">
             暂无待审批数据
-            <!-- 你还没有申请积分 现在
-            <el-button type="text" @click="dialogVisible = true">申请积分</el-button> -->
           </span>
         </div>
         <div class="nopoint_box" v-else>
@@ -111,8 +93,6 @@
           <div class="noimg"></div>
           <span class="title">
             暂无被驳回数据
-            <!-- 你还没有申请积分 现在
-            <el-button type="text" @click="dialogVisible = true">申请积分</el-button> -->
           </span>
         </div>
         <div class="nopoint_box" v-else>
@@ -161,23 +141,10 @@
                 <div style="margin-left: 10px;">
                   <span :class="{ yellow: detail_info.review_status == 0 }">{{ detail_info.status_mark }}</span>
                 </div>
-                <!-- 优化 -->
-                <!-- <div v-for="(item,index) in detail_info.process" :key="index" v-show="item.review_point != 0">
-                  <p v-if="detail_info.status == 1">
-                    <span v-show=" item.review_point >= 0 &&detail_info.item_prize_type == 1 || item.review_point >= 0 && detail_info.item_prize_type == -1|| item.review_point >= 0 && detail_info.item_prize_type == 0" style="color:#f56c6c;font-size:16px;padding-left:8px">+{{item.review_point}}</span>
-                    <span v-show=" item.review_point <= 0 && detail_info.item_prize_type == 2 || item.review_point <= 0 && detail_info.item_prize_type == -1|| item.review_point <= 0 && detail_info.item_prize_type == 0" style="color:#67C23A;font-size:16px;padding-left:8px">{{item.review_point}}</span>
-                    <span> {{detail_info.pt_id==1?'绩效分':detail_info.pt_id==2?'A分':detail_info.pt_id==3?'B分':''}}</span>
-                  </p>
-                </div> -->
               </div>
             </div>
-            <!-- <p class="user_text text_ccc">{{detail_info.review_status_mark}}</p> -->
           </el-col>
         </el-row>
-        <!-- <el-row :gutter="10" v-show="detail_info.source_type_mark">
-          <el-col :span="4">来源类型</el-col>
-          <el-col :span="20">{{detail_info.source_type_mark}}</el-col>
-        </el-row> -->
         <el-row :gutter="10" v-for="(item,index) in detail_info.detail" :key="index">
           <el-col :span="4">{{item.key}}</el-col>
           <el-col :span="20" v-if="item.key == '附件'">
@@ -189,7 +156,7 @@
             >
             </el-image>
           </el-col>
-           <el-col :span="20" v-else-if="item.key == '收益人'">
+          <el-col :span="20" v-else-if="item.key == '收益人'">
             <WWOpenData type="userName" :openid="item.value"></WWOpenData>
 					</el-col>
           <el-col :span="20" v-else-if="item.key == '奖扣目标'">
@@ -200,7 +167,6 @@
 					</el-col>
           <el-col :span="20" v-else>{{ item.value }}</el-col>
         </el-row>
-        
         <el-row :gutter="10" v-if="detail_info.files !=null && detail_info.files > 0">
           <el-col :span="4">图片</el-col>
           <el-col :span="20">
@@ -212,43 +178,12 @@
             ></el-image>
           </el-col>
         </el-row>
-        
         <div v-show="detail_info.process">
         	<Steps :process="detail_info.process"></Steps>
         </div>
         <div class="btn_danger flex-box flex-center-center" v-if="detail_info.applyor_id==$userInfo().id&&detail_info.can_refuse == '1'&&detail_info.source_type==2">
            <el-button type="danger" class="danger" @click="revocation" :loading="cx_loading">撤销</el-button>
          </div>
-        <!-- <div v-show="detail_info.process != false">
-          <p class="row_title">
-            审批
-            <span class="row_tips">多人审批时,以最后一人为准</span>
-          </p>
-
-          <div class="examine_steps">
-            <el-steps direction="vertical" :space="50">
-              <el-step v-for="(item,index) in detail_info.process" :key="index">
-                <template slot="icon">
-                  <userImage
-                    width="36px"
-                    height="36px"
-                    :img_url="item.img_url"
-                    :user_name="item.name"
-                  ></userImage>
-                </template>
-                <template slot="title">
-                  <div style="color: #303133;font-size:14px;margin-top:-2px;">
-                    <WWOpenData type="userName" :openid="item.name"></WWOpenData> {{item.remark}}
-                  </div>
-                </template>
-                <template slot="description">
-                  <div>{{item.time}}</div>
-                  <div style="color: #333; margin-bottom: 15px;">{{item.review_remark}}</div>
-                </template>
-              </el-step>
-            </el-steps>
-          </div>
-        </div> -->
       </div>
     </el-drawer>
 
@@ -284,7 +219,7 @@ export default {
 
       dialogVisible: false,
       itemIndex: 0,
-      
+
       cx_loading:false,
       selectId:0,
     };

+ 1 - 1
src/views/workbench/task/my_task.vue

@@ -158,7 +158,7 @@
       'formData.status'(val){
         this.formData.page = 1
         this.formData.pt_id = 0
-        this.formData.sort = 'expire'
+        this.formData.sort = 'publish'
         this.list = []
         this.get_list()
       }