liukangdong
2024-06-21 e2525e1ed686dc305e562757c3a00b37ac3beec4
time
已修改4个文件
271 ■■■■ 文件已修改
admin/src/components/business/operaVisitsReportWindow.vue 114 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/operaVisitsWindow.vue 68 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/operation/HiddenDangerParam.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/operation/OperCarUseBookParamWindow.vue 87 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
admin/src/components/business/operaVisitsReportWindow.vue
@@ -1,12 +1,12 @@
<template>
  <GlobalWindow
      title="新增访客报备"
      width="600px"
      :visible.sync="isShowModal"
      :confirm-working="isWorking"
      @confirm="confirm"
    title="新增访客报备"
    width="600px"
    :visible.sync="isShowModal"
    :confirm-working="isWorking"
    @confirm="confirm"
  >
    <el-form :model="param" ref="paramRef" :rules="rules" >
    <el-form :model="param" ref="paramRef" :rules="rules">
      <div class="title_tip">访客预约</div>
      <el-form-item label="被访人" prop="startTime">
        {{ userInfo.realname }} {{ userInfo.company.companyNamePath }}
@@ -18,6 +18,8 @@
          value-format="yyyy-MM-dd HH:mm:ss"
          type="datetime"
          default-time="08:00:00"
          :picker-options="startPickerOptions"
          @change="changeStarttime"
        />
      </el-form-item>
      <el-form-item label="离园时间" prop="endtime">
@@ -27,28 +29,46 @@
          value-format="yyyy-MM-dd HH:mm:ss"
          type="datetime"
          default-time="08:00:00"
          :picker-options="endPickerOptions"
        />
      </el-form-item>
      <div class="title_tip">访客信息</div>
      <el-form-item label="联系人" prop="name">
        <el-input v-model="param.name" placeholder="请输入联系人的姓名"></el-input>
        <el-input
          v-model="param.name"
          placeholder="请输入联系人的姓名"
        ></el-input>
      </el-form-item>
      <el-form-item label="手机号" prop="phone">
        <el-input v-model="param.phone" placeholder="请输入联系人的手机号"></el-input>
        <el-input
          v-model="param.phone"
          placeholder="请输入联系人的手机号"
        ></el-input>
      </el-form-item>
      <el-form-item label="来访单位" prop="companyName">
        <el-input v-model="param.companyName" placeholder="请输入来访的单位全称"></el-input>
        <el-input
          v-model="param.companyName"
          placeholder="请输入来访的单位全称"
        ></el-input>
      </el-form-item>
      <el-form-item label="入园车辆" prop="carNos">
        <el-input v-model="param.carNos" placeholder="请输入车牌号"></el-input>
      </el-form-item>
      <el-form-item label="随车人数" prop="memberNum">
        <el-input v-model="param.memberNum" placeholder="请输入随车人员总数"></el-input>
        <el-input
          v-model="param.memberNum"
          placeholder="请输入随车人员总数"
        ></el-input>
      </el-form-item>
      <el-form-item label="来访事由" prop="reason">
        <el-select v-model="param.reason" placeholder="请选择">
          <el-option v-for="item in VisitReason" :key="item.id" :label="item.title" :value="item.title" />
          <el-option
            v-for="item in VisitReason"
            :key="item.id"
            :label="item.title"
            :value="item.title"
          />
        </el-select>
      </el-form-item>
    </el-form>
@@ -59,6 +79,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadFaceImg from '@/components/common/UploadFaceImg'
import dayjs from 'dayjs'
import { createVisit, getVisitedVisitReason } from '@/api/business/visits'
export default {
  name: 'OperaVisitsHkWindow',
@@ -71,13 +92,29 @@
    return {
      isShowModal: false,
      param: {
        type: 2
        type: 2,
        starttime: '',
        endtime: ''
      },
      userInfo: this.$store.state.userInfo,
      VisitReason: [],
      uploadData: {
        folder: 'member'
      },
      startPickerOptions: {
        disabledDate (time) {
          return time.getTime() < Date.now() - 8.64e7 // 禁用超过当前时间的日期
        },
        selectableRange: '00:00:00 - 23:59:59' // 这个加上之后,时分秒上面才有禁止选择变灰,如果不加,也可以禁止选择,但是不会变灰
      },
      endPickerOptions: {
        disabledDate: (time) => {
          if (this.param.starttime) {
            return new Date(this.param.starttime).getTime() > time.getTime() + 8.64e7 // 禁用超过当前时间的日期
          }
        },
        selectableRange: '00:00:00 - 23:59:59'
      },
      rules: {
        starttime: [{ required: true, message: '请选择日期', trigger: 'change' }],
@@ -92,18 +129,65 @@
        companyName: [{ required: true, message: '请输入', trigger: 'blur' }],
        phone: [{ required: true, message: '请输入', trigger: 'blur' }],
        carNos: [{ required: true, message: '请输入', trigger: 'blur' }],
        constructionReason: [{ required: true, message: '请输入', trigger: 'blur' }],
        constructionReason: [{ required: true, message: '请输入', trigger: 'blur' }]
      }
    }
  },
  created () {
    this.initData()
    this.$set(this.param, 'starttime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
  },
  watch: {
    'param.starttime': {
      handler (newValue, oldValue) {
        if (newValue) {
          const date = new Date()
          // const min = date.getMinutes()
          // date.setMinutes(min) // 这里加1分钟,是为了解决值改变后,系统秒数就过期限制了,无法点击“此刻”按钮, 如果监听 “系统时间”的改变,则会影响性能。
          const nowDate = dayjs(date).format('HH:mm:ss')
          let st = ''
          if (dayjs(date).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
            const hh1 = dayjs(newValue).format('HH:mm:ss')
            // if (hh1 < nowDate) {
            //   this.param.starttime = new Date()
            // }
            st = nowDate
          } else {
            st = '00:00:00'
          }
          this.$set(this.startPickerOptions, 'selectableRange', st + ' - 23:59:59')
          // this.startPickerOptions = this.startPickerOptions
        }
      },
      deep: true,
      immediate: true
    },
    'param.endtime': {
      handler (newValue, oldValue) {
        if (newValue) {
          const nowDate = dayjs(this.param.starttime).format('HH:mm:ss')
          let st = ''
          if (dayjs(this.param.starttime).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
            st = nowDate
          } else {
            st = '00:00:00'
          }
          this.$set(this.endPickerOptions, 'selectableRange', st + ' - 23:59:59')
          // this.startPickerOptions = this.startPickerOptions
        }
      },
      deep: true,
      immediate: true
    }
  },
  methods: {
    initData () {
      getVisitedVisitReason({}).then(res => {
        this.VisitReason = res || []
      })
    },
    changeStarttime (e) {
      this.$set(this.param, 'endtime', this.param.starttime)
    },
    uploadAvatarSuccess (file) {
      this.$set(this.param, 'faceImg', file.imgurl)
@@ -140,7 +224,7 @@
}
</script>
<style lang="scss" scoped>
.title_tip{
.title_tip {
  font-size: 18px;
  font-weight: 600;
  margin-bottom: 10px;
admin/src/components/business/operaVisitsWindow.vue
@@ -50,6 +50,8 @@
          value-format="yyyy-MM-dd HH:mm:ss"
          type="datetime"
          default-time="08:00:00"
          :picker-options="startPickerOptions"
          @change="changeStarttime"
        />
      </el-form-item>
      <el-form-item label="离园时间" prop="endtime">
@@ -58,6 +60,7 @@
          format="yyyy-MM-dd HH:mm"
          value-format="yyyy-MM-dd HH:mm:ss"
          type="datetime"
          :picker-options="endPickerOptions"
          default-time="08:00:00"
        />
      </el-form-item>
@@ -88,6 +91,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadFaceImg from '@/components/common/UploadFaceImg'
import dayjs from 'dayjs'
import { createFk, getVisitedVisitReason, getVisitedMember } from '@/api/business/visits'
export default {
  name: 'OperaVisitsHkWindow',
@@ -101,13 +105,29 @@
      isShowModal: false,
      param: {
        type: 0,
        idcardType: 0
        idcardType: 0,
        starttime: '',
        endtime: ''
      },
      
      VisitReason: [],
      memberList: [],
      uploadData: {
        folder: 'member'
      },
      startPickerOptions: {
        disabledDate (time) {
          return time.getTime() < Date.now() - 8.64e7 // 禁用超过当前时间的日期
        },
        selectableRange: '00:00:00 - 23:59:59' // 这个加上之后,时分秒上面才有禁止选择变灰,如果不加,也可以禁止选择,但是不会变灰
      },
      endPickerOptions: {
        disabledDate: (time) => {
          if (this.param.starttime) {
            return new Date(this.param.starttime).getTime() > time.getTime() + 8.64e7 // 禁用超过当前时间的日期
          }
        },
        selectableRange: '00:00:00 - 23:59:59'
      },
      rules: {
        starttime: [{ required: true, message: '请选择日期', trigger: 'change' }],
@@ -130,6 +150,49 @@
    this.$set(this.param, 'receptMemberId', this.$store.state.userInfo.memberId)
    this.initData()
  },
  watch: {
    'param.starttime': {
      handler (newValue, oldValue) {
        if (newValue) {
          const date = new Date()
          // const min = date.getMinutes()
          // date.setMinutes(min) // 这里加1分钟,是为了解决值改变后,系统秒数就过期限制了,无法点击“此刻”按钮, 如果监听 “系统时间”的改变,则会影响性能。
          const nowDate = dayjs(date).format('HH:mm:ss')
          let st = ''
          if (dayjs(date).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
            const hh1 = dayjs(newValue).format('HH:mm:ss')
            // if (hh1 < nowDate) {
            //   this.param.starttime = new Date()
            // }
            st = nowDate
          } else {
            st = '00:00:00'
          }
          this.$set(this.startPickerOptions, 'selectableRange', st + ' - 23:59:59')
          // this.startPickerOptions = this.startPickerOptions
        }
      },
      deep: true,
      immediate: true
    },
    'param.endtime': {
      handler (newValue, oldValue) {
        if (newValue) {
          const nowDate = dayjs(this.param.starttime).format('HH:mm:ss')
          let st = ''
          if (dayjs(this.param.starttime).format('yyyy-MM-DD') === dayjs(newValue).format('yyyy-MM-DD')) {
            st = nowDate
          } else {
            st = '00:00:00'
          }
          this.$set(this.endPickerOptions, 'selectableRange', st + ' - 23:59:59')
          // this.startPickerOptions = this.startPickerOptions
        }
      },
      deep: true,
      immediate: true
    }
  },
  methods: {
    initData () {
      getVisitedVisitReason({}).then(res => {
@@ -143,6 +206,9 @@
      this.$set(this.param, 'faceImg', file.imgurl)
      this.$set(this.param, 'faceImgUrl', file.imgurlfull)
    },
    changeStarttime (e) {
      this.$set(this.param, 'endtime', this.param.starttime)
    },
    // 同步信息
    confirm () {
      this.$refs.paramRef.validate((valid) => {
admin/src/components/operation/HiddenDangerParam.vue
@@ -101,6 +101,7 @@
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import UploadFaceImg from '@/components/common/UploadFaceImg'
import dayjs from 'dayjs'
import { allList, memberList } from '@/api/business/hiddenDangerParam'
import { create } from '@/api/business/hiddenDanger'
export default {
@@ -135,6 +136,7 @@
    }
  },
  created () {
    this.$set(this.param, 'submitTime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
    this.initData()
  },
  methods: {
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>
@@ -185,8 +209,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,6 +234,7 @@
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,
@@ -233,19 +258,37 @@
      carsList: [],
      form: {
        type: 0,
        startTime: '',
        endTime: '',
        memberIds: []
      },
      pickerOptions: {
        disabledDate: (time) => {
          if (this.form.startTime && this.form.endTime) {
            const minTime = new Date(this.form.startTime).getTime() - 8.64e7
            const maxTime = new Date(this.form.endTime).getTime()
            return (
              time.getTime() < minTime
              time.getTime() < minTime || time.getTime() > maxTime
            )
          } else {
            return time.getTime() < Date.now() - 8.64e7
          }
        }
        },
        selectableRange: '00:00:00 - 23:59:59'
      },
      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 || time.getTime() > maxTime
            )
          } else {
            return time.getTime() < Date.now() - 8.64e7
          }
        },
        selectableRange: '00:00:00 - 23:59:59'
      },
      // 验证规则
      rules: {
@@ -258,6 +301,18 @@
        memberIds: [{ type: 'array', required: true, message: '请选择', trigger: 'change' }],
        content: [{ required: true, message: '请输入', trigger: 'blur' }]
      }
    }
  },
  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
    }
  },
  created () {
@@ -415,7 +470,7 @@
<style scoped lang="scss">
@import "@/assets/style/variables.scss";
div{
div {
  box-sizing: border-box;
}
.modal_wrap {
@@ -444,10 +499,10 @@
    flex: 1;
    margin-left: 30px;
    padding: 0 30px;
    h1{
    h1 {
      margin-bottom: 20px;
    }
    div{
    div {
      line-height: 28px;
    }
  }
@@ -501,7 +556,7 @@
  }
}
.have_info {
  padding: 0 0 120px;
  padding: 0 0 60px;
  .tit {
    color: #ed4545;
    margin: 20px 0 12px;
@@ -522,7 +577,7 @@
    .line {
      display: flex;
      margin-bottom: 10px;
      text {
      span {
        &:nth-of-type(1) {
          width: 80px;
          color: #888888;