epmet pc工作端
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

501 lines
12 KiB

<template>
<div class="bg-caiji">
<div class="title">
员工登记
</div>
<div class="main">
<div class="div_tab">
<div :class="['div_option','option_left',{'option_select':selectTab==='1'}]"
@click="handleChangeTab('1')"> 员工登记</div>
<div :class="['div_option','option_right',{'option_select':selectTab==='2'}]"
@click="handleChangeTab('2')">受众群体登记</div>
</div>
<div v-if="selectTab==='1'"
class="content">
<mt-cell title="*企业名称">
<span style="margin-right:20px">{{placeOrgName}}</span>
</mt-cell>
<div class="line"></div>
<mt-field class="my-field"
:disableClear="true"
:label="'*姓名'"
placeholder="请输入"
v-model="formData.name"></mt-field>
<div class="line"></div>
<mt-field class="my-field"
:disableClear="true"
:label="'*手机号'"
placeholder="请输入"
type="tel"
v-model="formData.mobile"></mt-field>
<div class="line"></div>
<mt-field class="my-field"
type="url"
:disableClear="true"
:label="'*证件号'"
placeholder="请输入"
v-model="formData.idCard"></mt-field>
<div class="line"></div>
<div @click="handelSel('ymjzCount')">
<mt-cell :title="'*疫苗接种次数'"
is-link>
<span class="picker_content"
v-if="formData.ymjzCount">{{formData.ymjzCountName}}</span>
<span v-else>请选择</span>
</mt-cell>
</div>
<div class="line"></div>
<div @click="handelSelData()">
<mt-cell :title="'*最近一次核酸检测时间'"
is-link>
<span class="picker_content"
v-if="formData.latestNatTime">{{formData.latestNatTime}}</span>
<span v-else>请选择</span>
</mt-cell>
</div>
<div class="line"></div>
</div>
<div v-if="selectTab==='2'"
class="content">
<mt-cell title="*企业名称">
<span style="margin-right:20px">{{placeOrgName}}</span>
</mt-cell>
<div class="line"></div>
<div @click="handelSelData()">
<mt-cell :title="'*核酸检测时间'"
is-link>
<span class="picker_content"
v-if="formData2.natTime">{{formData2.natTime}}</span>
<span v-else>请选择</span>
</mt-cell>
</div>
<div class="line"></div>
<mt-field class="my-field"
:disableClear="true"
:label="'*受众人数'"
placeholder="请输入"
type="number"
v-model="formData2.szTotal"></mt-field>
<div class="line"></div>
<mt-field class="my-field"
:disableClear="true"
:label="'*核酸检测人数'"
placeholder="请输入"
type="number"
v-model="formData2.hsjcTotal"></mt-field>
<div class="line"></div>
</div>
</div>
<div class="div-btn">
<mt-button @click="handleSubmit"
type="primary"
class="btn"
:disabled="btnDisabled"
size="small">提交</mt-button>
</div>
<mt-popup v-model="popupVisible"
popup-transition="popup-fade"
closeOnClickModal="true"
position="bottom">
<mt-picker :slots="popupSlots"
class="div_picker"
value-key="label"
@change="onPickerChange"
showToolbar>
<div class="picker-toolbar-title">
<div class="usi-btn-cancel"
@click="popupVisible = !popupVisible">取消</div>
<div class="">请选择</div>
<div class="usi-btn-sure"
@click="popupOk()">确定</div>
</div>
</mt-picker>
</mt-popup>
<mt-datetime-picker v-model="pickerVisible"
ref="pickerData"
type="date"
class="picker_data"
:startDate="startDate"
year-format="{value} 年"
month-format="{value} 月"
date-format="{value} 日"
@confirm="handleConfirm">
</mt-datetime-picker>
</div>
</template>
<script>
import { requestPost } from "@/js/dai/request";
import { Toast } from "mint-ui";
import { MessageBox } from 'mint-ui';
import { Loading } from 'element-ui' // 引入Loading服务
import { messages } from '@/i18n'
let loading // 加载动画
export default {
data () {
return {
selectTab: '1',
pickerVisible: new Date(),
startDate: new Date(2021, 0, 1),
//二维码带来数据
enterpriseId: '',//场所Id
customerId: '',//客户Id
placeOrgName: '',//场所名称
formData: {
enterpriseId: '',//场所ID
customerId: '',//客户id
name: '',
idCard: '',
mobile: '',
ymjzCount: null,
ymjzCountName: '',
latestNatTime: '',
},
formData2: {
enterpriseId: '',//场所ID
customerId: '',//客户id
natTime: '',//受众人数
szTotal: '',//核酸检测人数
hsjcTotal: '',//客户ID
},
btnDisabled: false,
popupVisible: false,
shequName: '',//社区名称
selType: 'community',//弹出框所显示的数据类型:community、building、unit、room
pickerData: [],
selObj: {},
showMessagsBox: false,//是否显示人员未填写提示弹出框
detNumList: [],//参加核酸次数list
popupSlots: [//问题类型弹框数据
{
values: []
}
],
}
},
components: {},
computed: {
},
created () {
console.log(this.$route)
this.customerId = this.$route.query.customerId
this.enterpriseId = this.$route.query.enterpriseId
this.placeOrgName = this.$route.query.placeOrgName
document.title = this.placeOrgName + '员工登记'
},
mounted () {
let envShow = process.env.VUE_APP_NODE_ENV
console.log('环境', envShow)
this.formData.customerId = this.customerId
this.formData.enterpriseId = this.enterpriseId
this.formData2.customerId = this.customerId
this.formData2.enterpriseId = this.enterpriseId
this.detNumList = []
for (let i = 0; i < 4; i++) {
let obj = {
value: i + '',
label: i + '次',
}
this.detNumList.push(obj)
}
},
methods: {
handleChangeTab (val) {
this.selectTab = val
},
handelSelData () {
this.$refs.pickerData.open(); // 触发
// this.$refs.pickerData.close() ; // 关闭
},
handleConfirm (val) {
let time = new Date(val);
let year = time.getFullYear()
let month = time.getMonth() + 1
let day = time.getDate()
if (this.selectTab === '1') {
this.formData.latestNatTime = year + '-' + month + '-' + day
} else if (this.selectTab === '2') {
this.formData2.natTime = year + '-' + month + '-' + day
}
},
handelSel (selType) {
this.selType = selType
if (selType === 'ymjzCount') {
this.pickerData = this.detNumList
}
let obj = {
values: this.pickerData
}
this.popupSlots = []
this.popupSlots.push(obj)
this.popupVisible = !this.popupVisible
},
async handleSubmit () {
let message = this.validataFormData()
if (message) {
if (this.showMessagsBox) {
MessageBox.confirm(message).then(action => {
this.submit()
});
} else {
Toast({
message: message,
duration: 3000
});
}
} else {
return false
this.submit()
}
},
async submit () {
let url = "/gov/org/icEmployeeRegister/add"
let params = {}
if (this.selectTab === '1') {
url = '/gov/org/icEmployeeRegister/add'
params = this.formData
} else if (this.selectTab === '2') {
url = '/gov/org/icGroupPeopleRegister/add'
params = this.formData2
}
console.log(params)
// return false
this.btnDisabled = true
this.startLoading()
const { data, code, msg } = await requestPost(url, params)
this.endLoading()
this.btnDisabled = false
if (code === 0) {
this.$router.replace({
name: 'staffRegisterSuccess',
query: {
selectTab: this.selectTab,
placeOrgName: this.placeOrgName,
formData: this.selectTab === '1' ? this.formData : this.formData2
}
})
// Toast({
// message: '提交成功',
// duration: 3000
// });
} else {
Toast({
message: msg,
duration: 3000
});
}
},
//必填验证
validataFormData () {
let aletMessage = ''
this.showMessagsBox = false
if (this.selectTab === '1') {//员工
if (!this.formData.name) {
aletMessage = '请填写姓名'
return aletMessage
}
if (!this.formData.mobile) {
aletMessage = '请填写手机号'
return aletMessage
}
if (!this.formData.idCard) {//
aletMessage = '请填写证件号'
return aletMessage
} else {
let reg = new RegExp("[\\u4E00-\\u9FFF]+", "g");
if (escape(this.formData.idCard).indexOf("%u") > 0 || escape(this.formData.idCard).indexOf("%u") == 0) {
aletMessage = '请输入正确的身份证号或者护照号'
return aletMessage
}
if (this.formData.idCard.length > 18) {
aletMessage = '请输入正确的身份证号或者护照号'
return aletMessage
}
}
if (!this.formData.ymjzCount) {//
aletMessage = '请选择疫苗接种次数'
return aletMessage
}
if (!this.formData.latestNatTime) {//
aletMessage = '请选择最近一次核酸检测时间'
return aletMessage
}
} else if (this.selectTab === '2') {//企业
if (!this.formData2.natTime) {
aletMessage = '请选择核酸检测时间'
return aletMessage
}
if (!this.formData2.szTotal) {
aletMessage = '请填写受众人数'
return aletMessage
}
if (!this.formData2.hsjcTotal) {//
aletMessage = '核酸检测人数'
return aletMessage
}
}
},
popupOk () {
if (this.selType === 'ymjzCount') {
this.formData.ymjzCount = this.selObj.value
this.formData.ymjzCountName = this.selObj.label
}
this.popupVisible = false
},
onPickerChange (picker, values) {
this.selObj = values[0]
},
// 开启加载动画
startLoading () {
loading = Loading.service({
lock: true, // 是否锁定
text: '正在加载……', // 加载中需要显示的文字
background: 'rgba(0,0,0,.7)' // 背景颜色
})
},
// 结束加载动画
endLoading () {
// clearTimeout(timer);
if (loading) {
loading.close()
}
}
},
beforeDestroy () {
// document.title = messages[val].brand.lg
},
}
</script>
<style lang="scss" scoped >
@import "@/assets/scss/pages/staffRegister.scss";
/deep/ .mint-cell-wrapper {
padding: 0 5px 0 0;
}
.my-field /deep/ .mint-field-core {
text-align: right;
margin-right: 20px;
}
.my-field /deep/ .mint-cell-title {
width: 110px;
}
/deep/ .mint-popup-bottom {
height: 300px;
width: 100vw;
}
// /deep/ .picker {
// height: 300px;
// }
/deep/ .picker-items {
height: 250px;
width: 100vw;
}
/deep/ .picker-slot-center {
width: 100vw;
}
// /deep/ .picker-center-highlight {
// top: 35%;
// }
.div_picker {
/deep/ .picker-center-highlight {
top: 35%;
}
}
.picker-toolbar-title {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
background-color: #eee;
height: 44px;
line-height: 44px;
font-size: 16px;
.usi-btn-cancel,
.usi-btn-sure {
color: #26a2ff;
font-size: 16px;
}
}
</style>