jiangping
2024-07-08 1377e545f9c63291e15c6640f290e012991c1213
admin/src/components/operation/OperCarUseBookParamWindow.vue
@@ -9,8 +9,12 @@
    <div class="modal_wrap">
      <el-form :model="form" ref="formRef" class="el_form" :rules="rules">
        <el-form-item label="用车范围" prop="type">
          <el-radio v-model="form.type" style="width: 80px;" :label="0">市内用车</el-radio>
          <el-radio v-model="form.type" style="width: 80px;" :label="1">市外用车</el-radio>
          <el-radio v-model="form.type" style="width: 80px" :label="0"
            >市内用车</el-radio
          >
          <el-radio v-model="form.type" style="width: 80px" :label="1"
            >市外用车</el-radio
          >
        </el-form-item>
        <el-form-item label="选择车辆" prop="carId">
          <el-select v-model="form.carId" placeholder="选择车辆">
@@ -35,16 +39,27 @@
        </el-form-item>
        <el-form-item label="预计出发时间" prop="planUseDate">
          <el-date-picker
            v-if="form.type == '0'"
            :disabled="!form.startTime"
            v-model="form.planUseDate"
            format="yyyy-MM-dd HH:mm:ss"
            format="yyyy-MM-dd HH:mm"
            value-format="yyyy-MM-dd HH:mm:ss"
            :picker-options="pickerOptions"
            default-time="08:00:00"
            type="datetime"
            placeholder="选择日期时间"
          >
          </el-date-picker>
          />
          <el-date-picker
            v-if="form.type == '1'"
            :disabled="!form.startTime"
            v-model="form.planUseDate"
            format="yyyy-MM-dd HH:mm"
            value-format="yyyy-MM-dd HH:mm:ss"
            :picker-options="pickerOptions2"
            default-time="08:00:00"
            type="datetime"
            placeholder="选择日期时间"
          />
        </el-form-item>
        <el-form-item label="目的地" prop="addr">
          <el-input v-model="form.addr" placeholder="请输入内容"></el-input>
@@ -78,8 +93,12 @@
        <h1>注意事项:</h1>
        <div>1、公司车辆外出需办理用车申请表,经批准后方可外出(借出)。</div>
        <div>2、市外用车需领导审核。</div>
        <div>3、借出车辆必须遵守交通规则,安全行驶。对于车辆发生交通意外,对当事人及第三方造成人身伤害及损失,公司可以协助处理保险公司赔偿相关事宜,但不承担任何责任和费用。</div>
        <div>4、公司借给申请人用车,申请借车人为第一责任人,不允许转借给其他人使用,若要借给他人使用。责任人要承担全部责任。</div>
        <div>
          3、借出车辆必须遵守交通规则,安全行驶。对于车辆发生交通意外,对当事人及第三方造成人身伤害及损失,公司可以协助处理保险公司赔偿相关事宜,但不承担任何责任和费用。
        </div>
        <div>
          4、公司借给申请人用车,申请借车人为第一责任人,不允许转借给其他人使用,若要借给他人使用。责任人要承担全部责任。
        </div>
      </div>
    </div>
@@ -97,6 +116,11 @@
            value-format="yyyy-MM-dd"
            type="date"
            placeholder="选择日期"
            :picker-options="{
              disabledDate(time) {
                return time.getTime() < Date.now() - 8.64e7;
              },
            }"
            @change="seletedDate"
          >
          </el-date-picker>
@@ -146,7 +170,6 @@
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            :picker-options="pickerOptions"
            default-time="08:00:00"
            @change="seletedShiwaiDate"
          >
          </el-date-picker>
@@ -158,7 +181,6 @@
            value-format="yyyy-MM-dd HH:mm:ss"
            type="datetime"
            :picker-options="pickerOptions"
            default-time="08:00:00"
            @change="seletedShiwaiDate"
          >
          </el-date-picker>
@@ -185,8 +207,8 @@
            <span>{{ item.memberIds.split(",").length }}人</span>
          </div>
          <div class="line">
            <text>用车事由</text>
            <text>{{ item.content }}</text>
            <span>用车事由</span>
            <span>{{ item.content }}</span>
          </div>
          <div class="line">
            <span>申请人</span>
@@ -210,11 +232,12 @@
import { allList as getCarList } from '@/api/business/cars'
import { carCanReservationDate, carUseBookCraete, carUseBookList } from '@/api/business/carUseBook'
import { findTypeMemberInfo } from '@/api/business/memberCard'
import dayjs from 'dayjs'
export default {
  name: 'OperCarUseBookParamWindow',
  extends: BaseOpera,
  components: { GlobalWindow },
  data () {
  data() {
    return {
      // 表单数据
      isShowTime: false,
@@ -233,19 +256,37 @@
      carsList: [],
      form: {
        type: 0,
        startTime: '',
        endTime: '',
        memberIds: []
      },
      pickerOptions: {
        disabledDate: (time) => {
          if (this.form.startTime && this.form.endTime) {
          if (this.form.startTime) {
            const minTime = new Date(this.form.startTime).getTime() - 8.64e7
            const maxTime = this.form.endTime ? new Date(this.form.endTime).getTime() : ''
            return (
              // maxTime ? time.getTime() < minTime || time.getTime() > maxTime : time.getTime() < minTime
              time.getTime() < minTime
            )
          } else {
            return time.getTime() < Date.now() - 8.64e7
          }
        }
      },
      pickerOptions2: {
        disabledDate: (time) => {
          if (this.form.startTime && this.form.endTime) {
            const minTime = new Date(this.form.startTime).getTime()
            const maxTime = new Date(this.form.endTime).getTime()
            return (
              time.getTime() < minTime - 8.64e7 || time.getTime() > maxTime
            )
          } else {
            return time.getTime() < Date.now() - 8.64e7
          }
        },
        selectableRange: '00:00:00 - 23:59:59'
      },
      // 验证规则
      rules: {
@@ -260,11 +301,36 @@
      }
    }
  },
  created () {
  computed: {
  },
  watch: {
    'form.planUseDate': {
      handler(newValue, oldValue) {
        if (newValue) {
          this.$set(this.pickerOptions, 'selectableRange', this.form.startTime.slice(11, 19) + ' - ' + this.form.endTime.slice(11, 19))
          // this.startPickerOptions = this.startPickerOptions
        }
      },
      deep: true,
      immediate: true
    },
    'form.startTime': {
      handler(newValue, oldValue) {
        if (newValue) {
          this.$set(this.pickerOptions, 'selectableRange', this.form.startTime.slice(11, 19) + ' - ' + '23:59:59')
          // this.startPickerOptions = this.startPickerOptions
        }
      },
      deep: true,
      immediate: true
    }
  },
  created() {
    this.initData()
  },
  methods: {
    open () {
    open() {
      this.title = '新建公务车用车申请'
      this.form = {
        type: 0,
@@ -275,7 +341,7 @@
      })
      this.visible = true
    },
    confirm () {
    confirm() {
      const form = JSON.parse(JSON.stringify(this.form))
      this.$refs.formRef.validate((valid) => {
        const memberList = []
@@ -299,7 +365,7 @@
        }
      })
    },
    openTime () {
    openTime() {
      const { form } = this
      if (!form.carId) {
        return this.$tip.error('请先选择车辆')
@@ -310,7 +376,7 @@
        this.isShowShiwai = true
      }
    },
    subTime () {
    subTime() {
      if (this.form.type === 0) {
        const selTimeList = this.timeList.filter(i => i.checked == '1')
        if (selTimeList.length === 0) {
@@ -327,7 +393,7 @@
        })
      }
    },
    datetimeClick (item, index) {
    datetimeClick(item, index) {
      if (item.isUse == '1') return
      const { timeList } = this
      const selTimeList = timeList.filter(i => i.checked == '1')
@@ -368,10 +434,10 @@
        this.selDatetime = this.form.dateDay.slice(5) + ' ' + selTimeLists[0].startHours + '-' + selTimeLists[selTimeLists.length - 1].endHours
      }
    },
    seletedDate (e) {
    seletedDate(e) {
      this.gettimes()
    },
    seletedShiwaiDate () {
    seletedShiwaiDate() {
      const { form } = this
      if (form.startTime && form.endTime) {
        this.selDatetime = form.startTime + '-' + form.endTime
@@ -384,7 +450,7 @@
        })
      }
    },
    gettimes () {
    gettimes() {
      const { form } = this
      carCanReservationDate({
        dateDay: form.dateDay,
@@ -393,11 +459,11 @@
        this.timeList = res || []
        this.timeList.forEach((i, j) => {
          i.checked = '0',
          i.index = j
            i.index = j
        })
      })
    },
    initData () {
    initData() {
      getCarList({
        type: 1
      }).then(res => {
@@ -415,7 +481,7 @@
<style scoped lang="scss">
@import "@/assets/style/variables.scss";
div{
div {
  box-sizing: border-box;
}
.modal_wrap {
@@ -444,10 +510,10 @@
    flex: 1;
    margin-left: 30px;
    padding: 0 30px;
    h1{
    h1 {
      margin-bottom: 20px;
    }
    div{
    div {
      line-height: 28px;
    }
  }
@@ -501,7 +567,7 @@
  }
}
.have_info {
  padding: 0 0 120px;
  padding: 0 0 60px;
  .tit {
    color: #ed4545;
    margin: 20px 0 12px;
@@ -522,7 +588,7 @@
    .line {
      display: flex;
      margin-bottom: 10px;
      text {
      span {
        &:nth-of-type(1) {
          width: 80px;
          color: #888888;