LiGuang 3 years ago
parent
commit
c41c592fff

+ 201 - 0
src/views/system/AttendanceRuleList.vue

@@ -0,0 +1,201 @@
+<template>
+  <a-card :bordered="false">
+
+    <!-- 查询区域 -->
+    <div class="table-page-search-wrapper">
+      <a-form layout="inline" @keyup.enter.native="searchQuery">
+        <a-row :gutter="24">
+
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <a-form-item label="规则名称">
+              <a-input placeholder="请输入规则名称" v-model="queryParam.name"></a-input>
+            </a-form-item>
+          </a-col>
+        
+          <a-col :xl="6" :lg="7" :md="8" :sm="24">
+            <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
+              <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
+              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+              <a @click="handleToggleSearch" style="margin-left: 8px">
+                {{ toggleSearchStatus ? '收起' : '展开' }}
+                <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
+              </a>
+            </span>
+          </a-col>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</a-button>
+   
+      <a-dropdown v-if="selectedRowKeys.length > 0">
+        <a-menu slot="overlay">
+          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+        </a-menu>
+        <a-button style="margin-left: 8px"> 批量操作 <a-icon type="down" /></a-button>
+      </a-dropdown>
+    </div>
+
+    <!-- table区域-begin -->
+    <div>
+      <div class="ant-alert ant-alert-info" style="margin-bottom: 16px;">
+        <i class="anticon anticon-info-circle ant-alert-icon"></i> 已选择 <a style="font-weight: 600">{{ selectedRowKeys.length }}</a>项
+        <a style="margin-left: 24px" @click="onClearSelected">清空</a>
+      </div>
+
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        class="j-table-force-nowrap"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <a v-if="record.type==2||record.type=='2'" @click="shiftAdd(record)">排班</a>
+          <a-divider type="vertical" v-if="record.type==2||record.type=='2'"/>
+          <a @click="handleEdit(record)">编辑</a>
+          <a-divider type="vertical" />
+          <a-dropdown>
+            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a-menu slot="overlay">
+              <a-menu-item>
+                <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
+                  <a>删除</a>
+                </a-popconfirm>
+              </a-menu-item>
+            </a-menu>
+          </a-dropdown>
+        </span>
+
+      </a-table>
+    </div>
+    <!-- table区域-end -->
+
+    <!-- 表单区域 -->
+    <attendanceRule-modal ref="modalForm" @ok="modalFormOk"></attendanceRule-modal>
+    
+    <userShift-modal ref="userShiftModal" ></userShift-modal>
+  </a-card>
+</template>
+
+<script>
+  import '@/assets/less/TableExpand.less'
+  import AttendanceRuleModal from './modules/AttendanceRuleModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import UserShiftModal from './modules/UserShiftModal'
+import moment from "moment"
+  export default {
+    name: "AttendanceRuleList",
+    mixins:[JeecgListMixin],
+    components: {
+      AttendanceRuleModal,
+      UserShiftModal
+    },
+    data () {
+      return {
+        description: '打卡规则管理页面',
+        // 表头
+        columns: [
+          {
+            title: '#',
+            dataIndex: '',
+            key:'rowIndex',
+            width:60,
+            align:"center",
+            customRender:function (t,r,index) {
+              return parseInt(index)+1;
+            }
+           },
+		   {
+            title: '上班类型',
+            align:"center",
+            dataIndex: 'type',
+            customRender:function(t,r,index){
+              if(t=="1"||t==1){
+                 return "固定时间上下班";
+              }else if(t=="2"||t==2){
+                return "按班次上下班";
+              }else{
+                return "自由上下班";
+              }
+             
+            }
+           },
+		   {
+            title: '规则名称',
+            align:"center",
+            dataIndex: 'name'
+           },
+		  
+		   {
+            title: '上班打卡时间',
+            align:"center",
+            dataIndex: 'startDate',
+            customRender:function(t,r,index){
+              if(t!=null&&t!=""&&r.type=="1"){
+            return moment(t).format('HH:mm')
+            }
+            }
+           },
+		   {
+            title: '下班打卡时间',
+            align:"center",
+            dataIndex: 'endDate',
+            customRender:function(t,r,index){
+              if(t!=null&&t!=""&&r.type=="1"){
+            return moment(t).format('HH:mm')
+            }
+            }
+           },
+           {
+                title: '白名单',
+                align:"center",
+                dataIndex: 'userName'
+               },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align:"center",
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+		url: {
+          list: "/attendanceRule/attendanceRule/list",
+          delete: "/attendanceRule/attendanceRule/delete",
+          deleteBatch: "/attendanceRule/attendanceRule/deleteBatch",
+          exportXlsUrl: "attendanceRule/attendanceRule/exportXls",
+          importExcelUrl: "attendanceRule/attendanceRule/importExcel",
+       },
+    }
+  },
+  computed: {
+    importExcelUrl: function(){
+      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+    }
+  },
+    methods: {
+     shiftAdd(e){
+       if(e.ruleType=="2"){
+       this.$refs.userShiftModal.queryParam.deptid=e.dept;
+       this.$refs.userShiftModal.queryParam.usertid=e.userId;
+       }
+       this.$refs.userShiftModal.queryParam.ruleid=e.id;
+       this.$refs.userShiftModal.queryParam.type=e.ruleType;
+       this.$refs.userShiftModal.visible=true;
+       this.$refs.userShiftModal.queryUserShifts();
+     },
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less';
+</style>

+ 520 - 0
src/views/system/modules/AttendanceRuleModal.vue

@@ -0,0 +1,520 @@
+<template>
+  <a-drawer :title="title" :maskClosable="true" :width="drawerWidth" placement="right" :closable="true"
+    @close="handleCancel" :visible="visible" style="height: 100%;overflow: auto;padding-bottom: 53px;">
+
+    <template slot="title">
+      <div style="width: 100%;">
+        <span>{{ title }}</span>
+        <span style="display:inline-block;width:calc(100% - 51px);padding-right:10px;text-align: right">
+          <a-button @click="toggleScreen" icon="appstore" style="height:20px;width:20px;border:0px"></a-button>
+        </span>
+      </div>
+
+    </template>
+
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*规则名称">
+          <a-input placeholder="请输入规则名称" v-model="name" />
+        </a-form-item>
+
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*上班类型">
+          <a-radio-group v-model="type">
+            <a-radio value="1">固定时间上下班</a-radio>
+            <a-radio value="2">按班次上下班</a-radio>
+            <a-radio value="3">自由上下班</a-radio>
+          </a-radio-group>
+        </a-form-item>
+        
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*定制类型">
+          <a-radio-group v-model="ruletype" >
+            <a-radio value="1">人员</a-radio>
+            <a-radio value="2">部门</a-radio>
+          </a-radio-group>
+        </a-form-item>
+        <a-form-item v-if="ruletype=='1'" label="*打卡人员" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input-search placeholder="点击选择参与打卡人员" v-model="selectedUserName" readOnly @search="onSearch2">
+            <a-button slot="enterButton" icon="search">选择</a-button>
+          </a-input-search>
+        </a-form-item>
+        <!--部门分配-->
+        <a-form-item v-if="ruletype=='2'" label="*打卡部门" :labelCol="labelCol" :wrapperCol="wrapperCol" v-show="!departDisabled">
+          <a-input-search placeholder="点击选择部门" v-model="checkedDepartNameString" readOnly @search="onSearch">
+            <a-button slot="enterButton" icon="search">选择</a-button>
+          </a-input-search>
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*上班时间" v-if="type==1">
+          <a-time-picker showTime format='HH:mm' v-model="startDate" />
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*下班时间" v-if="type==1">
+          <a-time-picker showTime format='HH:mm' v-model="endDate" />
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*工作日"  v-if="type!=2">
+          <a-checkbox-group
+                v-model="values"
+                name="checkboxgroup"
+                @change="onChangets"
+              >
+            <a-checkbox value="1">星期一</a-checkbox>
+            <a-checkbox value="2">星期二</a-checkbox>
+            <a-checkbox value="3">星期三</a-checkbox>
+            <a-checkbox value="4">星期四</a-checkbox>
+            <a-checkbox value="5">星期五</a-checkbox>
+            </br>
+            <a-checkbox value="6">星期六</a-checkbox>
+            <a-checkbox value="0">星期日</a-checkbox>
+          </a-checkbox-group>
+        </a-form-item>
+        <a-form-item v-if="ruletype=='2'" label="白名单" :labelCol="labelCol" :wrapperCol="wrapperCol">
+          <a-input-search placeholder="点击选择不参与打卡人员" v-model="checkeUserName" readOnly @search="onSearch2">
+            <a-button slot="enterButton" icon="search">选择</a-button>
+          </a-input-search>
+        </a-form-item>
+      </a-form>
+    </a-spin>
+    <depart-window ref="departWindow" @ok="modalFormOk"></depart-window>
+    <user-shift-list-modal ref="userShiftListModal" @ok="modalFormOk2"></user-shift-list-modal>
+    <div class="drawer-bootom-button" v-show="!disableSubmit">
+      <a-popconfirm title="确定放弃编辑?" @confirm="handleCancel" okText="确定" cancelText="取消">
+      </a-popconfirm>
+      <a-button @click="handleSubmits()" type="primary" :loading="confirmLoading">提交</a-button>
+    </div>
+  </a-drawer>
+</template>
+
+<script>
+  import pick from 'lodash.pick'
+  import moment from 'moment'
+  import Vue from 'vue'
+  // 引入搜索部门弹出框的组件
+  import departWindow from './DepartWindow'
+  import userShiftListModal from './UserShiftListModal'
+  import JSelectPosition from '@/components/jeecgbiz/JSelectPosition'
+  import {
+    ACCESS_TOKEN
+  } from "@/store/mutation-types"
+  import {
+    getAction,
+    httpAction
+  } from '@/api/manage'
+  import {
+    disabledAuthFilter
+  } from "@/utils/authFilter"
+  import {
+    duplicateCheck
+  } from '@/api/api'
+  import JImageUpload from '../../../components/jeecg/JImageUpload'
+
+  export default {
+    name: "AttendanceRuleModal",
+    components: {
+      departWindow,
+      userShiftListModal
+    },
+    data() {
+      return {
+        values:[],
+        ruletype:"1",
+        work:"2",
+        workday:"",
+        type: "1",
+        id: null,
+        name: "",
+        startDate: "",
+        endDate: "",
+        deptids: "",
+        checkeUserids: [],
+        checkeUserNames: [],
+        checkeUserid: "",
+        checkeUserName: "",
+        selectedUserids: [],
+        selectedUserNames: [],
+        selectedUserid: "",
+        selectedUserName: "",
+        departDisabled: false, //是否是我的部门调用该页面
+        modalWidth: 800,
+        drawerWidth: 700,
+        modaltoggleFlag: true,
+        confirmDirty: false,
+        selectedDepartKeys: [], //保存用户选择部门id
+        checkedDepartKeys: [],
+        checkedDepartNames: [], // 保存部门的名称 =>title
+        checkedDepartNameString: "", // 保存部门的名称 =>title
+        resultDepartOptions: [],
+        userId: "", //保存用户id
+        disableSubmit: false,
+        userDepartModel: {
+          userId: '',
+          departIdList: []
+        }, // 保存SysUserDepart的用户部门中间表数据需要的对象
+        dateFormat: "YYYY-MM-DD",
+        validatorRules: {},
+        departIdShow: false,
+        title: "操作",
+        visible: false,
+        model: {},
+        roleList: [],
+        selectedRole: [],
+        labelCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          },
+        },
+        wrapperCol: {
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          },
+        },
+        uploadLoading: false,
+        confirmLoading: false,
+        headers: {},
+        form: this.$form.createForm(this),
+
+        url: {
+          add: "/attendanceRule/attendanceRule/add",
+          edit: "/attendanceRule/attendanceRule/edit",
+          users:"/userRule/userRule/lists",
+          usersids:"/sys/user/queryUsersByIds"
+        },
+      }
+    },
+    created() {
+
+
+    },
+    computed: {
+
+    },
+    methods: {
+      queryuserName(e){
+        getAction(this.url.users, {
+            ruleId:e
+          }).then((res) => {
+          if (res.success) {
+            if(res.result.length>0){
+              for(var i=0;i<res.result.length;i++){
+                this.selectedUserids.push(res.result[i].id);
+                this.selectedUserNames.push(res.result[i].realname);
+                this.selectedUserid=this.selectedUserids.join(",");
+                this.selectedUserName=this.selectedUserNames.join(",");
+              }
+            }
+          } 
+        })
+      },
+     queryUsersids(e){
+       getAction(this.url.usersids, {
+           id:e
+         }).then((res) => {
+         if (res.success) {
+           if(res.result.length>0){
+             var selectedUserids=[];
+             var selectedUserNames=[];
+             var selectedUserid="";
+             var selectedUserName="";
+             for(var i=0;i<res.result.length;i++){
+              selectedUserids.push(res.result[i].id);
+               selectedUserNames.push(res.result[i].realname);
+               selectedUserid=selectedUserids.join(",");
+               selectedUserName=selectedUserNames.join(",");
+             }
+            if(this.ruletype=="1"||this.ruletype==1){
+            this.selectedUserids=selectedUserids;
+            this.selectedUserNames=selectedUserNames;
+            this.selectedUserid=selectedUserid;
+            this.selectedUserName=selectedUserName;
+             }else if(this.ruletype=="2"||this.ruletype==2){
+               this.checkeUserids=selectedUserids;
+               this.checkeUserNames=selectedUserNames;
+               this.checkeUserid=selectedUserid;
+               this.checkeUserName=selectedUserName;
+             }
+           }
+         } 
+       })
+     },
+      onChangets(checkedValues) {
+            console.log('checked = ', checkedValues);
+            this.values=checkedValues;
+          },
+      handleSubmits() {
+        if(this.name==null||this.name==""){
+          this.$message.warning("请输入规则名称!");
+          return;
+        }if(this.ruletype=="2"){
+          if (this.checkedDepartKeys == null || this.checkedDepartKeys.length == 0) {
+            this.$message.warning("请选择打卡部门!");
+            return;
+          }
+        }
+        if (this.type == "1" && this.startDate == null) {
+          this.$message.warning("请选择上班时间!");
+          return;
+        }
+        if (this.type == "1" && this.endDate == null) {
+          this.$message.warning("请选择下班时间!");
+          return;
+        }if(this.type != "2"&&this.values.length==0){
+          this.$message.warning("请选择工作日!");
+          return;
+        }if(this.ruletype=="1"&&this.selectedUserid==""){
+          this.$message.warning("请选择打卡人员!");
+          return;
+        }
+          
+        
+        var url = this.url.add;
+        var types="post"
+        if (this.id!=null&&this.id!="") {
+          url = this.url.edit;
+          types="put";
+        }
+        var adate=null;
+        var edate=null;
+        var workday="";
+        var dept="";
+        var deptName="";
+        var userId="";
+        var userName="";
+        if(this.type == "1"&&this.startDate != null&&this.startDate!=""){
+          adate=moment(this.startDate).format('YYYY-MM-DD HH:mm:ss');
+        }if(this.type == "1"&&this.endDate != null&&this.endDate!=""){
+          edate=moment(this.endDate).format('YYYY-MM-DD HH:mm:ss');
+        } if(this.type!="2"){
+          workday=this.values.join(",");
+        }if(this.ruletype=="1"){
+          userId=this.selectedUserid
+        }if(this.ruletype=="2"){
+          dept=this.deptids;
+          deptName=this.checkedDepartNameString;
+          userId=this.checkeUserid;
+          userName=this.checkeUserName;
+        }
+        
+       
+        this.confirmLoading=true;
+        httpAction(url, {
+            id: this.id,
+            type: this.type,
+            name: this.name,
+            dept:dept ,
+            startDate: adate,
+            endDate: edate,
+            deptName:deptName ,
+            userId:userId,
+            userName:userName,
+            workDay:workday,
+            ruleType:this.ruletype
+          },
+          types).then((res) => {
+          if (res.success) {
+            this.$message.success(res.message);
+            this.$emit('ok');
+          } else {
+            this.$message.warning(res.message);
+          }
+        }).finally(() => {
+          this.confirmLoading = false;
+          this.close();
+        })
+      },
+      //窗口最大化切换
+      toggleScreen() {
+        if (this.modaltoggleFlag) {
+          this.modalWidth = window.innerWidth;
+        } else {
+          this.modalWidth = 800;
+        }
+        this.modaltoggleFlag = !this.modaltoggleFlag;
+      },
+      add() {
+        this.refresh();
+        this.visible = true;
+      },
+      edit(record) {
+        console.log(record)
+        this.visible = true;
+        this.name = record.name;
+        this.type = record.type;
+        this.checkedDepartNameString = record.deptName;
+        this.deptids = record.dept;
+        this.id = record.id;
+        this.ruletype=record.ruleType;
+        this.checkeUserid=record.userId;
+        this.checkeUserids=record.userId.split(",");
+        this.checkeUserName=record.userName;
+        //时间格式化
+        if(record.type=="1"){
+        this.startDate = record.startDate ? moment(record.startDate).format('YYYY-MM-DD HH:mm:ss') : null
+        this.endDate = record.endDate ? moment(record.endDate).format('YYYY-MM-DD HH:mm:ss') : null
+        }
+        if(record.dept!=null&&record.dept!=""){
+         this.checkedDepartKeys= record.dept.split(",");
+        }if(record.workDay!=null&&record.workDay!=""){
+          this.values=record.workDay.split(",");
+        }if(record.ruleType=="1"){
+          this.queryuserName(record.id);
+        }
+
+
+      },
+      onSearch2() {
+        var dept="";
+        if(this.ruletype=="2"){
+        if(this.deptids==null||this.deptids==""){
+          this.$message.warning("请先选择部门!");
+          return;
+        }
+        dept=this.deptids;
+        this.$refs.userShiftListModal.selectedKeys=this.checkeUserids;
+        }else{
+          this.$refs.userShiftListModal.selectedKeys=this.selectedUserids;
+        }
+        this.$refs.userShiftListModal.add(dept);
+        
+      },
+      // 搜索用户对应的部门API
+      onSearch() {
+        console.log(this.checkedDepartKeys)
+        
+        this.$refs.departWindow.add(this.checkedDepartKeys, "","2");
+        departWindow.data.departList = this.checkedDepartKeys;
+        
+      },
+      
+      modalFormOk2(e) {
+        this.checkeUserids=[];
+        this.checkeUserNames=[];
+        this.checkeUserid= "";
+        this.checkeUserName="";
+        this.selectedUserids= [];
+        this.selectedUserNames=[];
+        this.selectedUserid="";
+        this.selectedUserName= "";
+        if(e!=null&&e.length>0){
+          var ids=e.join(",");
+          this.queryUsersids(ids)
+        }
+      },
+      // 获取用户对应部门弹出框提交给返回的数据
+      modalFormOk(formData) {
+        console.log(formData)
+        this.checkedDepartNames = [];
+        this.selectedDepartKeys = [];
+        this.checkedDepartNameString = '';
+        this.userId = formData.userId;
+        this.userDepartModel.userId = formData.userId;
+        this.departIds = [];
+        this.checkedDepartKeys = [];
+        this.deptids = "";
+        this.resultDepartOptions = [];
+        var depart = [];
+        if (formData.departIdList != null && formData.departIdList.length > 0) {
+          for (let i = 0; i < formData.departIdList.length; i++) {
+            this.selectedDepartKeys.push(formData.departIdList[i].key);
+            this.checkedDepartNames.push(formData.departIdList[i].title);
+            this.checkedDepartNameString = this.checkedDepartNames.join(",");
+            this.deptids = this.selectedDepartKeys.join(",");
+            //新增部门选择,如果上面部门选择后不为空直接付给负责部门
+            depart.push({
+              key: formData.departIdList[i].key,
+              title: formData.departIdList[i].title
+            })
+            this.departIds.push(formData.departIdList[i].key)
+          }
+          this.resultDepartOptions = depart;
+          this.userDepartModel.departIdList = this.selectedDepartKeys;
+          this.checkedDepartKeys = this.selectedDepartKeys //更新当前的选择keys
+        }
+        this.$refs.departWindow.close();
+        
+
+      },
+      // 根据屏幕变化,设置抽屉尺寸
+      resetScreenSize() {
+        let screenWidth = document.body.clientWidth;
+        if (screenWidth < 500) {
+          this.drawerWidth = screenWidth;
+        } else {
+          this.drawerWidth = 700;
+        }
+      },
+      handleCancel() {
+        this.close()
+      },
+      refresh() {
+        this.selectedDepartKeys = [];
+        this.checkedDepartKeys = [];
+        this.checkedDepartNames = [];
+        this.checkedDepartNameString = "";
+        this.userId = ""
+        this.resultDepartOptions = [];
+        this.departId = [];
+        this.departIdShow = false;
+        this.currentTenant = []
+        this.type = "1";
+        this.name = "";
+        this.startDate = null;
+        this.endDate = null;
+        this.id = null;
+        this.checkeUserName="";
+        this.checkeUserNames=[];
+        this.checkeUserid="";
+        this.checkeUserids=[];
+        this.deptids="";
+        this.values=[];
+        this.ruletype="1";
+        this.selectedUserids=[];
+        this.selectedUserNames=[];
+        this.selectedUserid="";
+        this.selectedUserName="";
+      },
+      close() {
+        this.$emit('close');
+        this.visible = false;
+        this.refresh();
+      },
+    }
+  }
+</script>
+
+<style scoped>
+  .avatar-uploader>.ant-upload {
+    width: 104px;
+    height: 104px;
+  }
+
+  .ant-upload-select-picture-card i {
+    font-size: 49px;
+    color: #999;
+  }
+
+  .ant-upload-select-picture-card .ant-upload-text {
+    margin-top: 8px;
+    color: #666;
+  }
+
+  .ant-table-tbody .ant-table-row td {
+    padding-top: 10px;
+    padding-bottom: 10px;
+  }
+
+  .drawer-bootom-button {
+    position: absolute;
+    bottom: -8px;
+    width: 100%;
+    border-top: 1px solid #e8e8e8;
+    padding: 10px 16px;
+    text-align: right;
+    left: 0;
+    background: #fff;
+    border-radius: 0 0 2px 2px;
+  }
+</style>

+ 12 - 1
src/views/system/modules/UserModal.vue

@@ -135,6 +135,16 @@
           </a-select>
         </a-form-item>
         
+        
+        <a-form-item label="年假天数" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+          <a-input placeholder="请输入年假天数" v-decorator.trim="[ 'year', validatorRules.year]" />
+        </a-form-item>
+        
+        
+        <a-form-item label="年假剩余天数" :labelCol="labelCol" :wrapperCol="wrapperCol" >
+          <a-input placeholder="请输入年假剩余天数" v-decorator.trim="[ 'yearCount',validatorRules.yearCount ]" />
+        </a-form-item>
+        
         <a-form-item label="头像" :labelCol="labelCol" :wrapperCol="wrapperCol">
           <j-image-upload class="avatar-uploader" text="上传" v-model="fileList" ></j-image-upload>
         </a-form-item>
@@ -411,7 +421,7 @@
         that.visible = true;
         that.model = Object.assign({}, record);
         that.$nextTick(() => {
-          that.form.setFieldsValue(pick(this.model,'username','sex','realname','email','phone','activitiSync','workNo','telephone','post','egName','urgentName','urgentPhone','infoSy','category','employmentStatus','termDate'))
+          that.form.setFieldsValue(pick(this.model,'username','sex','realname','email','phone','activitiSync','workNo','telephone','post','egName','urgentName','urgentPhone','infoSy','category','employmentStatus','termDate','year','yearCount'))
         });
         //身份为上级显示负责部门,否则不显示
         if(this.model.userIdentity=="2"){
@@ -681,6 +691,7 @@
       },
       // 搜索用户对应的部门API
       onSearch(){
+       console.log(this.$refs.departWindow)
         this.$refs.departWindow.add(this.checkedDepartKeys,this.userId);
       },
 

+ 41 - 53
src/views/system/modules/UserShiftListModal.vue

@@ -1,23 +1,19 @@
 <template>
-  <a-drawer
+ <j-modal
     :title="title"
-    :maskClosable="true"
-    width=1020
-    placement="right"
-    :closable="true"
-    @close="close"
+    :width="900"
     :visible="visible"
-    style="overflow: auto;padding-bottom: 53px;">
+   
+    switchFullscreen
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
     
     <div class="table-page-search-wrapper">
       <a-form layout="inline" @keyup.enter.native="searchQuery">
         <a-row :gutter="24">
     
-          <!-- <a-col :md="6" :sm="12">
-            <a-form-item label="账号">
-              <j-input placeholder="输入账号模糊查询" v-model="queryParam.username"></j-input>
-            </a-form-item>
-          </a-col> -->
+        
     <a-col :md="6" :sm="8">
       <a-form-item label="真实名字">
         <a-input placeholder="请输入真实名字" v-model="queryParam.realname"></a-input>
@@ -35,7 +31,7 @@
           </a-col>
     
     
-          <!-- <template v-if="toggleSearchStatus"> -->
+          
             
     
             <a-col :md="6" :sm="8">
@@ -44,21 +40,12 @@
               </a-form-item>
             </a-col>
     
-           <!-- <a-col :md="6" :sm="8">
-              <a-form-item label="用户状态">
-                <a-select v-model="queryParam.status" placeholder="请选择">
-                  <a-select-option value="">请选择</a-select-option>
-                  <a-select-option value="1">正常</a-select-option>
-                  <a-select-option value="2">冻结</a-select-option>
-                </a-select>
-              </a-form-item>
-            </a-col> -->
-         <!-- </template> -->
+         
     
           <a-col :md="6" :sm="8">
             <span style="float: left;overflow: hidden;" class="table-page-search-submitButtons">
               <a-button type="primary" @click="searchQuery" icon="search">查询</a-button>
-              <a-button type="primary" @click="searchReset" icon="reload" style="margin-left: 8px">重置</a-button>
+             
               
             </span>
           </a-col>
@@ -77,8 +64,8 @@
       :pagination="ipagination"
       :loading="loading"
       class="j-table-force-nowrap"
-      :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
-      @change="handleTableChange">
+      :rowSelection="{selectedRowKeys: selectedKeys, onChange: onSelectChanges}"
+    @change="handleTableChange" >
     <template slot="avatarslot" slot-scope="text, record, index">
       <div class="anty-img-wrap">
         <a-avatar shape="square" :src="getAvatarView(record.avatar)" icon="user"/>
@@ -86,19 +73,9 @@
     </template>
       
     </a-table>
-    
-
-    <div class="drawer-bootom-button">
-      <a-popconfirm title="确定放弃编辑?" @confirm="close" okText="确定" cancelText="取消">
-        <a-button style="margin-right: .8rem">取消</a-button>
-      </a-popconfirm>
-      <a-button @click="handleSubmit(false)" type="primary" :loading="loading" ghost style="margin-right: 0.8rem">仅保存</a-button>
-      <a-button @click="handleSubmit(true)" type="primary" :loading="loading">保存并关闭</a-button>
-    </div>
+  
 
-    <role-datarule-modal ref="datarule"></role-datarule-modal>
-
-  </a-drawer>
+ </j-modal>
 
 </template>
 <script>
@@ -122,10 +99,12 @@ import JSuperQuery from '@/components/jeecg/JSuperQuery'
         roleId:"",
         autoExpandParent: true,
         checkStrictly: true,
-        title:"员工排班",
+        title:"员",
         visible: false,
         loading: false,
         selectedKeys:[],
+        selectUsers:[],
+        
       columns: [
         {
           title: '#',
@@ -165,12 +144,6 @@ import JSuperQuery from '@/components/jeecg/JSuperQuery'
           width: 120,
           dataIndex: 'phone'
         },
-        {
-          title: '组织',
-          align: "center",
-          width: 120,
-          dataIndex: 'orgText'
-        },
         {
           title: '部门',
           align: "center",
@@ -182,7 +155,7 @@ import JSuperQuery from '@/components/jeecg/JSuperQuery'
           align: "center",
           width: 120,
           dataIndex: 'entryDate'
-        },
+        }
        
       ],
       superQueryFieldList: [
@@ -191,7 +164,7 @@ import JSuperQuery from '@/components/jeecg/JSuperQuery'
         { type: 'select', value: 'sex', text: '性别', dictCode: 'sex' },
       ],
       url: {
-        list: "/sys/user/list"
+        list: "/sys/user/queryRuleByUser"
       },
       }
     },
@@ -202,7 +175,18 @@ import JSuperQuery from '@/components/jeecg/JSuperQuery'
       getAvatarView: function (avatar) {
         return getFileAccessHttpUrl(avatar)
       },
+     onSelectChanges(selectedRowKeys, selectionRows) {
+       console.log(selectedRowKeys,selectionRows);
+       this.selectedKeys = selectedRowKeys;
+      // this.selectUsers=selectionRows;
+       
+     },
       
+      add (e) {
+       this.visible = true;
+       this.queryParam.departIds=e;
+      this.$options.methods.searchQuery.call(this)
+      },
       
       show(roleId){
         this.roleId=roleId
@@ -211,15 +195,19 @@ import JSuperQuery from '@/components/jeecg/JSuperQuery'
       close () {
         this.$emit('close');
         this.visible = false;
+        this.queryParam.realname=null;
+        this.queryParam.phone=null;
+        this.selectUsers=[];
+        this.selectedKeys=[];
+      },
+      handleOk(){
+        this.$emit('ok', this.selectedKeys);
+        this.close();
       },
-      
       handleCancel () {
         this.close()
-      },
-      handleSubmit(exit) {
-        let that = this;
-        
-      },
+      }
+      
     },
  
   }