EDZ hace 3 años
padre
commit
68f445f9cd

+ 157 - 0
src/views/system/schedulingInformation/BdSchedulingList.vue

@@ -0,0 +1,157 @@
+<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 :md="6" :sm="8">
+            <a-form-item label="班次编码">
+              <a-input placeholder="请输入班次编码" v-model="queryParam.id"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="班次名称">
+              <a-input placeholder="请输入班次名称" v-model="queryParam.id"></a-input>
+            </a-form-item>
+          </a-col>
+          
+          <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>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</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-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <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"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <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 -->
+
+    <!-- 表单区域 -->
+    <BdScheduling-modal ref="modalForm" @ok="modalFormOk"></BdScheduling-modal>
+  </a-card>
+</template>
+
+<script>
+  import BdSchedulingModal from '../schedulingInformation/BdSchedulingModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import JDictSelectTag from '@/components/dict/JDictSelectTag'
+
+  export default {
+    name: 'BdSchedulingList',
+    mixins: [JeecgListMixin],
+    components: {
+      BdSchedulingModal,
+      JDictSelectTag
+    },
+    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: 'pkPerson'
+          },
+          {
+            title: '排班日期',
+            align: 'center',
+            dataIndex: 'dateClass'
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align: 'center',
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+        url: {
+          list: '/scheduling/bdScheduling/list',
+          delete: '/scheduling/bdScheduling/delete',
+          deleteBatch: '/scheduling/bdScheduling/deleteBatch',
+          exportXlsUrl: '/scheduling/bdScheduling/exportXls',
+          importExcelUrl: '/scheduling/bdScheduling/importExcel',
+        },
+      }
+    },
+    computed: {
+      importExcelUrl: function () {
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 257 - 0
src/views/system/schedulingInformation/BdSchedulingModal.vue

@@ -0,0 +1,257 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="800"
+    :visible="visible"
+    :maskClosable="false"
+    :confirmLoading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="班次编码">
+          <a-input placeholder="请输入班次编码" v-decorator="['code', validatorRules.code]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="班次名称">
+          <a-input placeholder="请输入班次名称" v-decorator="['name', validatorRules.name]"/>
+        </a-form-item>
+       
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="开始时间">
+          <a-input placeholder="开始时间" v-decorator="['beginTime', validatorRules.beginTime]"/>
+<!--          <a-time-picker style="width:100px;"
+                                         @change="(val,dateStrings)=>changeTime(val,dateStrings,'startTime')"
+                                         format="HH:mm" v-decorator="['beginTime', validatorRules.beginTime]"/>
+ -->          <!-- <a-time-picker
+                :show-time="{ format: 'HH:mm' }"
+                format="HH:mm"
+                v-decorator="['beginTime', validatorRules.beginTime]"/> -->
+              
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="结束时间">
+          <a-input placeholder="开始时间" v-decorator="['endTime', validatorRules.endTime]"/>
+ <!--         <a-time-picker style="width:100px;"
+                                         :disabledHours="getDisabledHours"
+                                         :disabledMinutes="getDisabledMinutes"
+                                         :disabledSeconds="getDisabledSeconds"
+                                         @change="(val,dateStrings)=>changeTime(val,dateStrings,'endTime')"
+                                         format="HH:mm" v-decorator="['endTime', validatorRules.endTime]"/>
+ -->         <!-- <a-time-picker
+                :show-time="{ format: 'HH:mm' }"
+                format="HH:mm"
+                v-decorator="['endTime', validatorRules.endTime]"/> -->
+              
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="状态"
+        >
+          <j-dict-select-tag
+            placeholder="请选择状态"
+            :triggerChange="true"
+            dictCode="valid_status"
+            v-decorator="['state', validatorRules.state]"
+          />
+        </a-form-item>
+       
+
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import pick from 'lodash.pick'
+  import { httpAction } from '@/api/manage'
+  import { duplicateCheck } from '@/api/api'
+  import JDictSelectTag from '@/components/dict/JDictSelectTag'
+
+  let validatorCodeTimer = null
+
+  export default {
+    name: 'BdSchedulingModal',
+    components: { JDictSelectTag },
+    data() {
+      return {
+        title: '操作',
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules: {
+          code: {
+            rules: [
+              { required: true, message: '请输入编码' },
+              {
+                validator: (rule, value, callback) => {
+                  // 函数消抖的简单实现,防止一段时间内发送多次请求
+                  if (validatorCodeTimer) {
+                    // 停止上次开启的定时器
+                    clearTimeout(validatorCodeTimer)
+                  }
+                  validatorCodeTimer = setTimeout(() => {
+                    duplicateCheck({
+                      tableName: 'bd_shift',
+                      fieldName: 'code',
+                      fieldVal: value,
+                      dataId: this.model.id
+                    }).then((res) => {
+                      if (res.success) {
+                        callback()
+                      } else {
+                        callback(res.message)
+                      }
+                    }).catch(console.error)
+                  }, 300)
+                }
+              }
+            ]
+          },
+          code: { rules: [{ required: true, message: '请输入编码' }] },
+          name: { rules: [{ required: true, message: '请输入名称' }] },
+          state: { rules: [{ required: true, message: '请选择状态' }] },
+          beginTime: { rules: [{ required: true, message: '请选择开始时间' }] },
+          endTime: { rules: [{ required: true, message: '请选择结束时间' }] },
+        },
+        url: {
+          add: '/scheduling/bdScheduling/add',
+          edit: '/scheduling/bdScheduling/edit',
+        },
+        readOnly:false
+      }
+    },
+    created() {
+    },
+    methods: {
+      changeTime (val, dateStrings, type) {
+         console.log("=========================");
+        console.log(val);console.log(dateStrings);console.log(type);
+            if (type === 'startTime') {
+              this.startTime = dateStrings
+            } else {
+              this.endTime = dateStrings
+            }
+          },
+          getDisabledHours () {
+            let hours = []
+            let time = this.startTime
+            let timeArr = time.split(':')
+            for (var i = 0; i < parseInt(timeArr[0]); i++) {
+              hours.push(i)
+            }
+            return hours
+          },
+          getDisabledMinutes (selectedHour) {
+            let time = this.startTime
+            let timeArr = time.split(':')
+            let minutes = []
+            if (selectedHour == parseInt(timeArr[0])) {
+              for(var i = 0; i < parseInt(timeArr[1]); i++) {
+                minutes.push(i)
+              }
+            }
+            return minutes
+          },
+          getDisabledSeconds (selectedHour, selectedMinute) {
+            let time = this.startTime
+            let timeArr = time.split(':')
+            let second = []
+            if (selectedHour == parseInt(timeArr[0]) && selectedMinute == parseInt(timeArr[1])) {
+              for(var i = 0; i <= parseInt(timeArr[2]); i++) {
+                second.push(i)
+              }
+            }
+            return second
+          },
+      add() {
+        this.edit({})
+      },
+      edit(record) {
+        this.form.resetFields()
+        this.model = Object.assign({}, record)
+        this.visible = true
+        if(record.id){
+          this.readOnly=true
+        }else{
+          this.readOnly=false
+        }
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,
+            'code',
+            'name',
+            'state',
+            'beginTime',
+            'endTime',
+          ))
+        })
+      },
+      close() {
+        this.$emit('close')
+        this.visible = false
+      },
+      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
+              method = 'post'
+            } else {
+              httpurl += this.url.edit
+              method = 'put'
+            }
+
+            let formData = Object.assign(this.model, values)
+            httpAction(httpurl, formData, method).then((res) => {
+              if (res.success) {
+                that.$message.success(res.message)
+                that.$emit('ok')
+              } else {
+                that.$message.warning(res.message)
+              }
+            }).finally(() => {
+              that.confirmLoading = false
+              that.close()
+            })
+          }
+        })
+      },
+      handleCancel() {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 179 - 0
src/views/system/schedulingInformation/BdShiftList.vue

@@ -0,0 +1,179 @@
+<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 :md="6" :sm="8">
+            <a-form-item label="班次编码">
+              <a-input placeholder="请输入班次编码" v-model="queryParam.code"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="班次名称">
+              <a-input placeholder="请输入班次名称" v-model="queryParam.name"></a-input>
+            </a-form-item>
+          </a-col>
+          
+          <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>
+
+        </a-row>
+      </a-form>
+    </div>
+
+    <!-- 操作按钮区域 -->
+    <div class="table-operator">
+      <a-button @click="handleAdd" type="primary" icon="plus">新增</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-button type="primary" icon="import">导入</a-button>
+      </a-upload>
+      <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"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <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 -->
+
+    <!-- 表单区域 -->
+    <bdShift-modal ref="modalForm" @ok="modalFormOk"></bdShift-modal>
+  </a-card>
+</template>
+
+<script>
+  import BdShiftModal from '../schedulingInformation/BdShiftModal'
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import JDictSelectTag from '@/components/dict/JDictSelectTag'
+
+  export default {
+    name: 'BdShiftList',
+    mixins: [JeecgListMixin],
+    components: {
+      BdShiftModal,
+      JDictSelectTag
+    },
+    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: 'code'
+          },
+          {
+            title: '班次名称',
+            align: 'center',
+            dataIndex: 'name'
+          },
+          {
+            title: '开始时间',
+            align: 'center',
+            dataIndex: 'beginTime'
+          },
+          {
+            title: '结束时间',
+            align: 'center',
+            dataIndex: 'endTime'
+          },
+          {
+            title: '状态',
+            align: 'center',
+            dataIndex: 'state_dictText'
+            /* ,customRender:function(t, r, index){
+              if(t == '1'){
+                return "启用";
+              }else{
+                return "停用";
+              }
+            } */
+          },
+          {
+            title: '操作',
+            dataIndex: 'action',
+            align: 'center',
+            scopedSlots: { customRender: 'action' },
+          }
+        ],
+        url: {
+          list: '/schedulingInformation/bdShift/list',
+          delete: '/schedulingInformation/bdShift/delete',
+          deleteBatch: '/schedulingInformation/bdShift/deleteBatch',
+          exportXlsUrl: '/schedulingInformation/bdShift/exportXls',
+          importExcelUrl: 'schedulingInformation/bdShift/importExcel',
+        },
+      }
+    },
+    computed: {
+      importExcelUrl: function () {
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>

+ 257 - 0
src/views/system/schedulingInformation/BdShiftModal.vue

@@ -0,0 +1,257 @@
+<template>
+  <a-modal
+    :title="title"
+    :width="800"
+    :visible="visible"
+    :maskClosable="false"
+    :confirmLoading="confirmLoading"
+    @ok="handleOk"
+    @cancel="handleCancel"
+    cancelText="关闭">
+
+    <a-spin :spinning="confirmLoading">
+      <a-form :form="form">
+
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="班次编码">
+          <a-input placeholder="请输入班次编码" v-decorator="['code', validatorRules.code]" />
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="班次名称">
+          <a-input placeholder="请输入班次名称" v-decorator="['name', validatorRules.name]"/>
+        </a-form-item>
+       
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="开始时间">
+          <a-input placeholder="开始时间" v-decorator="['beginTime', validatorRules.beginTime]"/>
+<!--          <a-time-picker style="width:100px;"
+                                         @change="(val,dateStrings)=>changeTime(val,dateStrings,'startTime')"
+                                         format="HH:mm" v-decorator="['beginTime', validatorRules.beginTime]"/>
+ -->          <!-- <a-time-picker
+                :show-time="{ format: 'HH:mm' }"
+                format="HH:mm"
+                v-decorator="['beginTime', validatorRules.beginTime]"/> -->
+              
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="结束时间">
+          <a-input placeholder="开始时间" v-decorator="['endTime', validatorRules.endTime]"/>
+ <!--         <a-time-picker style="width:100px;"
+                                         :disabledHours="getDisabledHours"
+                                         :disabledMinutes="getDisabledMinutes"
+                                         :disabledSeconds="getDisabledSeconds"
+                                         @change="(val,dateStrings)=>changeTime(val,dateStrings,'endTime')"
+                                         format="HH:mm" v-decorator="['endTime', validatorRules.endTime]"/>
+ -->         <!-- <a-time-picker
+                :show-time="{ format: 'HH:mm' }"
+                format="HH:mm"
+                v-decorator="['endTime', validatorRules.endTime]"/> -->
+              
+        </a-form-item>
+        <a-form-item
+          :labelCol="labelCol"
+          :wrapperCol="wrapperCol"
+          label="状态"
+        >
+          <j-dict-select-tag
+            placeholder="请选择状态"
+            :triggerChange="true"
+            dictCode="valid_status"
+            v-decorator="['state', validatorRules.state]"
+          />
+        </a-form-item>
+       
+
+      </a-form>
+    </a-spin>
+  </a-modal>
+</template>
+
+<script>
+  import pick from 'lodash.pick'
+  import { httpAction } from '@/api/manage'
+  import { duplicateCheck } from '@/api/api'
+  import JDictSelectTag from '@/components/dict/JDictSelectTag'
+
+  let validatorCodeTimer = null
+
+  export default {
+    name: 'BdShiftModal',
+    components: { JDictSelectTag },
+    data() {
+      return {
+        title: '操作',
+        visible: false,
+        model: {},
+        labelCol: {
+          xs: { span: 24 },
+          sm: { span: 5 },
+        },
+        wrapperCol: {
+          xs: { span: 24 },
+          sm: { span: 16 },
+        },
+        confirmLoading: false,
+        form: this.$form.createForm(this),
+        validatorRules: {
+          code: {
+            rules: [
+              { required: true, message: '请输入编码' },
+              {
+                validator: (rule, value, callback) => {
+                  // 函数消抖的简单实现,防止一段时间内发送多次请求
+                  if (validatorCodeTimer) {
+                    // 停止上次开启的定时器
+                    clearTimeout(validatorCodeTimer)
+                  }
+                  validatorCodeTimer = setTimeout(() => {
+                    duplicateCheck({
+                      tableName: 'bd_shift',
+                      fieldName: 'code',
+                      fieldVal: value,
+                      dataId: this.model.id
+                    }).then((res) => {
+                      if (res.success) {
+                        callback()
+                      } else {
+                        callback(res.message)
+                      }
+                    }).catch(console.error)
+                  }, 300)
+                }
+              }
+            ]
+          },
+          code: { rules: [{ required: true, message: '请输入编码' }] },
+          name: { rules: [{ required: true, message: '请输入名称' }] },
+          state: { rules: [{ required: true, message: '请选择状态' }] },
+          beginTime: { rules: [{ required: true, message: '请选择开始时间' }] },
+          endTime: { rules: [{ required: true, message: '请选择结束时间' }] },
+        },
+        url: {
+          add: '/schedulingInformation/bdShift/add',
+          edit: '/schedulingInformation/bdShift/edit',
+        },
+        readOnly:false
+      }
+    },
+    created() {
+    },
+    methods: {
+      changeTime (val, dateStrings, type) {
+         console.log("=========================");
+        console.log(val);console.log(dateStrings);console.log(type);
+            if (type === 'startTime') {
+              this.startTime = dateStrings
+            } else {
+              this.endTime = dateStrings
+            }
+          },
+          getDisabledHours () {
+            let hours = []
+            let time = this.startTime
+            let timeArr = time.split(':')
+            for (var i = 0; i < parseInt(timeArr[0]); i++) {
+              hours.push(i)
+            }
+            return hours
+          },
+          getDisabledMinutes (selectedHour) {
+            let time = this.startTime
+            let timeArr = time.split(':')
+            let minutes = []
+            if (selectedHour == parseInt(timeArr[0])) {
+              for(var i = 0; i < parseInt(timeArr[1]); i++) {
+                minutes.push(i)
+              }
+            }
+            return minutes
+          },
+          getDisabledSeconds (selectedHour, selectedMinute) {
+            let time = this.startTime
+            let timeArr = time.split(':')
+            let second = []
+            if (selectedHour == parseInt(timeArr[0]) && selectedMinute == parseInt(timeArr[1])) {
+              for(var i = 0; i <= parseInt(timeArr[2]); i++) {
+                second.push(i)
+              }
+            }
+            return second
+          },
+      add() {
+        this.edit({})
+      },
+      edit(record) {
+        this.form.resetFields()
+        this.model = Object.assign({}, record)
+        this.visible = true
+        if(record.id){
+          this.readOnly=true
+        }else{
+          this.readOnly=false
+        }
+        this.$nextTick(() => {
+          this.form.setFieldsValue(pick(this.model,
+            'code',
+            'name',
+            'state',
+            'beginTime',
+            'endTime',
+          ))
+        })
+      },
+      close() {
+        this.$emit('close')
+        this.visible = false
+      },
+      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
+              method = 'post'
+            } else {
+              httpurl += this.url.edit
+              method = 'put'
+            }
+
+            let formData = Object.assign(this.model, values)
+            httpAction(httpurl, formData, method).then((res) => {
+              if (res.success) {
+                that.$message.success(res.message)
+                that.$emit('ok')
+              } else {
+                that.$message.warning(res.message)
+              }
+            }).finally(() => {
+              that.confirmLoading = false
+              that.close()
+            })
+          }
+        })
+      },
+      handleCancel() {
+        this.close()
+      },
+
+
+    }
+  }
+</script>
+
+<style lang="less" scoped>
+
+</style>

+ 152 - 0
src/views/system/schedulingInformation/BdWorkOverTimeList.vue

@@ -0,0 +1,152 @@
+<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 :md="6" :sm="8">
+            <a-form-item label="加班人员">
+              <a-input placeholder="请输入加班人员" v-model="queryParam.person"></a-input>
+            </a-form-item>
+          </a-col>
+          <a-col :md="6" :sm="8">
+            <a-form-item label="审批编号">
+              <a-input placeholder="请输入审批编号" v-model="queryParam.code"></a-input>
+            </a-form-item>
+          </a-col>
+          
+          <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>
+
+        </a-row>
+      </a-form>
+    </div>
+
+   
+    <!-- table区域-begin -->
+    <div>
+      
+      <a-table
+        ref="table"
+        size="middle"
+        bordered
+        rowKey="id"
+        :columns="columns"
+        :dataSource="dataSource"
+        :pagination="ipagination"
+        :loading="loading"
+        :rowSelection="{selectedRowKeys: selectedRowKeys, onChange: onSelectChange}"
+        @change="handleTableChange">
+
+        <span slot="action" slot-scope="text, record">
+          <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 -->
+
+    <!-- 表单区域 -->
+    <BdScheduling-modal ref="modalForm" @ok="modalFormOk"></BdScheduling-modal>
+  </a-card>
+</template>
+
+<script>
+  import { JeecgListMixin } from '@/mixins/JeecgListMixin'
+  import JDictSelectTag from '@/components/dict/JDictSelectTag'
+
+  export default {
+    name: 'BdSchedulingList',
+    mixins: [JeecgListMixin],
+    components: {
+      JDictSelectTag
+    },
+    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: 'person'
+          },
+          {
+            title: '审批编号',
+            align: 'center',
+            dataIndex: 'code'
+          },
+          {
+            title: '提交时间',
+            align: 'center',
+            dataIndex: 'commitDate'
+          },
+          {
+            title: '申请人部门',
+            align: 'center',
+            dataIndex: 'dept'
+          },
+          {
+            title: '加班事由',
+            align: 'center',
+            dataIndex: 'demo'
+          },
+          {
+            title: '开始时间',
+            align: 'center',
+            dataIndex: 'beginDate'
+          },
+          {
+            title: '结束时间',
+            align: 'center',
+            dataIndex: 'endDate'
+          },
+          {
+            title: '加班时长',
+            align: 'center',
+            dataIndex: 'duration'
+          }
+        ],
+        url: {
+          list: '/workOvertime/workOvertime/list'
+        },
+      }
+    },
+    computed: {
+      importExcelUrl: function () {
+        return `${window._CONFIG['domianURL']}/${this.url.importExcelUrl}`
+      }
+    }
+  }
+</script>
+<style scoped>
+  @import '~@assets/less/common.less'
+</style>