LiGuang 3 年之前
父節點
當前提交
180d80afac

+ 1 - 0
src/components/jeecgbiz/JSelectUserByDep.vue

@@ -101,6 +101,7 @@
           this.userIds = idstr
         }
         this.$emit("change", this.userIds)
+        this.$refs.selectModal.selectedRowKeys=[];
       }
     }
   }

+ 3 - 0
src/components/jeecgbiz/modal/JSelectUserByDepModal.vue

@@ -192,6 +192,7 @@
         }
       },
       async loadData(arg) {
+        this.selectedRowKeys=[];
         if (arg === 1) {
           this.ipagination.current = 1;
         }
@@ -253,6 +254,8 @@
       close() {
         this.searchReset(0);
         this.visible = false;
+        this.selectionRows=[];
+        this.selectedRowKeys=[];
       },
       handleTableChange(pagination, filters, sorter) {
         //TODO 筛选

+ 92 - 62
src/views/system/Shift.vue

@@ -28,7 +28,7 @@
             <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">
+              <!-- <a @click="handleToggleSearch" style="margin-left: 8px">
                 {{ toggleSearchStatus ? '收起' : '展开' }}
                 <a-icon :type="toggleSearchStatus ? 'up' : 'down'"/>
               </a> -->
@@ -43,43 +43,41 @@
     <div class="table-operator">
       <a-button @click="handleAdd" type="primary" icon="plus" v-has="'shift:add'">新增</a-button>
       <a-button type="primary" icon="download" @click="handleExportXls('班次档案')">导出</a-button>
-            <!--<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
+      <!--<a-upload name="file" :showUploadList="false" :multiple="false" :headers="tokenHeader" :action="importExcelUrl" @change="handleImportExcel">
         <a-button type="primary" icon="import">导入</a-button>
       </a-upload> -->
       <a-dropdown v-if="selectedRowKeys.length > 0">
         <a-menu slot="overlay" v-has="'shift:delete'">
-          <a-menu-item key="1" @click="batchDel"><a-icon type="delete"/>删除</a-menu-item>
+          <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-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>项
+        <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">
+      <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 @click="handleEdit(record)" v-has="'shift:edit'">编辑</a>
 
           <a-divider type="vertical" />
           <a-dropdown>
-            <a class="ant-dropdown-link">更多 <a-icon type="down" /></a>
+            <a class="ant-dropdown-link">更多
+              <a-icon type="down" />
+            </a>
             <a-menu slot="overlay" v-has="'shift:delete'">
               <a-menu-item>
                 <a-popconfirm title="确定删除吗?" @confirm="() => handleDelete(record.id)">
@@ -99,8 +97,8 @@
 
     <!-- 表单区域 -->
     <shift-modal ref="modalForm" @ok="modalFormOk"></shift-modal>
-    
-    <user-shift-list-modal modal ref="UserShiftListModal" ></user-shift-list-modal>
+
+    <user-shift-list-modal modal ref="UserShiftListModal"></user-shift-list-modal>
   </a-card>
 </template>
 
@@ -108,17 +106,19 @@
   import '@/assets/less/TableExpand.less'
   import ShiftModal from './modules/ShiftModal'
   import UserShiftListModal from './modules/UserShiftListModal'
-  
-  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
-import moment from "moment"
+
+  import {
+    JeecgListMixin
+  } from '@/mixins/JeecgListMixin'
+  import moment from "moment"
   export default {
     name: "ShiftList",
-    mixins:[JeecgListMixin],
+    mixins: [JeecgListMixin],
     components: {
       ShiftModal,
-	  UserShiftListModal
+      UserShiftListModal
     },
-    data () {
+    data() {
       return {
         description: '班次档案管理页面',
         // 表头
@@ -133,65 +133,95 @@ import moment from "moment"
           //     return parseInt(index)+1;
           //   }
           //  },
-		   {
+          {
             title: '班次名称',
-            align:"center",
+            align: "center",
             dataIndex: 'name'
-           },
-		   {
-            title: '上班时间',
-            align:"center",
+          },
+          {
+            title: '是否分段',
+            align: "center",
+            dataIndex: 'shiftType',
+            customRender: function(t, r, index) {
+             if(t==0||t=='0'){
+                return '否';
+             }else{
+               return '是';
+             }
+            }
+          },
+          {
+            title: '上班时间1',
+            align: "center",
             dataIndex: 'startDate',
-            customRender:function(t,r,index){
-              return moment(t).format('HH:mm');
+            customRender: function(t, r, index) {
+              return !t?'-':moment(t).format('HH:mm');
             }
-           },
-		   {
-            title: '下班时间',
-            align:"center",
+          },
+          {
+            title: '下班时间1',
+            align: "center",
             dataIndex: 'endDate',
-            customRender:function(t,r,index){
-              return moment(t).format('HH:mm');
+            customRender: function(t, r, index) {
+              return !t?'-':moment(t).format('HH:mm');
+            }
+          },
+          {
+            title: '上班时间2',
+            align: "center",
+            dataIndex: 'start2Date',
+            customRender: function(t, r, index) {
+              return !t?'-':moment(t).format('HH:mm');
             }
-           },
-		   {
+          },
+          {
+            title: '下班时间2',
+            align: "center",
+            dataIndex: 'end2Date',
+            customRender: function(t, r, index) {
+              return !t?'-':moment(t).format('HH:mm');
+            }
+          },
+          {
             title: '创建时间',
-            align:"center",
+            align: "center",
             dataIndex: 'createTime'
-           },
-		   {
+          },
+          {
             title: '创建人',
-            align:"center",
+            align: "center",
             dataIndex: 'createBy'
-           },
+          },
           {
             title: '操作',
             dataIndex: 'action',
-            align:"center",
-            scopedSlots: { customRender: 'action' },
+            align: "center",
+            scopedSlots: {
+              customRender: 'action'
+            },
           }
         ],
-		url: {
+        url: {
           list: "/shift/shift/list",
           delete: "/shift/shift/delete",
           deleteBatch: "/shift/shift/deleteBatch",
           exportXlsUrl: "shift/shift/exportXls",
           importExcelUrl: "shift/shift/importExcel",
-       },
-    }
-  },
-  computed: {
-    importExcelUrl: function(){
-      return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
-    }
-  },
+        },
+      }
+    },
+    computed: {
+      importExcelUrl: function() {
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`;
+      }
+    },
     methods: {
-     handleAdd2:function(){
-       this.$refs.UserShiftListModal.show();
-     }
+      handleAdd2: function() {
+        this.$refs.UserShiftListModal.show();
+      }
     }
   }
 </script>
 <style scoped>
   @import '~@assets/less/common.less';
-</style>
+</style>

+ 8 - 2
src/views/system/UserChange.vue

@@ -193,7 +193,8 @@
           {
             title: '部门',
             align: "center",
-            dataIndex: 'dept'
+            dataIndex: 'dept',
+            ellipsis: true,
           },
           {
             title: '职位',
@@ -213,7 +214,12 @@
             align: "center",
             dataIndex: 'newDate',
             customRender: function(t, r, index) {
-              return moment(t).format('YYYY-MM-DD');
+              if(t==""||t==null){
+                return "-";
+              }else{
+                 return moment(t).format('YYYY-MM-DD');
+              }
+             
             }
           },
           {

+ 2 - 2
src/views/system/UserList.vue

@@ -47,7 +47,7 @@
           <a-col :md="6" :sm="12" style="width: 50%;">
             <a-form-item label="人员类别">
               <j-multi-select-tag
-              v-model="queryParam.category" placeholder="请选择人员类别"
+              v-model="queryParam.categorys" placeholder="请选择人员类别"
                 dictCode="category"/>
                 </j-multi-select-tag>
             </a-form-item>
@@ -224,7 +224,7 @@ import JSelectDepart from '@/components/jeecgbiz/JSelectDepart'
         description: '这是用户管理页面',
         queryParam: {
           empStatus:"10",
-          category:"101",
+          categorys:"101",
           orgCodeTxt:null,
         },
         departNames:null,

+ 24 - 4
src/views/system/modules/AttendanceRuleModal.vue

@@ -78,7 +78,7 @@
         </div>
 
         <div>
-          <a-table bordered :data-source="dataSource" :loading="loading" :columns="columns" :scroll="{ x:300,y:500 }" :pagination="ipagination"
+          <a-table bordered :data-source="dataSource" :loading="loading" :columns="columns" :scroll="{ x:500,y:450}" :pagination="ipagination"
             @change="handleTableChange">
             <template v-for='(dayobject,i) in days' :slot="dayobject.day.getDate()" style="color: #ff6b81">
               <div style="height: 35px;">
@@ -105,12 +105,12 @@
                   {{text}}
                 </a-tag>
                 <a-tag color="#FFFFFF" v-else @click="UserType(d,record,index)" style="width: 60px;height: 22px;"> </a-tag>
-                <a-menu slot="overlay" v-if="record.isColse">
+                <a-menu slot="overlay" v-if="record.isColse" style="height:300px;overflow-y: scroll;">
                   <a-menu-item key="0" v-if="isShows">
                     <a @click="shiftOks(0,d,record,index)">休息</a>
                   </a-menu-item>
                   <a-menu-item v-if="isShow" v-for="(item,index) in shiftlist" :key="item.id">
-                    <a @click="shiftOks(item,d,record,index)">{{item.name}} ({{item.startDate}} - {{item.endDate}})</a>
+                    <a @click="shiftOks(item,d,record,index)">{{item.name}} <span>({{item.startDate}} - {{item.endDate}}<span v-if="item.shiftType==1"> / {{item.start2Date}} - {{item.end2Date}}</span>)</span></a>
                   </a-menu-item>
                 </a-menu>
               </a-dropdown>
@@ -240,6 +240,25 @@
       this.initData(null)
       this.queryShift()
     },
+    mounted () {
+      // this.h = document.querySelector('.ptp-layout-main').offsetHeight - 45
+      const _this = this
+      var tableBodyInnerNodeList = document.querySelectorAll('.ant-table-body-inner')
+      tableBodyInnerNodeList.forEach(item => {
+        this.$nextTick(() => {
+          item.style.maxHeight = (parseInt(item.style.maxHeight) - 13) + 'px'
+        })
+      })
+      window.addEventListener('resize', function () {
+        // _this.h = document.querySelector('.ptp-layout-main').offsetHeight - 45
+        tableBodyInnerNodeList = document.querySelectorAll('.ant-table-body-inner')
+        tableBodyInnerNodeList.forEach(item => {
+          _this.$nextTick(() => {
+            item.style.maxHeight = (parseInt(item.style.maxHeight) - 13) + 'px'
+          })
+        })
+      })
+    },
     methods: {
       log(e,b,c){
       e.preventDefault();
@@ -1214,4 +1233,5 @@
     background: #e1e1e1;
     color: #fff;
   }
-</style>
+  
+</style>

+ 100 - 25
src/views/system/modules/ShiftModal.vue

@@ -11,17 +11,35 @@
     
     <a-spin :spinning="confirmLoading">
       <a-form :form="form">
-      
+      <a-row>
+        <a-col :md="6" :sm="8" :lg="12">
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
           label="名称">
           <a-input :maxLength="10" placeholder="请输入名称" v-decorator="['name', validatorRules.name]" />
         </a-form-item>
+        </a-col>
+        <a-col :md="6" :sm="8" :lg="12">
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
-          label="上班时间">
+          label="是否分段">
+         <a-select @change="changeType" v-decorator="['shiftType',{initialValue:'0',rules: [{ required: true, message: '请选择是否分段!'}]}]" placeholder="请选择"
+           :getPopupContainer="(target) => target.parentNode">
+           <a-select-option value="0">否</a-select-option>
+           <a-select-option value="1">是</a-select-option>
+         </a-select>
+        </a-form-item>
+        </a-col>
+        </a-row>
+        
+        <a-row>
+          <a-col :md="6" :sm="8" :lg="12">
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="上班时间1">
          
           <a-time-picker showTime 
           format='HH:mm' v-decorator="[ 'startDate', validatorRules.startDate]">
@@ -39,10 +57,12 @@
            </div>
            </a-time-picker >
         </a-form-item>
+        </a-col>
+        <a-col :md="6" :sm="8" :lg="12">
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
-          label="下班时间">
+          label="下班时间1">
           <a-time-picker showTime format='HH:mm' v-decorator="[ 'endDate', validatorRules.endDate]" >
           <div slot="addon" style="width:100%;overflow:hidden">
            <div style="width:50%;float:left;border-right:solid 1px ;text-align:center">
@@ -58,26 +78,54 @@
           </div>
           </a-time-picker>
         </a-form-item>
+        </a-col>
+        </a-row>
+        <a-row >
+          <a-col :md="6" :sm="8" :lg="12">
+       <a-form-item
+         :labelCol="labelCol"
+         :wrapperCol="wrapperCol"
+         label="上班时间2">
         
-        <!-- <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="创建时间">
-          <a-date-picker showTime format='YYYY-MM-DD HH:mm:ss' v-decorator="[ 'createDate', {}]" />
-        </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="修改时间">
-          <a-date-picker showTime format='YYYY-MM-DD HH:mm:ss' v-decorator="[ 'updateDate', {}]" />
-        </a-form-item> -->
-       <!-- <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="删除标记">
-          <a-input placeholder="请输入删除标记" v-decorator="['delFlag', {}]" />
-        </a-form-item> -->
-		
+         <a-time-picker showTime  :disabled="!isShow"
+         format='HH:mm' v-decorator="[ 'start2Date', isShow?validatorRules.start2Date:{}]">
+          <div slot="addon" style="width:100%;overflow:hidden">
+           <div style="width:50%;float:left;border-right:solid 1px ;text-align:center">
+                <div style="padding-top:10%;padding-bottom:10%">
+                 <span style="width:100%;">时</span>
+                </div>
+               </div>
+               <div style="width:50%;float:right;text-align:center">
+                <div style="padding-top:10%;padding-bottom:10%">
+                 <span style="width:100%;">分</span>
+                </div>
+               </div>
+          </div>
+          </a-time-picker >
+       </a-form-item>
+       </a-col>
+        <a-col :md="6" :sm="8" :lg="12">
+       <a-form-item
+         :labelCol="labelCol"
+         :wrapperCol="wrapperCol"
+         label="下班时间2">
+         <a-time-picker showTime format='HH:mm'  :disabled="!isShow" v-decorator="[ 'end2Date', isShow?validatorRules.end2Date:{}]" >
+         <div slot="addon" style="width:100%;overflow:hidden">
+          <div style="width:50%;float:left;border-right:solid 1px ;text-align:center">
+               <div style="padding-top:10%;padding-bottom:10%">
+                <span style="width:100%;">时</span>
+               </div>
+              </div>
+              <div style="width:50%;float:right;text-align:center">
+               <div style="padding-top:10%;padding-bottom:10%">
+                <span style="width:100%;">分</span>
+               </div>
+              </div>
+         </div>
+         </a-time-picker>
+       </a-form-item>
+		</a-col>
+		</a-row>
       </a-form>
     </a-spin>
   </j-modal>
@@ -97,13 +145,13 @@
         model: {},
         labelCol: {
           xs: { span: 24 },
-          sm: { span: 5 },
+          sm: { span: 8 },
         },
         wrapperCol: {
           xs: { span: 24 },
           sm: { span: 16 },
         },
-
+        isShow:false,
         confirmLoading: false,
         form: this.$form.createForm(this),
         validatorRules:{
@@ -122,6 +170,17 @@
               required: true, message: '请选择下班时间!'
             }]
           },
+          start2Date:{
+            rules: [{
+              required: true, message: '请选择上班时间!'
+            }]
+          },
+          end2Date:{
+            rules: [{
+              required: true, message: '请选择下班时间!'
+            }]
+          },
+          
         },
         url: {
           add: "/shift/shift/add",
@@ -132,6 +191,14 @@
     created () {
     },
     methods: {
+      changeType(e){
+        if(e==1){
+          this.isShow=true;
+        }else{
+          this.isShow=false;
+          this.form.setFieldsValue({start2Date:null,end2Date:null})
+        }
+      },
       add () {
         this.edit({});
       },
@@ -139,11 +206,16 @@
         this.form.resetFields();
         this.model = Object.assign({}, record);
         this.visible = true;
+        if(record.shiftType!=null&&record.shiftType==1){
+          this.isShow=true;
+        }
         this.$nextTick(() => {
-          this.form.setFieldsValue(pick(this.model,'name','delFlag'))
+          this.form.setFieldsValue(pick(this.model,'name','delFlag','shiftType'))
 		  //时间格式化
           this.form.setFieldsValue({startDate:this.model.startDate?moment(this.model.startDate):null})
           this.form.setFieldsValue({endDate:this.model.endDate?moment(this.model.endDate):null})
+          this.form.setFieldsValue({start2Date:this.model.start2Date?moment(this.model.start2Date):null})
+          this.form.setFieldsValue({end2Date:this.model.end2Date?moment(this.model.end2Date):null})
           // this.form.setFieldsValue({createDate:this.model.createDate?moment(this.model.createDate):null})
           // this.form.setFieldsValue({updateDate:this.model.updateDate?moment(this.model.updateDate):null})
         });
@@ -152,6 +224,7 @@
       close () {
         this.$emit('close');
         this.visible = false;
+        this.isShow=false;
       },
       handleOk () {
         const that = this;
@@ -183,6 +256,8 @@
             //时间格式化
             formData.startDate = formData.startDate?formData.startDate.format('YYYY-MM-DD HH:mm')+":00":null;
             formData.endDate = formData.endDate?formData.endDate.format('YYYY-MM-DD HH:mm')+":00":null;
+            formData.start2Date = formData.start2Date?formData.start2Date.format('YYYY-MM-DD HH:mm')+":00":null;
+            formData.end2Date = formData.end2Date?formData.end2Date.format('YYYY-MM-DD HH:mm')+":00":null;
             // formData.createDate = formData.createDate?formData.createDate.format('YYYY-MM-DD HH:mm:ss'):null;
             // formData.updateDate = formData.updateDate?formData.updateDate.format('YYYY-MM-DD HH:mm:ss'):null;
             

+ 63 - 6
src/views/system/modules/StatutoryLeaveModal.vue

@@ -37,12 +37,12 @@
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
           label="假期结束时间">
-          <a-date-picker  format='YYYY-MM-DD' v-decorator="[ 'endDate', validatorRules.endDate]" />
+          <a-date-picker  :disabled-date="disabledDate" format='YYYY-MM-DD' v-decorator="[ 'endDate', validatorRules.endDate]" />
         </a-form-item>
         <a-form-item
           :labelCol="labelCol"
           :wrapperCol="wrapperCol"
-          label="日薪资倍数" v-if="type=='1'">
+          label="日薪资倍数" v-if="type=='1'||type==1">
           <a-input-number id="inputNumber" :min="1" placeholder="请输入日薪资倍数" v-decorator="['sum',{}]" style="width: 180px;"/>
         </a-form-item>
 		
@@ -52,7 +52,7 @@
 </template>
 
 <script>
-  import { httpAction } from '@/api/manage'
+  import { httpAction,getAction } from '@/api/manage'
   import pick from 'lodash.pick'
   import moment from "moment"
 
@@ -64,6 +64,7 @@
         visible: false,
         type:"2",
         model: {},
+        date:null,
         labelCol: {
           xs: { span: 24 },
           sm: { span: 5 },
@@ -84,31 +85,87 @@
           startDate:{
             rules: [{
               required: true, message: '请选择开始时间!'
-            }]
+            },
+            {validator: this.validatestartDate}
+            ]
           },
           endDate:{
             rules: [{
               required: true, message: '请选择结束时间!'
-            }]
+            },
+            {validator: this.validateendDate}
+            ]
           }
           },
           
         url: {
           add: "/statutoryleave/statutoryLeave/add",
           edit: "/statutoryleave/statutoryLeave/edit",
+          getOne:"/statutoryleave/statutoryLeave/queryByDate"
         },
       }
     },
     created () {
     },
     methods: {
+      disabledDate(current) {
+        var startDate= this.form.getFieldValue('startDate');
+        return current && current < moment(startDate).endOf('day');
+      },
       add () {
         this.edit({});
       },
+      validateendDate(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          callback()
+          this.date=2;
+          this.queryDate(value.format('YYYY-MM-DD HH:mm:ss'))
+        }
+      },
+      validatestartDate(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          callback()
+          this.date=1;
+         this.queryDate(value.format('YYYY-MM-DD HH:mm:ss'))
+         this.form.setFieldsValue({
+           endDate:null
+         })
+         
+         
+        }
+      },
+      queryDate(e,a){
+        getAction(this.url.getOne,{startDate:e}).then((res)=>{
+          if(res.success){
+            if(res.result!=null){
+              if(this.date==1){
+                this.form.setFieldsValue({
+                  startDate:null
+                })
+              }else{
+                this.form.setFieldsValue({
+                  endDate:null
+                })
+              }
+              this.$message.warning("该时间段存在假期!");
+          }
+          
+          }
+        })
+      },
       edit (record) {
         this.form.resetFields();
         if(record.type!=null&&record.type!=""){
-          this.type=record.type;
+          if(record.type=='班'){
+            this.type="1";
+          }else{
+            this.type="2";
+          }
+          
         }
         this.model = Object.assign({}, record);
         this.visible = true;

+ 150 - 114
src/views/system/modules/UserContractModal.vue

@@ -1,153 +1,181 @@
 <template>
-  <j-modal
-    :title="title"
-    :width="800"
-    :visible="visible"
-    :confirmLoading="confirmLoading"
-    switchFullscreen
-    @ok="handleOk"
-    @cancel="handleCancel"
-    cancelText="关闭">
-    
+  <j-modal :title="title" :width="800" :visible="visible" :confirmLoading="confirmLoading" switchFullscreen
+    @ok="handleOk" @cancel="handleCancel" cancelText="关闭">
+
     <a-spin :spinning="confirmLoading">
       <a-form :form="form">
-      
-       <a-form-item
-         :labelCol="labelCol"
-         :wrapperCol="wrapperCol"
-         label="员工姓名">
-         <j-select-user-by-dep  v-decorator="['userId', validatorRules.realname]"/>
-         
-       </a-form-item>
-       <a-form-item
-         :labelCol="labelCol"
-         :wrapperCol="wrapperCol"
-         label="部门名称">
-         <a-input :disabled="true" placeholder="请输入部门名称" v-decorator="['deptNames', validatorRules.deptname ]" />
-       </a-form-item>
-       <a-form-item
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="合同类型">
-          <j-dict-select-tag v-decorator="['contractType', validatorRules.type]" :triggerChange="true" placeholder="请选择合同类型"
-            dictCode="contract_type" />
-          
+
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="员工姓名">
+          <j-select-user-by-dep v-decorator="['userId', validatorRules.realname]" />
+
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="部门名称">
+          <a-input :disabled="true" placeholder="请输入部门名称" v-decorator="['deptNames', validatorRules.deptname ]" />
         </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="开始时间">
-          <a-date-picker showTime format='YYYY-MM-DD' v-decorator="[ 'startDate', validatorRules.startDate]" />
+        <a-form-item <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="合同类型">
+          <j-dict-select-tag v-decorator="['contractType', validatorRules.type]" :triggerChange="true"
+            placeholder="请选择合同类型" dictCode="contract_type" />
+
+        </a-form-item>
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="开始时间">
+          <a-date-picker  format='YYYY-MM-DD' v-decorator="[ 'startDate', validatorRules.startDate]" />
         </a-form-item>
-        <a-form-item
-          :labelCol="labelCol"
-          :wrapperCol="wrapperCol"
-          label="结束时间">
-          <a-date-picker showTime format='YYYY-MM-DD' v-decorator="[ 'endDate', validatorRules.endDate]" />
+
+        <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="结束时间">
+          <a-date-picker :disabled-date="disabledDate"  format='YYYY-MM-DD'
+            v-decorator="[ 'endDate', validatorRules.endDate]" />
         </a-form-item>
-		
+
       </a-form>
     </a-spin>
   </j-modal>
 </template>
 
 <script>
-  import { httpAction,getAction } from '@/api/manage'
+  import {
+    httpAction,
+    getAction
+  } from '@/api/manage'
   import pick from 'lodash.pick'
   import moment from "moment"
-import JSelectMultiUser from '@/components/jeecgbiz/JSelectMultiUser'
-import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
+  import JSelectMultiUser from '@/components/jeecgbiz/JSelectMultiUser'
+  import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
   export default {
     name: "UserContractModal",
-    components: {JSelectMultiUser,JSelectUserByDep},
-    data () {
+    components: {
+      JSelectMultiUser,
+      JSelectUserByDep
+    },
+    data() {
       return {
-        title:"操作",
+        title: "操作",
         visible: false,
         model: {},
-        userid:"",
-        deptid:"",
+        userid: "",
+        deptid: "",
         labelCol: {
-          xs: { span: 24 },
-          sm: { span: 5 },
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 5
+          },
         },
         wrapperCol: {
-          xs: { span: 24 },
-          sm: { span: 16 },
+          xs: {
+            span: 24
+          },
+          sm: {
+            span: 16
+          },
         },
 
         confirmLoading: false,
         form: this.$form.createForm(this),
-        validatorRules:{
-          realname:{rules: [{ required: true, message: '请输入员工名称!' },{
-                validator: this.validateRealname
-              }]},
-          deptname:{rules: [{ required: true, message: '请输入部门名称!' },
-          ]},
-          type:{rules: [{ required: true, message: '请选择合同类型' }]},
-          startDate:{rules: [{ required: true, message: '请选择合同开始日期' }]},
-          endDate:{rules: [{ required: true, message: '请选择合同结束日期' }]},
+        validatorRules: {
+          realname: {
+            rules: [{
+              required: true,
+              message: '请输入员工名称!'
+            }, {
+              validator: this.validateRealname
+            }]
+          },
+          deptname: {
+            rules: [{
+              required: true,
+              message: '请输入部门名称!'
+            }, ]
+          },
+          type: {
+            rules: [{
+              required: true,
+              message: '请选择合同类型'
+            }]
+          },
+          startDate: {
+            rules: [{
+              required: true,
+              message: '请选择合同开始日期'
+            },
+            {
+              validator: this.validatestartDate
+            }
+            ]
+          },
+          endDate: {
+            rules: [{
+              required: true,
+              message: '请选择合同结束日期'
+            }]
+          },
         },
         url: {
           add: "/usercontract/userContract/add",
           edit: "/usercontract/userContract/edit",
-          dept:"/sys/user/queryUsersByusername"
+          dept: "/sys/user/queryUsersByusername"
         },
       }
     },
-    created () {
-    },
+    created() {},
     methods: {
-      add () {
+      disabledDate(current) {
+        var startDate= this.form.getFieldValue('startDate');
+        return current && current < moment(startDate).endOf('day');
+      },
+      add() {
         this.edit({});
       },
-      edit (record) {
+      edit(record) {
         this.form.resetFields();
         this.model = Object.assign({}, record);
         this.visible = true;
-        this.deptid=record.deptId;
+        this.deptid = record.deptId;
         this.$nextTick(() => {
-          this.form.setFieldsValue(pick(this.model,'userId','contractType','deptNames'))
-		  //时间格式化
-          this.form.setFieldsValue({startDate:this.model.startDate?moment(this.model.startDate):null})
-          this.form.setFieldsValue({endDate:this.model.endDate?moment(this.model.endDate):null})
+          this.form.setFieldsValue(pick(this.model, 'userId', 'contractType', 'deptNames'))
+          //时间格式化
+          this.form.setFieldsValue({
+            startDate: this.model.startDate ? moment(this.model.startDate) : null
+          })
+          this.form.setFieldsValue({
+            endDate: this.model.endDate ? moment(this.model.endDate) : null
+          })
         });
 
       },
-      close () {
+      close() {
         this.$emit('close');
         this.visible = false;
       },
-      handleOk () {
+      handleOk() {
         const that = this;
         // 触发表单验证
         this.form.validateFields((err, values) => {
-         
+
           if (!err) {
             that.confirmLoading = true;
             let httpurl = '';
             let method = '';
-            if(!this.model.id){
-              httpurl+=this.url.add;
+            if (!this.model.id) {
+              httpurl += this.url.add;
               method = 'post';
-            }else{
-              httpurl+=this.url.edit;
-               method = 'put';
+            } else {
+              httpurl += this.url.edit;
+              method = 'put';
             }
             let formData = Object.assign(this.model, values);
-            
-            formData.deptId=this.deptid;
+
+            formData.deptId = this.deptid;
             //时间格式化
-            formData.startDate = formData.startDate?formData.startDate.format('YYYY-MM-DD HH:mm:ss'):null;
-            formData.endDate = formData.endDate?formData.endDate.format('YYYY-MM-DD HH:mm:ss'):null;
-            
+            formData.startDate = formData.startDate ? formData.startDate.format('YYYY-MM-DD HH:mm:ss') : null;
+            formData.endDate = formData.endDate ? formData.endDate.format('YYYY-MM-DD HH:mm:ss') : null;
+
             console.log(formData)
-            httpAction(httpurl,formData,method).then((res)=>{
-              if(res.success){
+            httpAction(httpurl, formData, method).then((res) => {
+              if (res.success) {
                 that.$message.success(res.message);
                 that.$emit('ok');
-              }else{
+              } else {
                 that.$message.warning(res.message);
               }
             }).finally(() => {
@@ -160,52 +188,60 @@ import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
           }
         })
       },
-      handleCancel () {
+      handleCancel() {
         this.close()
       },
+      validatestartDate(rule, value, callback) {
+        if (!value) {
+          callback()
+        } else {
+          callback()
+          this.form.setFieldsValue({
+            endDate:null
+          })
+        }
+      },
       validateRealname(rule, value, callback) {
         if (!value) {
           callback()
-          this.deptid="";
+          this.deptid = "";
           this.form.setFieldsValue({
-            deptNames:""
+            deptNames: ""
           })
         } else {
           this.queryDeptName(value);
           callback()
         }
       },
-      queryDeptName(e){
-        getAction(this.url.dept,{id:e}).then((res)=>{
-          if(res.success){
-            if(res.result.length>0){
-              var list=res.result;
-              var deptids=[];
-              var deptname=[];
-              for(var i=0;i<list.length;i++){
+      queryDeptName(e) {
+        getAction(this.url.dept, {
+          id: e
+        }).then((res) => {
+          if (res.success) {
+            if (res.result.length > 0) {
+              var list = res.result;
+              var deptids = [];
+              var deptname = [];
+              for (var i = 0; i < list.length; i++) {
                 deptids.push(list[i].deptid);
                 deptname.push(list[i].deptname);
               }
-              this.deptid=deptids.join(",");
+              this.deptid = deptids.join(",");
               this.form.setFieldsValue({
-                deptNames:deptname.join(",")
+                deptNames: deptname.join(",")
               })
-            }else{
-              this.deptid="";
+            } else {
+              this.deptid = "";
               this.form.setFieldsValue({
-                deptNames:""
+                deptNames: ""
               })
             }
-          
-          
+
+
           }
-        }).finally(() => {
-         this.form.setFieldsValue({
-           userId:e
-         })
         })
       }
-      
+
 
     }
   }
@@ -213,4 +249,4 @@ import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
 
 <style lang="less" scoped>
 
-</style>
+</style>

+ 8 - 2
src/views/system/modules/UserDetailModal.vue

@@ -187,7 +187,7 @@
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="工龄" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-input suffix="月" v-decorator="['workMoth']" disabled />
+              <a-input suffix="月" v-model="workMoth" disabled />
             </a-form-item>
           </a-col>
 
@@ -252,7 +252,7 @@
         <a-row>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="是否打卡" :labelCol="labelCol" :wrapperCol="wrapperCol">
-              <a-select v-decorator="[ 'isAttendance']" disabled :getPopupContainer="(target) => target.parentNode">
+              <a-select @change="isAttes" v-decorator="[ 'isAttendance']" disabled :getPopupContainer="(target) => target.parentNode">
                 <a-select-option value="0">是</a-select-option>
                 <a-select-option value="1">否</a-select-option>
               </a-select>
@@ -425,6 +425,7 @@ const uidGenerator=()=>{
         dataContract: [],
         selectionRows: [],
         dataSources2: [],
+        workMoth:0,
         departDisabled: false, //是否是我的部门调用该页面
         roleDisabled: false, //是否是角色维护调用该页面
         modalWidth: 800,
@@ -1042,6 +1043,11 @@ const uidGenerator=()=>{
         }
         if (record.employmentStatus == 30 || record.employmentStatus == '30') {
           this.isQuit = true;
+        }if(record.isAttendance!=null&& record.isAttendance != ""){
+            this.isAttendance=record.isAttendance;
+        }if(record.workMoth!=null&&record.workMoth!=""){
+          this.worMoth=record.workMoth;
+          this.workMoth=record.workMoth - 0+this.moth - 0;
         }
         that.visible = true;
         that.model = Object.assign({}, record);

+ 17 - 9
src/views/system/modules/UserModal.vue

@@ -268,7 +268,7 @@
           </a-col>
           <a-col :md="6" :sm="8" :lg="8">
             <a-form-item label="合同类型" :labelCol="labelCol" :wrapperCol="wrapperCol">
-             <j-dict-select-tag  v-decorator="['contractType',{rules: [{ required: true, message: '请选择入合同类型'}]}]" :triggerChange="true" placeholder="请选择合同类型"
+             <j-dict-select-tag  :disabled="isEdit" v-decorator="['contractType',{rules: [{ required: true, message: '请选择入合同类型'}]}]" :triggerChange="true" placeholder="请选择合同类型"
                dictCode="contract_type" />
             </a-form-item>
           </a-col>
@@ -850,7 +850,9 @@
       add() {
         this.picUrl = "";
         this.refresh();
-        
+        var da=new Date();
+        da.setFullYear(da.getFullYear()+3)
+        this.cEndDate=moment(da).subtract(1, "days");
         this.edit({
           activitiSync: '1'
         });
@@ -861,10 +863,6 @@
        this.wkDate = new Date();
       },
       edit(record) {
-        var da=new Date();
-        da.setFullYear(da.getFullYear()+3)
-        this.cEndDate=moment(da).subtract(1, "days");
-        
         this.realname = record.realname;
         this.egName = record.egName;
         this.syFund=record.syFund;
@@ -1017,6 +1015,7 @@
         this.age="";
         this.workMoth=0;
         this.moth=0;
+        this.cEndDate=null;
       },
       moment,
       handleSubmit() {
@@ -1148,11 +1147,20 @@
               trialMoth: value.replace(/[^0-9]/ig,"")
             })
           } else {
-            this.wkMoth = value - 0;
-            console.log(this.wkDate)
+            var moth=value - 0;
+            if(moth<1){
+              this.wkMoth=1;
+              this.form.setFieldsValue({
+                trialMoth:1
+              })
+            }else{
+              this.wkMoth = value - 0;
+            }
+            //console.log(this.wkDate)
+            
             if (this.wkDate != null && this.wkDate != "") {
               var date = new Date(this.wkDate)
-              var num = value - 0;
+              var num = this.wkMoth;
               date.setMonth(date.getMonth() + num)
               var d = moment(date).subtract(1, "days");
               this.form.setFieldsValue({

+ 1 - 5
src/views/system/modules/UserPrizeModal.vue

@@ -172,10 +172,6 @@ import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
               })
             }
           }
-        }).finally(() => {
-         this.form.setFieldsValue({
-           userId:""
-         })
         })
       },
       validateRealname(rule, value, callback) {
@@ -183,7 +179,7 @@ import JSelectUserByDep from '@/components/jeecgbiz/JSelectUserByDep'
           callback()
           this.deptid="";
           this.form.setFieldsValue({
-            deptNames:e
+            deptNames:""
           })
         } else {
           this.queryDeptName(value);