|
@@ -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>
|