|
|
|
@ -26,7 +26,7 @@ |
|
|
|
label="所属网格" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
|
<el-select class="item_width_2" |
|
|
|
<el-select class="item_width_4" |
|
|
|
v-model.trim="formData.gridId" |
|
|
|
placeholder="请选择" |
|
|
|
:disabled="!isFromResi" |
|
|
|
@ -44,7 +44,7 @@ |
|
|
|
prop="userId" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
|
<el-select class="item_width_2" |
|
|
|
<el-select class="item_width_4" |
|
|
|
v-model.trim="formData.userId" |
|
|
|
placeholder="请选择" |
|
|
|
filterable |
|
|
|
@ -63,11 +63,12 @@ |
|
|
|
prop="name" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_2" |
|
|
|
<el-input class="item_width_4" |
|
|
|
placeholder="请输入姓名" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
v-model="formData.name" style="margin-right:10px;"> |
|
|
|
v-model="formData.name" |
|
|
|
style="margin-right:10px;"> |
|
|
|
</el-input> |
|
|
|
<el-checkbox v-model="formData.heSuanCheck">添加到核酸检测关注名单</el-checkbox> |
|
|
|
</el-form-item> |
|
|
|
@ -76,7 +77,7 @@ |
|
|
|
prop="mobile" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_2" |
|
|
|
<el-input class="item_width_4" |
|
|
|
placeholder="请输入手机号" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
@ -87,62 +88,146 @@ |
|
|
|
prop="idCard" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_2" |
|
|
|
<el-input class="item_width_4" |
|
|
|
placeholder="请输入身份证号或证件号" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
v-model="formData.idCard"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item |
|
|
|
label="现居地" |
|
|
|
<el-form-item label="现居地" |
|
|
|
prop="presentAddress" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
|
<el-input v-if="formType == 'detail'" class="item_width_2" |
|
|
|
<el-input v-if="formType == 'detail'" |
|
|
|
class="item_width_4" |
|
|
|
placeholder="请输入现居地" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
:style="'width: ' + computedWd(formData.presentAddress)" |
|
|
|
v-model="formData.presentAddress" /> |
|
|
|
<template v-else> |
|
|
|
<el-input v-if="isFromResi" class="item_width_2 mw180" |
|
|
|
placeholder="请输入现居地" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
v-model="formData.presentAddress" /> |
|
|
|
<el-cascader v-else ref="nowArea" class="item_width_2" :props="areaProps" |
|
|
|
v-model="nowAllCode" clearable @change="handleNowArea"></el-cascader> |
|
|
|
<el-input v-if="isFromResi" |
|
|
|
class="item_width_4 mw180" |
|
|
|
placeholder="请输入现居地" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
v-model="formData.presentAddress" /> |
|
|
|
<el-cascader v-else |
|
|
|
ref="nowArea" |
|
|
|
class="item_width_4" |
|
|
|
:props="areaProps" |
|
|
|
v-model="nowAllCode" |
|
|
|
clearable |
|
|
|
@change="handleNowArea"></el-cascader> |
|
|
|
</template> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="详细地址" |
|
|
|
prop="detailAddress" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_2" |
|
|
|
<el-input class="item_width_4" |
|
|
|
placeholder="请输入详细地址" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
v-model="formData.detailAddress"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="来自地区" prop="sourceAddress" style="display: block" label-width="150px"> |
|
|
|
<el-input v-if="formType == 'detail'" class="item_width_2" |
|
|
|
<el-form-item label="返回交通方式" |
|
|
|
prop="trafficType" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
|
<el-select class="item_width_4" |
|
|
|
v-model.trim="formData.trafficType" |
|
|
|
placeholder="请选择" |
|
|
|
clearable> |
|
|
|
<el-option v-for="item in trafficTypeList" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item v-if="formData.trafficType==='4'" |
|
|
|
label="其他" |
|
|
|
prop="trafficTypeExplain" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
|
<el-input class="item_width_4" |
|
|
|
placeholder="请输入交通方式" |
|
|
|
clearable |
|
|
|
v-model="formData.trafficTypeExplain"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="来自地区" |
|
|
|
prop="sourceAddress" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
|
<el-input v-if="formType == 'detail'" |
|
|
|
class="item_width_4" |
|
|
|
placeholder="" |
|
|
|
clearable |
|
|
|
:disabled="isFromResi" |
|
|
|
v-model="formData.sourceAddress" |
|
|
|
:style="'width: ' + computedWd(formData.sourceAddress)"> |
|
|
|
</el-input> |
|
|
|
<el-cascader v-else ref="sourceArea" v-model="sourceAllCode" class="item_width_2" :props="areaProps" |
|
|
|
@change="handleSourceArea" clearable></el-cascader> |
|
|
|
<el-cascader v-else |
|
|
|
ref="sourceArea" |
|
|
|
v-model="sourceAllCode" |
|
|
|
class="item_width_4" |
|
|
|
:props="areaProps" |
|
|
|
@change="handleSourceArea" |
|
|
|
clearable></el-cascader> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="详细地址" |
|
|
|
prop="sourceDetailAddress" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-input class="item_width_4" |
|
|
|
placeholder="请输入详细地址" |
|
|
|
clearable |
|
|
|
v-model="formData.sourceDetailAddress"> |
|
|
|
</el-input> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="疫苗接种针次" |
|
|
|
prop="vaccineNum" |
|
|
|
style="display: block" |
|
|
|
label-width="150px"> |
|
|
|
<el-select class="item_width_4" |
|
|
|
v-model.trim="formData.vaccineNum" |
|
|
|
placeholder="请选择" |
|
|
|
clearable> |
|
|
|
<el-option v-for="item in ymList" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="48小时核酸记录" |
|
|
|
style="display: block" |
|
|
|
prop="isNatRecord" |
|
|
|
label-width="150px"> |
|
|
|
<el-select class="item_width_4" |
|
|
|
v-model.trim="formData.isNatRecord" |
|
|
|
placeholder="请选择" |
|
|
|
clearable> |
|
|
|
<el-option v-for="item in hsList" |
|
|
|
:key="item.value" |
|
|
|
:label="item.label" |
|
|
|
:value="item.value"> |
|
|
|
</el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="来到本地时间" |
|
|
|
style="display: block" |
|
|
|
prop="arriveDate" |
|
|
|
label-width="150px"> |
|
|
|
<el-date-picker class="item_width_2" |
|
|
|
<el-date-picker class="item_width_4" |
|
|
|
v-model="formData.arriveDate" |
|
|
|
:picker-options="pickerOptions" |
|
|
|
format="yyyy-MM-dd HH:mm" |
|
|
|
@ -156,7 +241,7 @@ |
|
|
|
style="display: block" |
|
|
|
prop="leaveDate" |
|
|
|
label-width="150px"> |
|
|
|
<el-date-picker class="item_width_2" |
|
|
|
<el-date-picker class="item_width_4" |
|
|
|
v-model="formData.leaveDate" |
|
|
|
format="yyyy-MM-dd HH:mm" |
|
|
|
value-format="yyyy-MM-dd HH:mm" |
|
|
|
@ -181,19 +266,20 @@ |
|
|
|
|
|
|
|
<template v-if="formType != 'detail'"> |
|
|
|
<el-form-item label="通知渠道" |
|
|
|
prop="channel" |
|
|
|
label-width="150px" |
|
|
|
prop="channel" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
<el-checkbox-group v-model="formData.channel"> |
|
|
|
<el-checkbox key="0" |
|
|
|
label="0">小程序通知</el-checkbox> |
|
|
|
label="0">小程序通知</el-checkbox> |
|
|
|
<!-- <el-checkbox key="1" |
|
|
|
label="1">短信通知</el-checkbox> --> |
|
|
|
|
|
|
|
</el-checkbox-group> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item v-show="formData.channel.length > 0" label="通知内容" |
|
|
|
<el-form-item v-show="formData.channel.length > 0" |
|
|
|
label="通知内容" |
|
|
|
prop="content" |
|
|
|
label-width="150px" |
|
|
|
style="display: block"> |
|
|
|
@ -263,7 +349,7 @@ export default { |
|
|
|
gridList: [], |
|
|
|
personList: [], |
|
|
|
pickerOptions: { |
|
|
|
disabledDate(time) { |
|
|
|
disabledDate (time) { |
|
|
|
return time.getTime() > Date.now(); |
|
|
|
} |
|
|
|
}, |
|
|
|
@ -287,42 +373,114 @@ export default { |
|
|
|
presentAddressPathCode: '', |
|
|
|
sourceAddress: '', |
|
|
|
sourceAddressPathCode: '', |
|
|
|
sourceDetailAddress: '', |
|
|
|
arriveDate: '', |
|
|
|
remark: '', |
|
|
|
leaveDate: '', |
|
|
|
userType: 'input', |
|
|
|
content: '', |
|
|
|
channel: [] |
|
|
|
channel: [], |
|
|
|
|
|
|
|
trafficType: '', |
|
|
|
trafficTypeExplain: '', |
|
|
|
isNatRecord: '', |
|
|
|
vaccineNum: '', |
|
|
|
|
|
|
|
}, |
|
|
|
dataRule: { |
|
|
|
name: [ |
|
|
|
{ required: true, message: '姓名不能为空', trigger: 'blur' } |
|
|
|
{ required: true, message: '姓名不能为空', trigger: 'change' } |
|
|
|
], |
|
|
|
idCard: [ |
|
|
|
{ required: true, validator: checkIdCard, trigger: 'blur' } |
|
|
|
{ required: true, validator: checkIdCard, trigger: 'change' } |
|
|
|
], |
|
|
|
mobile: [ |
|
|
|
{ required: true, validator: checkMObile, trigger: 'blur' }, |
|
|
|
{ required: true, validator: checkMObile, trigger: 'change' }, |
|
|
|
], |
|
|
|
presentAddress: [ |
|
|
|
{ required: true, message: '现居地不能为空', trigger: 'blur' }, |
|
|
|
{ required: true, message: '现居地不能为空', trigger: 'change' }, |
|
|
|
], |
|
|
|
detailAddress: [ |
|
|
|
{ required: true, message: '详细地址不能为空', trigger: 'blur' }, |
|
|
|
{ required: true, message: '详细地址不能为空', trigger: 'change' }, |
|
|
|
], |
|
|
|
sourceAddress: [ |
|
|
|
{ required: true, message: '来自地区不能为空', trigger: 'blur' }, |
|
|
|
{ required: true, message: '来自地区不能为空', trigger: 'change' }, |
|
|
|
], |
|
|
|
sourceDetailAddress: [ |
|
|
|
{ required: true, message: '来自地区详细地址不能为空', trigger: 'change' }, |
|
|
|
], |
|
|
|
arriveDate: [ |
|
|
|
{ required: true, message: '来到本地时间不能为空', trigger: 'blur' }, |
|
|
|
{ required: true, message: '来到本地时间不能为空', trigger: 'change' }, |
|
|
|
], |
|
|
|
trafficType: [ |
|
|
|
{ required: true, message: '交通方式不能为空', trigger: 'change' }, |
|
|
|
], |
|
|
|
trafficTypeExplain: [ |
|
|
|
{ required: true, message: '其他交通方式不能为空', trigger: 'change' }, |
|
|
|
], |
|
|
|
isNatRecord: [ |
|
|
|
{ required: true, message: '48小时核酸记录不能为空', trigger: 'change' }, |
|
|
|
], |
|
|
|
vaccineNum: [ |
|
|
|
{ required: true, message: '疫苗接种针刺不能为空', trigger: 'change' }, |
|
|
|
] |
|
|
|
}, |
|
|
|
areaProps: { |
|
|
|
// checkStrictly: true, |
|
|
|
lazy: true, |
|
|
|
lazyLoad: this.lzayLoadArea |
|
|
|
} |
|
|
|
}, |
|
|
|
|
|
|
|
trafficTypeList: [ |
|
|
|
{ |
|
|
|
value: '0', |
|
|
|
label: '飞机' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '1', |
|
|
|
label: '动车' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '2', |
|
|
|
label: '火车' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '3', |
|
|
|
label: '自驾' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '4', |
|
|
|
label: '其他' |
|
|
|
}, |
|
|
|
], |
|
|
|
ymList: [ |
|
|
|
{ |
|
|
|
value: '0', |
|
|
|
label: '0针' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '1', |
|
|
|
label: '1针' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '2', |
|
|
|
label: '2针' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '3', |
|
|
|
label: '3针' |
|
|
|
} |
|
|
|
], |
|
|
|
hsList: [ |
|
|
|
{ |
|
|
|
value: '1', |
|
|
|
label: '是' |
|
|
|
}, |
|
|
|
{ |
|
|
|
value: '2', |
|
|
|
label: '否' |
|
|
|
} |
|
|
|
] |
|
|
|
|
|
|
|
} |
|
|
|
}, |
|
|
|
@ -332,12 +490,13 @@ export default { |
|
|
|
this.agencyId = user.agencyId |
|
|
|
//获取网格下拉框数据 |
|
|
|
await this.loadGrid() |
|
|
|
this.getTrafficType() |
|
|
|
}, |
|
|
|
destroyed() { |
|
|
|
destroyed () { |
|
|
|
this.nowAllCode = [] |
|
|
|
}, |
|
|
|
methods: { |
|
|
|
computedWd(val) { |
|
|
|
computedWd (val) { |
|
|
|
const len = val.length |
|
|
|
const wd = len * 18 |
|
|
|
let w = '' |
|
|
|
@ -345,7 +504,7 @@ export default { |
|
|
|
else w = 220 |
|
|
|
return w + 'px' |
|
|
|
}, |
|
|
|
lzayLoadArea(node, resolve) { |
|
|
|
lzayLoadArea (node, resolve) { |
|
|
|
// this.getArea(node, resolve) |
|
|
|
setTimeout(() => { |
|
|
|
this.getArea(node, resolve) |
|
|
|
@ -389,7 +548,7 @@ export default { |
|
|
|
|
|
|
|
|
|
|
|
}, |
|
|
|
handleSourceArea(val) { |
|
|
|
handleSourceArea (val) { |
|
|
|
console.log('val-----', val) |
|
|
|
console.log('label-----', this.$refs.sourceArea.getCheckedNodes()) |
|
|
|
if (val.length > 0) { |
|
|
|
@ -405,7 +564,7 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
handleNowArea(val) { |
|
|
|
handleNowArea (val) { |
|
|
|
console.log('val-----', val) |
|
|
|
console.log('label-----', this.$refs.nowArea.getCheckedNodes()) |
|
|
|
if (val.length > 0) { |
|
|
|
@ -437,6 +596,23 @@ export default { |
|
|
|
this.$message.error(msg) |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
async getTrafficType () { |
|
|
|
const url = "/sys/dict/data/dictlist" |
|
|
|
|
|
|
|
let params = { |
|
|
|
dictType: "traffic_type", |
|
|
|
} |
|
|
|
|
|
|
|
const { data, code, msg } = await requestPost(url, params) |
|
|
|
|
|
|
|
if (code === 0) { |
|
|
|
this.trafficTypeList = data |
|
|
|
|
|
|
|
} else { |
|
|
|
this.$message.error(msg) |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
async handleSelGrid (value) { |
|
|
|
|
|
|
|
@ -482,7 +658,7 @@ export default { |
|
|
|
} |
|
|
|
|
|
|
|
}, |
|
|
|
async handleSelAddress(value) { |
|
|
|
async handleSelAddress (value) { |
|
|
|
|
|
|
|
const url = "/gov/org/house/gethouseinfo/" + value |
|
|
|
|
|
|
|
@ -613,7 +789,6 @@ export default { |
|
|
|
min-width: 260px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
</style> |
|
|
|
|
|
|
|
<style lang='scss'> |
|
|
|
|