<template>
	<view class="questionnaire">
		<form @submit="formSubmit">
			<template v-for="(item,index) in list">
				<template v-if="item.type == 'radio'">
					<view class="margin-top padding sict-label" :key="item.value" v-show="!item.hidden">
						<view v-show="!item.hidden">
							<span style="color:red;display: inline-block; vertical-align:inherit;margin-right:4upx" :style="{opacity: item.required ? 1 : 0}">*</span>
							{{item.label}}
						</view>
						<view class="text-right  sict-value" v-show="!item.hidden">
							<radio-group @change="showChange($event,item)">
								<view>
									<view class="label" v-for="(opt, optIndex) in item.opts" :key="opt.label">
										<radio :class="form[item.value]== opt.value ?'checked':''" :checked="form[item.value]== opt.value?true:false"
										 :value="opt.value"></radio>
										<view style="display: inline-block;" class="right">{{opt.label}}</view>
									</view>
								</view>
							</radio-group>
						</view>
					</view>
				</template>
				<template v-else-if="item.type == 'pickerAddress'">
					<view class="cu-form-group margin-top padding-rl" v-show="!item.hidden" :key="item.value">
						<view :class="item.titleClass"><span style="color:red;display: inline-block; vertical-align:inherit;margin-right:4upx"
							 :style="{opacity: item.required ? 1 : 0}">*</span>{{item.label}}</view>
						<pickerAddress @change="addressChange($event,item)">
							<view class="picker">
								{{form[item.value]?form[item.value]:'请选择'}}
							</view>
						</pickerAddress>
					</view>
				</template>
				<template v-else-if="item.type == 'picker'">
					<view class="cu-form-group margin-top padding-rl" v-show="!item.hidden" :key="item.value">
						<view :class="item.titleClass"><span style="color:red;display: inline-block; vertical-align:inherit;margin-right:4upx"
							 :style="{opacity: item.required ? 1 : 0}">*</span>{{item.label}}</view>
						<picker @change="updatePickerVal($event,item)" range-key="label" mode="selector" :value="form[item.value]" :range="item.opts">
							<view class="picker">
								{{form[item.value] && formMat[item.value] ? formMat[item.value]:'请选择'}}
							</view>
						</picker>
					</view>
				</template>

				<template v-else-if="item.type == 'pickerMore'">
					<view class="margin-top" :key="index">
						<uni-collapse>
							<uni-collapse-item :title="item.label" :open="true" :required="item.required">
								<view class="padding-lr">
									<view class="uni-list">
										<checkbox-group @change="showChange($event,item)">
											<label class="uni-list-cell uni-list-cell-pd" v-for="(itemCheck,indexCheck) in item.opts" :key="itemCheck.value"
											 @click="checkboxChange(indexCheck,itemCheck,item)">
												<view class="list-item">
													<view class="fl">
														<checkbox :value="itemCheck.value" :checked="itemCheck.checked" />
													</view>
													<view style="padding-left:60upx">{{itemCheck.label}}</view>
												</view>
											</label>
										</checkbox-group>
									</view>
								</view>
							</uni-collapse-item>
						</uni-collapse>
					</view>
				</template>

				<template v-else-if="item.type == 'date'">
					<view class="cu-form-group margin-top padding-rl" v-show="!item.hidden" :key="item.value">
						<view :class="item.titleClass"><span style="color:red;display: inline-block; vertical-align:inherit;margin-right:4upx"
							 :style="{opacity: item.required ? 1 : 0}">*</span>{{item.label}}</view>
						<picker mode="date" :value="form[item.value]" start="2015-09-01" end="2020-09-01" @change="updatePickerVal($event,item)">
							<view class="picker">
								{{form[item.value]?form[item.value]:'请选择'}}
							</view>
						</picker>
					</view>
				</template>
				<template v-else-if="item.type == 'input'">
					<view class="cu-form-group margin-top padding-rl" :key="item.value" v-show="!item.hidden">
						<view :class="item.titleClass">
							<span style="color:red;display: inline-block; vertical-align:inherit;margin-right:4upx" :style="{opacity: item.required ? 1 : 0}">*</span>
							{{item.label}}</view>
						<input class="text-right" :placeholder="item.placeholder" :type="item.controType" :value="form[item.value]" name="input"
						 @input="updateInputVal($event,item.value)" @blur="inputBlur($event,item)"></input>
					</view>
				</template>

				<view class="margin-top-xs" v-show="item.child && childItem.show" v-for="(childItem,childIndex) in item.child" :key="childItem.value">
					<view class="margin-top-sm padding-rl sict-label cu-form-group">
						<view>
							<span style="color:red;display: inline-block; vertical-align:inherit;margin-right:4upx" v-if="childItem.required">*</span>
							{{childItem.title}}
						</view>
						<checkbox v-if="childItem.type == 'radio'" :class="form[childItem.value]?'checked':''" :checked="form[childItem.value]?true:false"
						 :value="childItem.value"></checkbox>

						<picker v-else-if="childItem.type == 'picker'" range-key="label" @change="updatePickerVal($event,childItem)"
						 :value="form[childItem.value]" :range="childItem.opts">
							<view class="picker">
								{{form[childItem.value]>-1?childItem.opts[form[childItem.value]].label:'请选择'}}
							</view>
						</picker>
						<input class="text-right" v-else-if="childItem.type == 'input'" :type="childItem.controType" :placeholder="childItem.placeholder"
						 :value="form[childItem.value]" name="input" @input="updateInputVal($event,childItem.value)"></input>
					</view>
				</view>
			</template>

			<view class="cu-form-group margin-top-sm" v-show="!isRead">
				<view class="uni-padding-wrap uni-common-mt">
					<view class="padding-top padding-bottom">
						<checkbox-group @click="openModal">
							<label>
								<checkbox value="A" :checked="form.agree == 1" class="fl" style="margin-top:4upx" />
								<view style="padding-left:60upx;padding-top:6upx">
									我已阅读并认可<span style="color:#0081FF" @click.stop="modalName = true">《知情同意书》</span>，承诺如实填报。
								</view>
							</label>
						</checkbox-group>
					</view>
				</view>
				</checkbox-group>
			</view>

			<view class="cu-modal" :class="modalName?'show':''">
				<view class="cu-dialog">
					<view class="cu-bar bg-white justify-end text-bold">
						<view class="content">知情同意书</view>
						<view class="action" @tap="modalName = ''">
							<text class="cuIcon-close text-black"></text>
						</view>
					</view>
					<view class="padding-xl green-word">
						<div class="text-left">
							<p class="content">根据中华人民共和国国家卫生健康委员会2020年第1号公告要求以及《国际卫生条例（2005）》、《中华人民共和国传染病防治法》等有关法律规定，并按照国务院常务会议提出的“分类有序复工复产”和上海疫情防控办及市政府《关于进一步落实各项疫情防控措施的通告》的相关要求，为做好新型冠状病毒感染的肺炎疫情防控工作，保障广大人民群众生命健康，现面向使用本系统的所有用户，特告知如下：</p>
							<p>&nbsp;</p>
							<p class="content">本系统将对所有注册使用的用户信息进行记录，必要时将与执法部门进行信息对接，请积极配合并确保所填信息真实、有效。如若有任何瞒报情况被查出，将被有关部门依法追究法律责任并被列为失信人员，敬请配合。</p>
							<p>&nbsp;</p>
							<p class="content">另本人承诺：同意将本系统的个人信息数据经脱敏后用于防疫工作开展以及相关科学研究等。</p>
						</div>
						<button @click="modalName = ''" class="cu-btn block bg-blue margin-tb-sm lg">我知道了</button>
					</view>
				</view>
			</view>
			<view class="padding" v-show="!isRead">
				<button form-type="submit" class="cu-btn block bg-blue margin-tb-sm lg">提 交</button>
			</view>
		</form>
	</view>
</template>

<script>
	import uniCollapse from '@/components/uni-collapse/uni-collapse.vue'
	import uniCollapseItem from '@/components/uni-collapse-item/uni-collapse-item.vue'
	import validate from '@/utils/validate.js'
	import pickerAddress from '@/components/pickerAddress/pickerAddress.vue'
	export default {
		components: {
			uniCollapse,
			uniCollapseItem,
			pickerAddress
		},
		data() {
			return {
				modalName: false,
				isRead: false,
				list: [{
						label: '单位名称',
						required: true,
						value: 'orgId',
						titleClass: 'title',
						type: 'picker',
						opts: []
					},
					{
						label: '所在部门（选填）',
						value: 'department',
						titleClass: 'title',
						placeholder: '请输入所在部门',
						type: 'input',
					},
					{
						label: '职务（选填）',
						value: 'position',
						titleClass: 'title',
						placeholder: '请输入职务',
						type: 'input',
					},
					{
						label: '员工姓名',
						required: true,
						value: 'name',
						titleClass: 'title',
						placeholder: '请输入员工姓名',
						type: 'input',
					},
					{
						label: '联系方式',
						required: true,
						value: 'phone',
						titleClass: 'title',
						placeholder: '请输入11位数字手机号',
						type: 'input',
						validator: validate.isPhone
					},
					{
						label: '国籍',
						required: true,
						value: 'nationality',
						titleClass: 'title',
						type: 'picker',
						opts: [{
								label: "中国",
								value: "China"
							},
							{
								label: "中国香港",
								value: "Hong Kong"
							},
							{
								label: "中国澳门",
								value: "Macau"
							},
							{
								label: "中国台湾",
								value: "Taiwan prov."
							},
							{
								label: "喀麦隆",
								value: "Cameroon"
							},
							{
								label: "加拿大",
								value: "Canada"
							},
							{
								label: "加那利群岛",
								value: "Canary Is"
							},
							{
								label: "佛得角",
								value: "Cape Verde"
							},
							{
								label: "开曼群岛",
								value: "Cayman Is"
							},
							{
								label: "中非共和国",
								value: "Central African Rep."
							},
							{
								label: "乍得",
								value: "Chad"
							},
							{
								label: "智利",
								value: "Chile"
							},

							{
								label: "哥伦比亚",
								value: "Colombia"
							},
							{
								label: "科摩罗",
								value: "Comoros"
							},
							{
								label: "刚果",
								value: "Congo"
							},
							{
								label: "民主刚果",
								value: "Congo,DR"
							},
							{
								label: "库克群岛",
								value: "Cook Is"
							},
							{
								label: "哥斯达黎加",
								value: "Costa Rica"
							},
							{
								label: "科特迪瓦",
								value: "Cote d'lvoire"
							},
							{
								label: "克罗地亚",
								value: "Croatia Rep"
							},
							{
								label: "古巴",
								value: "Cuba"
							},
							{
								label: "库腊索岛",
								value: "Curacao"
							},
							{
								label: "塞浦路斯",
								value: "Cyprus"
							},
							{
								label: "捷克共和国",
								value: "Czech Rep"
							},
							{
								label: "丹麦",
								value: "Denmark"
							},
							{
								label: "吉布提",
								value: "Djibouti"
							},
							{
								label: "多米尼克",
								value: "Dominica"
							},
							{
								label: "多米尼加共和国",
								value: "Dominican Rep."
							},
							{
								label: "东帝汶",
								value: "East Timor"
							},
							{
								label: "厄瓜多尔",
								value: "Ecuador"
							},
							{
								label: "埃及",
								value: "Egypt"
							},
							{
								label: "萨尔瓦多",
								value: "El Salvador"
							},
							{
								label: "赤道几内亚",
								value: "Eq.Guinea"
							},
							{
								label: "厄立特里亚",
								value: "Eritrea"
							},
							{
								label: "爱沙尼亚",
								value: "Estonia"
							},
							{
								label: "埃塞俄比亚",
								value: "Ethiopia"
							},
							{
								label: "斐济",
								value: "Fiji"
							},
							{
								label: "芬兰",
								value: "Finland"
							},
							{
								label: "法国",
								value: "France"
							},
							{
								label: "法属圭亚那",
								value: "French Guyana"
							},
							{
								label: "法属玻利尼西亚",
								value: "French Polynesia"
							},
							{
								label: "加蓬",
								value: "Gabon"
							},
							{
								label: "冈比亚",
								value: "Gambia"
							},
							{
								label: "盖比群岛",
								value: "Gambier Is"
							},
							{
								label: "格鲁吉亚",
								value: "Georgia"
							},
							{
								label: "德国",
								value: "Germany"
							},
							{
								label: "加纳",
								value: "Ghana"
							},
							{
								label: "直布罗陀",
								value: "Gibraltar"
							},
							{
								label: "希腊",
								value: "Greece"
							},
							{
								label: "格陵兰",
								value: "Greenland"
							},
							{
								label: "格林纳达",
								value: "Grenada"
							},
							{
								label: "瓜德罗普",
								value: "Guadeloupe"
							},
							{
								label: "危地马拉",
								value: "Guatemala"
							},
							{
								label: "几内亚",
								value: "Guinea"
							},
							{
								label: "几内亚(比绍)",
								value: "Guinea Bissau"
							},
							{
								label: "圭亚那",
								value: "Guyana"
							},
							{
								label: "海地",
								value: "Haiti"
							},
							{
								label: "洪都拉斯",
								value: "Honduras"
							},

							{
								label: "匈牙利",
								value: "Hungary"
							},
							{
								label: "冰岛",
								value: "Iceland"
							},
							{
								label: "印度",
								value: "India"
							},
							{
								label: "印度尼西亚",
								value: "Indonesia"
							},
							{
								label: "伊朗",
								value: "Iran"
							},
							{
								label: "伊拉克",
								value: "Iraq"
							},
							{
								label: "爱尔兰",
								value: "Ireland"
							},
							{
								label: "以色列",
								value: "Israel"
							},
							{
								label: "意大利",
								value: "Italy"
							},
							{
								label: "牙买加",
								value: "Jamaica"
							},
							{
								label: "日本",
								value: "Japan"
							},
							{
								label: "约旦",
								value: "Jordan"
							},
							{
								label: "哈萨克斯坦",
								value: "Kazakhstan"
							},
							{
								label: "肯尼亚",
								value: "Kenya"
							},
							{
								label: "吉尔吉斯斯坦",
								value: "Kirghizia"
							},
							{
								label: "基里巴斯",
								value: "Kiribati"
							},
							{
								label: "韩国",
								value: "Korea Rep."
							},
							{
								label: "朝鲜",
								value: "Korea,DPR"
							},
							{
								label: "科威特",
								value: "Kuwait"
							},
							{
								label: "老挝",
								value: "Laos,PDR"
							},
							{
								label: "拉脱维亚",
								value: "Latvia"
							},
							{
								label: "黎巴嫩",
								value: "Lebanon"
							},
							{
								label: "莱索托",
								value: "Lesotho"
							},
							{
								label: "利比里亚",
								value: "Liberia"
							},
							{
								label: "利比亚",
								value: "Libyan Arab Jm"
							},
							{
								label: "列支敦士登",
								value: "Liechtenstein"
							},
							{
								label: "立陶宛",
								value: "Lithuania"
							},
							{
								label: "卢森堡",
								value: "Luxembourg"
							},
							{
								label: "马其顿",
								value: "Macedonia Rep"
							},
							{
								label: "马达加斯加",
								value: "Madagascar"
							},
							{
								label: "马拉维",
								value: "Malawi"
							},
							{
								label: "马来西亚",
								value: "Malaysia"
							},
							{
								label: "马尔代夫",
								value: "Maldives"
							},
							{
								label: "马里",
								value: "Mali"
							},
							{
								label: "马耳他",
								value: "Malta"
							},
							{
								label: "马克萨斯群岛",
								value: "Marquesas Is"
							},
							{
								label: "马绍尔群岛",
								value: "Marshall Is Rep"
							},
							{
								label: "马提尼克",
								value: "Martinique"
							},
							{
								label: "毛里塔尼亚",
								value: "Mauritania"
							},
							{
								label: "毛里求斯",
								value: "Mauritius"
							},
							{
								label: "马约特岛",
								value: "Mayotte"
							},
							{
								label: "梅利利亚",
								value: "Melilla"
							},
							{
								label: "墨西哥",
								value: "Mexico"
							},
							{
								label: "密克罗尼西亚联邦",
								value: "Micronesia Fs"
							},
							{
								label: "摩尔多瓦",
								value: "Moldavia"
							},
							{
								label: "摩纳哥",
								value: "Monaco"
							},
							{
								label: "蒙古",
								value: "Mongolia"
							},
							{
								label: "蒙特塞拉特",
								value: "Montserrat"
							},
							{
								label: "摩洛哥",
								value: "Morocco"
							},
							{
								label: "莫桑比克",
								value: "Mozambique"
							},
							{
								label: "缅甸",
								value: "Myanmar"
							},
							{
								label: "纳米比亚",
								value: "Namibia"
							},
							{
								label: "瑙鲁",
								value: "Nauru"
							},
							{
								label: "尼泊尔",
								value: "Nepal"
							},
							{
								label: "荷兰",
								value: "Netherlands"
							},
							{
								label: "荷属安德列斯",
								value: "NETHERLANDS ANTILLES"
							},
							{
								label: "新喀里多尼亚",
								value: "New Caledonia"
							},
							{
								label: "新西兰",
								value: "New Zealand"
							},
							{
								label: "尼加拉瓜",
								value: "Nicaragua"
							},
							{
								label: "尼日尔",
								value: "Niger"
							},
							{
								label: "尼日利亚",
								value: "Nigeria"
							},
							{
								label: "诺福克岛",
								value: "Norfolk Is"
							},
							{
								label: "挪威",
								value: "Norway"
							},
							{
								label: "阿曼",
								value: "Oman"
							},
							{
								label: "巴基斯坦",
								value: "Pakistan"
							},
							{
								label: "帕劳共和国",
								value: "Palau"
							},
							{
								label: "巴勒斯坦",
								value: "Palestine"
							},
							{
								label: "巴拿马",
								value: "Panama"
							},
							{
								label: "巴布亚新几内亚",
								value: "Papua New Guinea"
							},
							{
								label: "巴拉圭",
								value: "Paraguay"
							},
							{
								label: "秘鲁",
								value: "Peru"
							},
							{
								label: "菲律宾",
								value: "Philippines"
							},
							{
								label: "波兰",
								value: "Poland"
							},
							{
								label: "葡萄牙",
								value: "Portugal"
							},
							{
								label: "波多黎各",
								value: "Puerto Rico"
							},
							{
								label: "卡塔尔",
								value: "Qatar"
							},
							{
								label: "也门共和国",
								value: "Republic of Yemen"
							},
							{
								label: "留尼汪",
								value: "Reunion"
							},
							{
								label: "罗马尼亚",
								value: "Romania"
							},
							{
								label: "俄罗斯联邦",
								value: "Russia"
							},
							{
								label: "卢旺达",
								value: "Rwanda"
							},
							{
								label: "南非",
								value: "S.Africa"
							},
							{
								label: "萨巴",
								value: "Saba"
							},
							{
								label: "圣卢西亚",
								value: "Saint Lucia"
							},
							{
								label: "圣马丁岛",
								value: "Saint Martin Is"
							},
							{
								label: "圣文森特和格林纳丁斯",
								value: "Saint Vincent & Grenadines"
							},
							{
								label: "萨摩亚",
								value: "Samoa"
							},
							{
								label: "圣马力诺",
								value: "San Marino"
							},
							{
								label: "圣多美和普林西比",
								value: "Sao Tome and Principe"
							},
							{
								label: "沙特阿拉伯",
								value: "Saudi Arabia"
							},
							{
								label: "塞内加尔",
								value: "Senegal"
							},
							{
								label: "塞黑",
								value: "Serbia & Montenegro"
							},
							{
								label: "塞舌尔",
								value: "Seychelles"
							},
							{
								label: "塞拉利昂",
								value: "Sierra Leone"
							},
							{
								label: "新加坡",
								value: "Singapore"
							},
							{
								label: "斯洛伐克",
								value: "Slovak Rep"
							},
							{
								label: "斯洛文尼亚",
								value: "Slovenia Rep"
							},
							{
								label: "社会群岛",
								value: "Society Is"
							},
							{
								label: "所罗门群岛",
								value: "Solomon Is"
							},
							{
								label: "索马里",
								value: "Somalia"
							},
							{
								label: "西班牙",
								value: "Spain"
							},
							{
								label: "斯里兰卡",
								value: "Sri Lanka"
							},
							{
								label: "圣其茨-尼维斯",
								value: "St. Kitts-Nevis"
							},
							{
								label: "圣卢西亚",
								value: "ST. LUCIA"
							},
							{
								label: "圣文森特和格纳丁斯",
								value: "ST. VINCENT AND THE GRENADINES"
							},
							{
								label: "圣皮埃尔和密克隆",
								value: "St.Pierre and Miquelon"
							},
							{
								label: "苏丹",
								value: "Sudan"
							},
							{
								label: "苏里南",
								value: "Suriname"
							},
							{
								label: "斯威士兰",
								value: "Swaziland"
							},
							{
								label: "瑞典",
								value: "Sweden"
							},
							{
								label: "瑞士",
								value: "Switzerland"
							},
							{
								label: "叙利亚",
								value: "Syrian"
							},
							{
								label: "塔吉克斯坦",
								value: "Tadzhikistan"
							},

							{
								label: "坦桑尼亚",
								value: "Tanzania"
							},
							{
								label: "泰国",
								value: "Thailand"
							},
							{
								label: "荷属安地列斯群岛",
								value: "the Netherlands Antilles"
							},
							{
								label: "多哥",
								value: "Togo"
							},
							{
								label: "汤加",
								value: "Tonga"
							},
							{
								label: "特立尼达和多巴哥",
								value: "Trinidad & Tobago"
							},
							{
								label: "土阿莫土群岛",
								value: "Tuamotu Is"
							},
							{
								label: "土布艾群岛",
								value: "Tubai Is"
							},
							{
								label: "突尼斯",
								value: "Tunisia"
							},
							{
								label: "土耳其",
								value: "Turkey"
							},
							{
								label: "土库曼斯坦",
								value: "Turkmenistan"
							},
							{
								label: "特克斯和凯科斯群岛",
								value: "Turks & Caicos Is"
							},
							{
								label: "图瓦卢",
								value: "Tuvalu"
							},
							{
								label: "乌干达",
								value: "Uganda"
							},
							{
								label: "乌克兰",
								value: "Ukraine"
							},
							{
								label: "阿联酋",
								value: "United Arab Emirates"
							},
							{
								label: "英国",
								value: "United Kingdom"
							},
							{
								label: "美国",
								value: "United States"
							},
							{
								label: "乌拉圭",
								value: "Uruguay"
							},
							{
								label: "乌兹别克斯坦",
								value: "Uzbekstan"
							},
							{
								label: "瓦努阿图",
								value: "Vanuatu"
							},
							{
								label: "梵蒂冈城国",
								value: "Vatican City State"
							},
							{
								label: "委内瑞拉",
								value: "Venezuela"
							},
							{
								label: "越南",
								value: "Vietnam"
							},
							{
								label: "英属维尔京群岛",
								value: "VIRGIN IS.(U.K.)"
							},
							{
								label: "美属维尔京群岛",
								value: "VIRGIN IS.(US)"
							},
							{
								label: "瓦利斯和浮图纳",
								value: "Wallis and Futuna"
							},
							{
								label: "西撒哈拉",
								value: "Western Sahara"
							},
							{
								label: "赞比亚",
								value: "Zambia"
							},
							{
								label: "津巴布韦",
								value: "Zimbabwe"
							}
						],
						show: [8, 101],
						showValue: ['China']

					},
					{
						label: '身份证号/护照号',
						required: true,
						value: 'idCard',
						titleClass: 'title',
						placeholder: '请输入身份证号/护照号',
						type: 'input',
						validator: validate.isIdCard

					},
					{
						label: '户籍所在地',
						required: true,
						value: 'householdValues',
						titleClass: 'title',
						placeholder: '请选择',
						type: 'pickerAddress',
						num: 101,
						hidden: true,
					},
					{
						label: '户籍地址',
						required: true,
						value: 'householdAddress',
						titleClass: 'title',
						placeholder: '例：**路**号**小区**号楼**室',
						type: 'input',
						num: 8,
						hidden: true,
					},
					{
						label: '在沪居住所在地',
						required: true,
						value: 'residenceValue',
						titleClass: 'title',
						placeholder: '请选择',
						type: 'pickerAddress',
					},
					{
						label: '在沪居住（暂住）地址',
						required: true,
						value: 'residenceAddress',
						titleClass: 'title',
						placeholder: '例：**路**号**小区**号楼**室',
						type: 'input',
					},
					{
						label: '是否复工',
						required: true,
						value: 'returnToWork',
						titleClass: 'title',
						type: 'radio',
						opts: [{
								value: '0',
								label: '否'
							},
							{
								value: '1',
								label: '是'
							},
						],
						show: [11],
						showValue: ['0']
					},
					{
						label: '计划复工日期',
						hidden: true,
						required: true,
						value: 'planReturnDate',
						titleClass: 'title',
						type: 'date',
						num: 11
					},
					{
						label: '是否离沪',
						required: true,
						value: 'left',
						titleClass: 'title',
						type: 'radio',
						opts: [{
								value: '0',
								label: '否'
							},
							{
								value: '1',
								label: '是'
							}
						],
						show: [13, 14, 15, 16, 17, 18, 19, 20, 21],
						showValue: ['1']
					},
					{
						label: '离沪原因',
						required: true,
						value: 'leftReason',
						titleClass: 'title',
						type: 'picker',
						opts: [{
							value: 'a',
							label: '探亲'
						}, {
							value: 'c',
							label: '出差'
						}, {
							value: 'd',
							label: '旅游'
						}, {
							value: 'e',
							label: '其他'
						}],
						num: 13,
						hidden: true,
					},
					{
						label: '离沪出发日期',
						required: true,
						value: 'leftDate',
						titleClass: 'title',
						type: 'date',
						num: 14,
						hidden: true,
					},
					{
						label: '离沪方式',
						required: true,
						value: 'leftVehicle',
						titleClass: 'title',
						type: 'radio',
						opts: [{
							value: '火车',
							label: '火车	'
						}, {
							value: '飞机',
							label: '飞机'
						}, {
							value: '客车',
							label: '客车'
						}, {
							value: '自驾',
							label: '自驾'
						}],
						num: 15,
						show: ['16'],
						showValue: ['火车', '飞机'],
						hidden: true,
					},
					{
						label: '离沪车次/航班',
						required: true,
						value: 'leftVehicleNum',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 16,
						hidden: true,
					},
					{
						label: '离沪到达日期',
						required: true,
						value: 'leftReachDate',
						titleClass: 'title',
						type: 'date',
						num: 17,
						hidden: true,
					},
					{
						label: '离沪目的地',
						required: true,
						value: 'leftTarget',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 18,
						hidden: true,
					},
					{
						label: '离沪具体地址',
						required: true,
						value: 'leftAddress',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 19,
						hidden: true,
					},
					{
						label: '离沪同行者姓名（没有填无）',
						required: true,
						value: 'leftDependentNames',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 20,
						hidden: true,
					},
					{
						label: '离沪同行者联系方式（没有填无）',
						required: true,
						value: 'leftDependentPhones',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 21,
						hidden: true,
					},
					{
						label: '是否返沪',
						required: true,
						value: 'backed',
						titleClass: 'title',
						type: 'radio',
						show: [23, 24, 25, 26, 27, 28, 29],
						showValue: ['1'],
						opts: [{
							value: '0',
							label: '否'
						}, {
							value: '1',
							label: '是'
						}]
					},
					{
						label: '返沪出发地',
						required: true,
						value: 'backFrom',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 23,
						hidden: true,
					},
					{
						label: '返沪出发日期',
						required: true,
						value: 'backDate',
						titleClass: 'title',
						type: 'date',
						num: 24,
						hidden: true,
					},
					{
						label: '返沪方式',
						required: true,
						value: 'backVehicle',
						titleClass: 'title',
						type: 'radio',
						opts: [{
							value: '火车',
							label: '火车	'
						}, {
							value: '飞机',
							label: '飞机'
						}, {
							value: '客车',
							label: '客车'
						}, {
							value: '自驾',
							label: '自驾'
						}],
						show: ['26'],
						showValue: ['火车', '飞机'],
						num: 25,
						hidden: true,
					},
					{
						label: '返沪车次/航班',
						required: true,
						value: 'backVehicleNum',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 26,
						hidden: true,
					},
					{
						label: '返沪到达日期',
						required: true,
						value: 'backReachedDate',
						titleClass: 'title',
						type: 'date',
						num: 27,
						hidden: true,
					},
					{
						label: '返沪同行者姓名（没有填无）',
						required: true,
						value: 'backDependentNames',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 28,
						hidden: true,
					},
					{
						label: '返沪同行者联系方式（没有填无）',
						required: true,
						value: 'backDependentPhones',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 29,
						hidden: true,
					},
					{
						label: '当前状况',
						required: true,
						value: 'currentStatus',
						titleClass: 'title',
						type: 'pickerMore',
						opts: [{
							value: 'a',
							label: '已经确诊'
						}, {
							value: 'b',
							label: '疑似诊断'
						}, {
							value: 'c',
							label: '亲密接触者'
						}, {
							value: 'd',
							label: '居家观察/正在接受集中医学观察'
						}, {
							value: 'e',
							label: '已解除集中医学观察'
						}, {
							value: 'f',
							label: '无上述情况'
						}],
						showList: [{
								value: 'c',
								show: [32, 35, 38, 40, 43, 45, 47]
							},

							{
								value: 'd',
								show: [49, 50]
							},
						]
					},

					{
						label: '停留湖北',
						required: true,
						value: 'hubeiStopped',
						titleClass: 'title',
						type: 'radio',
						num: 32,
						hidden: true,
						opts: [{
							value: '0',
							label: '否'
						}, {
							value: '1',
							label: '是'
						}],
						show: [33, 34],
						showValue: ['1']
					},
					{
						label: '到达湖北日期',
						required: true,
						value: 'hubeiStopStartDate',
						titleClass: 'title',
						type: 'date',
						num: 33,
						hidden: true
					},
					{
						label: '离开湖北日期',
						required: true,
						value: 'hubeiStopEndDate',
						titleClass: 'title',
						type: 'date',
						num: 34,
						hidden: true
					},

					{
						label: '途径湖北',
						required: true,
						value: 'hubeiPassed',
						titleClass: 'title',
						type: 'radio',
						opts: [{
							value: '0',
							label: '否'
						}, {
							value: '1',
							label: '是'
						}],
						show: [36, 37],
						num: 35,
						hidden: true,
						showValue: ['1']
					},
					{
						label: '途径湖北到达日期',
						required: true,
						value: 'hubeiPassStartDate',
						titleClass: 'title',
						type: 'date',
						num: 36,
						hidden: true
					},
					{
						label: '途径湖北离开日期',
						required: true,
						value: 'hubeiPassEndDate',
						titleClass: 'title',
						type: 'date',
						num: 37,
						hidden: true
					},
					{
						label: '接触湖北人员',
						required: true,
						value: 'hubeiContacted',
						titleClass: 'title',
						type: 'radio',
						opts: [{
							value: '0',
							label: '否'
						}, {
							value: '1',
							label: '是'
						}],
						show: [39],
						num: 38,
						hidden: true,
						showValue: ['1']
					},
					{
						label: '接触湖北人员接触时间',
						required: true,
						value: 'hubeiContactDate',
						titleClass: 'title',
						type: 'date',
						num: 39,
						hidden: true
					},
					{
						label: '家属停留或途径湖北',
						required: true,
						value: 'hubeiFamilyStopped',
						titleClass: 'title',
						type: 'radio',
						opts: [{
							value: '0',
							label: '否'
						}, {
							value: '1',
							label: '是'
						}],
						show: [41, 42],
						num: 40,
						hidden: true,
						showValue: ['1']
					},
					{
						label: '家属停留或途径湖北到达日期',
						required: true,
						value: 'hubeiFamilyStopStartDate',
						titleClass: 'title',
						type: 'date',
						num: 41,
						hidden: true
					},
					{
						label: '家属停留或途径湖北离开日期',
						required: true,
						value: 'hubeiFamilyStoppEndDate',
						titleClass: 'title',
						type: 'date',
						num: 42,
						hidden: true
					},
					{
						label: '家属接触湖北人员',
						required: true,
						value: 'hubeiFamilyContacted',
						titleClass: 'title',
						type: 'radio',
						opts: [{
							value: '0',
							label: '否'
						}, {
							value: '1',
							label: '是'
						}],
						show: [44],
						num: 43,
						hidden: true,
						showValue: ['1']
					},
					{
						label: '家属接触湖北人员接触时间',
						required: true,
						value: 'hubeiFamilyContactDate',
						titleClass: 'title',
						type: 'date',
						num: 44,
						hidden: true
					},
					{
						label: '接触过已确诊或疑似患者',
						required: true,
						value: 'patientContact',
						titleClass: 'title',
						type: 'radio',
						opts: [{
							value: '0',
							label: '否'
						}, {
							value: '1',
							label: '是'
						}],
						show: [46],
						num: 45,
						hidden: true,
						showValue: ['1']
					},
					{
						label: '接触患者时间',
						required: true,
						value: 'patientContactDate',
						titleClass: 'title',
						type: 'date',
						num: 46,
						hidden: true
					},
					{
						label: '家属接触过已确诊或疑似患者',
						required: true,
						value: 'familyPatientContact',
						titleClass: 'title',
						type: 'radio',
						opts: [{
							value: '0',
							label: '否'
						}, {
							value: '1',
							label: '是'
						}],
						show: [48],
						num: 47,
						hidden: true,
						showValue: ['1']
					},
					{
						label: '家属接触患者时间',
						required: true,
						value: 'familyPatientContactDate',
						titleClass: 'title',
						type: 'date',
						num: 48,
						hidden: true
					},
					{
						label: '隔离地址',
						required: true,
						value: 'quarantineAdress',
						titleClass: 'title',
						placeholder: '请输入',
						type: 'input',
						num: 49,
						hidden: true
					},
					{
						label: '隔离开始日期',
						required: true,
						value: 'quarantineDate',
						titleClass: 'title',
						type: 'date',
						num: 50,
						hidden: true
					},
					{
						label: '当日症状',
						required: true,
						value: 'symptom',
						titleClass: 'title',
						type: 'pickerMore',
						opts: [{
							value: 'a',
							label: '发热'
						}, {
							value: 'b',
							label: '咳嗽'
						}, {
							value: 'c',
							label: '流涕'
						}, {
							value: 'd',
							label: '咽痛'
						}, {
							value: 'e',
							label: '咳痰'
						}, {
							value: 'f',
							label: '胸痛'
						}, {
							value: 'g',
							label: '肌肉酸痛/关节痛'
						}, {
							value: 'h',
							label: '气促'
						}, {
							value: 'i',
							label: '腹泻'
						}, {
							value: 'j',
							label: '以上均无'
						}]
					},
				],
				form: {
					agree: 0,
					orgId: '',
					orgName: '',
					department: '',
					position: '',
					name: '',
					phone: '',
					nationality: '',
					idCard: '',
					returnToWork: '',
					householdAddress: '',
					residenceAddress: '',
					planReturnDate: ''
				},
				formMat: {}
			}
		},

		onLoad(option) {
			this.getOrg()
			this.getInfo()
		},
		methods: {
			openModal() {
				if (!this.form.agree) {
					this.form.agree = 1
				} else {
					this.form.agree = 0
				}

			},
			getOrg() {
				const data = {
					params: {
						pageNum: 1,
						pageSize: 1000000
					}
				}
				this.$http.get(`/sict-ncov/org/page`, data).then(res => {
					const d = res.data
					if (d.code == 1) {
						let list = []
						d.object.list.forEach(item => {
							list.push({
								label: `${item.orgName} (${item.city} ${item.district} ${item.address} ${item.park})`,
								value: item.id,
								desc: item.orgName
							})
						})
						this.list[0].opts = list
					}
				}).catch(err => {
					console.log(err)
				})
			},
			// 获取信息
			getInfo() {
				this.$http.get(`/sict-ncov/report`, this.form).then(res => {
					const d = res.data
					if (d.code == 1) {
						this.isRead = true
						const data = d.object.reportContent || {}
						this.form = data
						if(data['householdProvince']) {
							  const val = data['householdProvince'] + "," + data['householdCity'] + "," + data[
								'householdDistrict']
								
								this.$set(this.form,'householdValues',val )
								
						}
						if(data['residenceProvince']) {
							const val = data['residenceProvince'] + "," + data['residenceCity'] + "," + data[
								'residenceDistrict']
								this.$set(this.form,'residenceValue',val )
						}
					
						// 赋值
						for (let k in data) {
							const val = data[k]
							if (val) {
								const item = this.list.find(child => child.value == k)
								if (item) {
									this.showChange({
										value: val
									}, item)
									if (item.type == "pickerMore") {
										item.opts.forEach(opt => {
											val.split(',').forEach(v => {
												if (v === opt.value) {
													this.$set(opt, 'checked', true)
												}
											})
										})

									}
									if (item.type == "picker") {
										item.opts.forEach(opt => {
											if (opt.value == val) {
												if (opt.desc) {
													this.formMat[k] = opt.desc
												} else {
													this.formMat[k] = opt.label
												}
											}
										})

									}
								}
							}
						}
					}

				})
			},
			// 更新复选框绑定的表单内容
			checkboxChange(index, obj, item) {
				const checkList = item.opts
				const prop = item.value
				for (let i = 0, lenI = checkList.length; i < lenI; ++i) {
					if (index == i) {
						this.$set(checkList[i], 'checked', !checkList[i].checked)
					}
				}
				// 处理以上均无情况 
				const nullList = ['无上述情况', '以上均无']
				if (nullList.includes(obj.label)) {
					for (var i = 0, lenI = checkList.length; i < lenI; ++i) {
						this.$set(checkList[i], 'checked', false)
					}
					this.$set(checkList[checkList.length - 1], 'checked', true)
					this.form[prop] = obj.value
				} else {
					this.$set(checkList[checkList.length - 1], 'checked', false)
					const values = []
					for (var i = 0, lenI = checkList.length; i < lenI; ++i) {
						if (checkList[i].checked) {
							values.push(checkList[i].value)
						}
					}
					this.form[prop] = values.join(',')
				}

			},
			radioChange(val, prop) {
				this.$set(this.form, prop, val)
				this.isShowChild()
			},
			// 隐藏/显示
			showChange(evt, item) {
				const prop = item.value
				const type = item.type
				if (type === 'radio') {
					const val = evt.value || evt.target.value
					this.$set(this.form, prop, val)
					for (let i = 0; i < this.list.length; i++) {
						const current = this.list[i]
						if (current.value == prop && current.show) {
							current.show.forEach(child => {
								this.list.forEach(row => {
									if (child == row.num) {
										this.$set(row, 'hidden', !current.showValue.includes(val))
									}
								})
							})
							break
						}
					}
				}
				// 复选框展示和隐藏
				if (type === 'pickerMore') {
					let val = evt.value || evt.detail.value;
					const showList = item.showList
					if (showList && showList.length > 0) {
						showList.forEach(item => {
							item.show.forEach(child => {
								this.list.forEach(row => {
									if (child == row.num) {
										this.$set(row, 'hidden', !val.includes(item.value))
									}
								})
							})
						})

					}
				}

				if (type === 'picker') {
					let val = evt.value || item.opts[evt.detail.value].value;
					for (let i = 0; i < this.list.length; i++) {
						const current = this.list[i]
						if (current.value == prop && current.show) {
							current.show.forEach(child => {
								this.list.forEach(row => {
									if (child == row.num) {
										this.$set(row, 'hidden', !current.showValue.includes(val))
									}
								})
							})
							break
						}
					}
				}

			},
			isShowChild() {
				this.list[10].hidden = this.form['returnToWork'] == 'a'
			},

			Switch(e, prop) {
				this.form[prop] = e.detail.value
			},
			// 更新输入框绑定的表单内容
			updateInputVal(event, props) {
				this.form[props] = event.target.value
			},
			// 输入框失去焦点
			inputBlur(e, item) {
				const val = e.detail.value
				if (!val) {
					return
				}
				if (item.validator && !item.validator(val)) {
					uni.showToast({
						icon: 'none',
						title: `${item.label }填写错误`
					})
				}
			},
			// pickerAddress地址改变
			addressChange(e, item) {
				const val = e.data.join(',')
				this.$set(this.form, item.value, val)
			},
			// 更新下拉框绑定的表单内容
			updatePickerVal(event, item) {
				const opts = item.opts
				const prop = item.value
				const val = event.detail.value
				if (!opts) {
					this.$set(this.form, prop, val)
					return
				}
				this.$set(this.form, prop, opts[val].value)
				if (opts[val].desc) {
					this.$set(this.formMat, prop, opts[val].desc)
				} else {
					this.$set(this.formMat, prop, opts[val].label)
				}


				if (item.show) {
					this.showChange(event, item)
				}
			},
			// 提交信息
			formSubmit() {
				let flag = true
				let msg = ''
				if (this.form.agree != 1) {
					uni.showToast({
						icon: 'none',
						title: `请勾选知情同意书`
					})
					return
				}
				for (let i = 0; i < this.list.length; i++) {
					if (this.list[i].required) {
						const val = this.form[this.list[i].value]
						if (!val && !this.list[i].hidden && this.list[i].required) {
							flag = false
							uni.showToast({
								icon: 'none',
								title: `${this.list[i].label }未填写`
							})
							break
						}
						if (this.list[i].validator && !this.list[i].validator(val)) {
							flag = false
							uni.showToast({
								icon: 'none',
								title: `${this.list[i].label }填写错误`
							})
							break
						}
						if (!flag) {
							break
						}
					}
				}

				if (!flag) {
					return false
				} else {
					const data = {}
					for (let k in this.form) {
						if (this.form[k]) {
							if (k == 'householdValues') {
								// 户籍所在地
								const values = this.form[k].split(',')
								data.householdProvince = values[0]
								data.householdCity = values[1]
								data.householdDistrict = values[2]
							} else if (k == 'residenceValue') {
								// 住所所在地
								const values = this.form[k].split(',')
								data.residenceProvince = values[0]
								data.residenceCity = values[1]
								data.residenceDistrict = values[2]
							} else {
								data[k] = this.form[k]
							}
						}
					}
					this.$http.post(`/sict-ncov/report`, data).then(res => {
						const d = res.data
						if (d.code == 1) {
							uni.navigateTo({
							    url: '/pages/index/index',
							});
							uni.showToast({
								icon: 'success',
								title: '提交成功'
							})
						} else {
							uni.showToast({
								icon: 'none',
								title: d.message
							})
						}
					}).catch(err => {
						console.log(err)
					})
				}
			}
		}
	}
</script>

<style lang="scss" scoped>
	.sict-title {
		padding: 20upx 0;
		padding-right: 20upx;
		word-break: break-all;
		text-align: justify
	}

	.sict-label {
		background-color: white;
		font-size: 30upx;
		text-align: justify;
	}

	.sict-value {
		margin-top: 15upx;

		.right {
			margin-left: 10upx;
			vertical-align: bottom;
		}

		.label {
			// display: inline-block;
			text-align: left;
			padding: 20upx 0;
			padding-left: 30upx;
			border-bottom: 2upx solid #d3d3d3;

			&:last-child {
				border-bottom: 0;
			}
		}
	}

	.content {
		text-indent: 20px;
	}

	uni-radio-group {
		border: 2upx solid #d3d3d3;
		border-radius: 8upx;
		margin-left: 20upx;
		display: block;
	}

	radio-group {
		border: 2upx solid #d3d3d3;
		border-radius: 8upx;
		margin-left: 20upx;
		display: block;
	}

	.icon-right {
		font-family: cuIcon;
		font-size: 34upx;
		color: #8799a3;
		line-height: 100upx;
		width: 60upx;
		text-align: right;
		margin: auto;
	}

	.uni-list-cell {
		.list-item {
			border-bottom: 2upx solid #d3d3d3;
			padding: 20upx 0;
			padding-left: 30upx;
		}

		&:last-child {
			.list-item {
				border-bottom: 0;
			}
		}
	}

	.uni-list {
		margin-left: 20upx;
		border: 2upx solid #d3d3d3;
		border-radius: 8upx;
	}
</style>

<style>
	.questionnaire .uni-collapse-cell__title:after {
		border-bottom: 0 !important;
	}
</style>
