| | |
| | | <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 }} |
| | |
| | | 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"> |
| | |
| | | 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> |
| | |
| | | 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', |
| | |
| | | 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' }], |
| | |
| | | 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) |
| | |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .title_tip{ |
| | | .title_tip { |
| | | font-size: 18px; |
| | | font-weight: 600; |
| | | margin-bottom: 10px; |
| | |
| | | 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"> |
| | |
| | | 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> |
| | |
| | | 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', |
| | |
| | | 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' }], |
| | |
| | | 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 => { |
| | |
| | | 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) => { |
| | |
| | | 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 { |
| | |
| | | } |
| | | }, |
| | | created () { |
| | | this.$set(this.param, 'submitTime', dayjs().format('YYYY-MM-DD HH:mm:ss')) |
| | | this.initData() |
| | | }, |
| | | methods: { |
| | |
| | | <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="选择车辆"> |
| | |
| | | </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> |
| | |
| | | <h1>注意事项:</h1> |
| | | <div>1、公司车辆外出需办理用车申请表,经批准后方可外出(借出)。</div> |
| | | <div>2、市外用车需领导审核。</div> |
| | | <div>3、借出车辆必须遵守交通规则,安全行驶。对于车辆发生交通意外,对当事人及第三方造成人身伤害及损失,公司可以协助处理保险公司赔偿相关事宜,但不承担任何责任和费用。</div> |
| | | <div>4、公司借给申请人用车,申请借车人为第一责任人,不允许转借给其他人使用,若要借给他人使用。责任人要承担全部责任。</div> |
| | | <div> |
| | | 3、借出车辆必须遵守交通规则,安全行驶。对于车辆发生交通意外,对当事人及第三方造成人身伤害及损失,公司可以协助处理保险公司赔偿相关事宜,但不承担任何责任和费用。 |
| | | </div> |
| | | <div> |
| | | 4、公司借给申请人用车,申请借车人为第一责任人,不允许转借给其他人使用,若要借给他人使用。责任人要承担全部责任。 |
| | | </div> |
| | | </div> |
| | | </div> |
| | | |
| | |
| | | value-format="yyyy-MM-dd" |
| | | type="date" |
| | | placeholder="选择日期" |
| | | :picker-options="{ |
| | | disabledDate(time) { |
| | | return time.getTime() < Date.now() - 8.64e7; |
| | | } |
| | | }" |
| | | @change="seletedDate" |
| | | > |
| | | </el-date-picker> |
| | |
| | | <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> |
| | |
| | | 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, |
| | |
| | | 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: { |
| | |
| | | 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 () { |
| | |
| | | |
| | | <style scoped lang="scss"> |
| | | @import "@/assets/style/variables.scss"; |
| | | div{ |
| | | div { |
| | | box-sizing: border-box; |
| | | } |
| | | .modal_wrap { |
| | |
| | | flex: 1; |
| | | margin-left: 30px; |
| | | padding: 0 30px; |
| | | h1{ |
| | | h1 { |
| | | margin-bottom: 20px; |
| | | } |
| | | div{ |
| | | div { |
| | | line-height: 28px; |
| | | } |
| | | } |
| | |
| | | } |
| | | } |
| | | .have_info { |
| | | padding: 0 0 120px; |
| | | padding: 0 0 60px; |
| | | .tit { |
| | | color: #ed4545; |
| | | margin: 20px 0 12px; |
| | |
| | | .line { |
| | | display: flex; |
| | | margin-bottom: 10px; |
| | | text { |
| | | span { |
| | | &:nth-of-type(1) { |
| | | width: 80px; |
| | | color: #888888; |