<template xmlns:v-slot="http://www.w3.org/1999/XSL/Transform">
	<div>
		<el-form :model="inputForm" ref="inputForm" v-loading="loading" :class="method==='view'?'readonly':''" :disabled="(status === 'audit' || status === 'taskFormDetail') && testFlag"
				 label-width="100px" @submit.native.prevent>

			<el-divider content-position="left"><i class="el-icon-document"></i> 社保信息</el-divider>
			<el-row :gutter="26" v-if="status === 'audit' || status === 'taskFormDetail'">
				<el-col :span="12">
					<el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[
						{required: true, message: '社保编号不能为空', trigger: 'blur'}
					]">
						<el-input v-model="inputForm.socialSecurityNumber" maxlength="10" @input="validateInput"></el-input>
					</el-form-item>
				</el-col>
				<el-col :span="12">
					<el-form-item label="社保银行卡号" prop="socialSecurityBankNumber" :rules="[
						{required: true, message: '社保银行卡号不能为空', trigger: 'blur'}
					]">
						<el-input v-model="inputForm.socialSecurityBankNumber" @change="checkBankNumber(inputForm.socialSecurityBankNumber)" maxlength="19"></el-input>
					</el-form-item>
				</el-col>
				<el-col :span="12">
					<el-form-item label="社保卡照片正面" prop="socialSecurityPictureFront" :rules="[
						{required: true, message: '社保卡照片正面不能为空', trigger: 'blur'}
					]">
						<el-upload :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
								   :limit="limitNum"
								   :disabled="hideUploadEdit"
								   list-type="picture-card"
								   :auto-upload="true"
								   :on-success="handleUploadSuccess"
								   v-model:file-list="fileList"
						>
							<el-icon><Plus /></el-icon>

							<template #file="{ file }">
								<div>
									<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
									<span class="el-upload-list__item-actions">
										  <span
											  class="el-upload-list__item-preview"
											  @click="handlePictureCardPreview(file)"
										  >
											<el-icon><zoom-in /></el-icon>
										  </span>
										  <span
											  v-if="!disabled"
											  class="el-upload-list__item-delete"
											  @click="handleDownload(file)"
										  >
											<el-icon><Download /></el-icon>
										  </span>
										  <span
											  v-if="!disabled"
											  style="display:none;"
											  class="el-upload-list__item-delete"
											  @click="handleRemove(file,fileList)"
										  >
											<el-icon><Delete /></el-icon>
										  </span>
									</span>
								</div>
							</template>
						</el-upload>
						<el-dialog v-model="dialogVisible">
							<img w-full :src="inputForm.socialSecurityPictureFrontUrl" alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }"/>
						</el-dialog>

					</el-form-item>
				</el-col>
				<el-col :span="12">
					<el-form-item label="社保卡照片反面" prop="socialSecurityPictureOpposite" :rules="[
						{required: true, message: '社保卡照片反面不能为空', trigger: 'blur'}
					]">
						<el-upload :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
								   :limit="limitNum"
								   :disabled="hideUploadEdit2"
								   list-type="picture-card"
								   :auto-upload="true"
								   :on-success="handleUploadSuccess2"
								   v-model:file-list="fileList2"
						>
							<el-icon><Plus /></el-icon>

							<template #file="{ file }">
								<div>
									<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
									<span class="el-upload-list__item-actions">
										  <span
											  class="el-upload-list__item-preview"
											  @click="handlePictureCardPreview2(file)"
										  >
											<el-icon><zoom-in /></el-icon>
										  </span>
										  <span
											  v-if="!disabled"
											  class="el-upload-list__item-delete"
											  @click="handleDownload2(file)"
										  >
											<el-icon><Download /></el-icon>
										  </span>
										  <span
											  v-if="!disabled"
											  style="display:none;"
											  class="el-upload-list__item-delete"
											  @click="handleRemove2(file,fileList2)"
										  >
											<el-icon><Delete /></el-icon>
										  </span>
									</span>
								</div>
							</template>
						</el-upload>
						<el-dialog v-model="dialogVisible2">
							<img w-full :src="inputForm.socialSecurityPictureOppositeUrl" alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }"/>
						</el-dialog>

					</el-form-item>
				</el-col>
			</el-row>
			<el-row :gutter="26" v-else>
				<el-col :span="12">
					<el-form-item label="社保编号" prop="socialSecurityNumber" :rules="[
						{required: true, message: '社保编号不能为空', trigger: 'blur'}
					]">
						<el-input v-model="inputForm.socialSecurityNumber" maxlength="10" @input="validateInput"></el-input>
					</el-form-item>
				</el-col>
				<el-col :span="12">
					<el-form-item label="社保银行卡号" prop="socialSecurityBankNumber" :rules="[
						{required: true, message: '社保银行卡号不能为空', trigger: 'blur'}
					]">
						<el-input v-model="inputForm.socialSecurityBankNumber" @change="checkBankNumber(inputForm.socialSecurityBankNumber)" maxlength="19"></el-input>
					</el-form-item>
				</el-col>
				<el-col :span="12">
					<el-form-item label="社保卡照片正面" prop="socialSecurityPictureFront" :rules="[
						{required: true, message: '社保卡照片正面不能为空', trigger: 'blur'}
					]">
						<el-upload :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
								   :limit="limitNum"
								   :disabled="hideUploadEdit"
								   list-type="picture-card"
								   :auto-upload="true"
								   :on-success="handleUploadSuccess"
								   v-model:file-list="fileList"
						>
							<el-icon><Plus /></el-icon>

							<template #file="{ file }">
								<div>
									<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
									<span class="el-upload-list__item-actions">
										  <span
											  class="el-upload-list__item-preview"
											  @click="handlePictureCardPreview(file)"
										  >
											<el-icon><zoom-in /></el-icon>
										  </span>
										  <span
											  v-if="!disabled"
											  class="el-upload-list__item-delete"
											  @click="handleDownload(file)"
										  >
											<el-icon><Download /></el-icon>
										  </span>
										  <span
											  v-if="!disabled"
											  class="el-upload-list__item-delete"
											  @click="handleRemove(file,fileList)"
										  >
											<el-icon><Delete /></el-icon>
										  </span>
									</span>
								</div>
							</template>
						</el-upload>
						<el-dialog v-model="dialogVisible">
							<img w-full :src="inputForm.socialSecurityPictureFrontUrl" alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }"/>
						</el-dialog>

					</el-form-item>
				</el-col>
				<el-col :span="12">
					<el-form-item label="社保卡照片反面" prop="socialSecurityPictureOpposite" :rules="[
						{required: true, message: '社保卡照片反面不能为空', trigger: 'blur'}
					]">
						<el-upload :action="`${$http.BASE_URL}/public-modules-server/oss/file/webUpload/upload`"
								   :limit="limitNum"
								   :disabled="hideUploadEdit2"
								   list-type="picture-card"
								   :auto-upload="true"
								   :on-success="handleUploadSuccess2"
								   v-model:file-list="fileList2"
						>
							<el-icon><Plus /></el-icon>

							<template #file="{ file }">
								<div>
									<img class="el-upload-list__item-thumbnail" :src="file.url" alt="" />
									<span class="el-upload-list__item-actions">
										  <span
											  class="el-upload-list__item-preview"
											  @click="handlePictureCardPreview2(file)"
										  >
											<el-icon><zoom-in /></el-icon>
										  </span>
										  <span
											  v-if="!disabled"
											  class="el-upload-list__item-delete"
											  @click="handleDownload2(file)"
										  >
											<el-icon><Download /></el-icon>
										  </span>
										  <span
											  v-if="!disabled"
											  class="el-upload-list__item-delete"
											  @click="handleRemove2(file,fileList2)"
										  >
											<el-icon><Delete /></el-icon>
										  </span>
									</span>
								</div>
							</template>
						</el-upload>
						<el-dialog v-model="dialogVisible2">
							<img w-full :src="inputForm.socialSecurityPictureOppositeUrl" alt="Preview Image" :style="{ maxWidth: '100%', maxHeight: '100%' }"/>
						</el-dialog>

					</el-form-item>
				</el-col>
			</el-row>

		</el-form>
	</div>
</template>

<script>
	import enrollmentRegistrationService from '@/api/human/enrollment/EnrollmentRegistrationService'
	import CommonApi from '@/api/cw/common/CommonApi'
	import OSSSerivce, {
		httpRequest,
		fileName,
		toHref,
	} from '@/api/sys/OSSService'

	export default {
		props: {
			businessId: {
				type: String,
				default: ''
			},
			formReadOnly: {
				type: Boolean,
				default: false
			},
			status: {
				type: String,
				default: ''
			}
		},
		data () {
			return {
				testFlag: false,
				disabled: false,
				limitNum: 1,
				fileList: [],
				fileList2: [],
				hideUploadEdit: false, //隐藏上传按钮
				hideUploadEdit2: false, //隐藏上传按钮
				dialogVisible: false,
				dialogVisible2: false,
				title: '',
				method: '',
				visible: false,
				loading: false,
				inputForm: {
					userId: '',
					name: '',
					procInsId: '',
					socialSecurityNumber: '',
					socialSecurityBankNumber: '',
					socialSecurityPictureFront: '',
					socialSecurityPictureFrontUrl: '',
					socialSecurityPictureOpposite: '',
					socialSecurityPictureOppositeUrl: '',
				},
				keyWatch: '',
			}
		},
		commonApi: null,
		created () {
			this.ossService = new OSSSerivce()
			this.commonApi = new CommonApi()
		},
		components: {
		},
		computed: {
			bus: {
				get () {
					return this.businessId
				},
				set (val) {
					this.businessId = val
				}
			},
			name () {
				return this.$store.state.user.name
			},
			userId () {
				return this.$store.state.user.id
			}
		},
		watch: {
			'keyWatch': {
				handler (newVal) {
					if (this.commonJS.isNotEmpty(this.bus)) {
						this.init('', this.bus)
					} else {
						this.$nextTick(() => {
							this.$refs.inputForm.resetFields()
						})
					}
				}
			},
			'loading': {
				handler (newVal) {
					this.$emit('changeLoading', newVal)
				}
			}
		},
		methods: {
			handleRemove(file, fileList) {
				console.log(file);
				this.hideUploadEdit = false
				// 如果需要删除图片信息，可以根据file或其他标识从相应的数据结构中删除信息
				const fileIndex = this.fileList.indexOf(file);
				if (fileIndex !== -1) {
					this.fileList.splice(fileIndex, 1); // 从fileList中删除该图片信息
				}
			},
			handleRemove2(file) {
				console.log(file);
				this.hideUploadEdit = false
				// 如果需要删除图片信息，可以根据file或其他标识从相应的数据结构中删除信息
				const fileIndex = this.fileList2.indexOf(file);
				if (fileIndex !== -1) {
					this.fileList2.splice(fileIndex, 1); // 从fileList中删除该图片信息
				}
			},
			handleDownload(file) {
				let file2 = {
					url: this.inputForm.socialSecurityPictureFront
				}
				toHref(file2)
			},
			handleDownload2(file) {
				let file2 = {
					url: this.inputForm.socialSecurityPictureOpposite
				}
				toHref(file2)
			},
			handlePictureCardPreview(file) {
				this.dialogImageUrl = file.url;
				this.inputForm.socialSecurityPictureFrontUrl = file.url
				console.log('file.url1', file.url)
				this.dialogVisible = true;
			},
			handlePictureCardPreview2(file) {
				this.dialogImageUrl = file.url;
				this.inputForm.socialSecurityPictureOppositeUrl = file.url
				this.dialogVisible2 = true;
			},
			handleUploadSuccess(response, file,fileList) {
				return this.handleAvatarSuccess(response,file,fileList,null,'front')
			},
			handleUploadSuccess2(response, file,fileList) {
				return this.handleAvatarSuccess2(response,file,fileList,null,'front')
			},
			handleAvatarSuccess (res, file, fileList, index, val) {
				console.log('foleList', fileList)
				if (val === 'front') {
					this.inputForm.socialSecurityPictureFront = '/' + res.url
					this.inputForm.socialSecurityPictureFrontUrl = res.lsUrl
				}
				this.hideUploadEdit = true
				this.$forceUpdate()
			},
			handleAvatarSuccess2 (res, file, fileList, index, val) {
				console.log('foleList', fileList)
				if (val === 'front') {
					this.inputForm.socialSecurityPictureOpposite = '/' + res.url
					this.inputForm.socialSecurityPictureOppositeUrl = res.lsUrl
				}
				this.hideUploadEdit = true
				this.$forceUpdate()
			},
			checkBankNumber(bankNumber) {
				if (!this.validateXG.isBankNum(bankNumber)) {
					this.$message.error('请输入正确的社保银行卡号')
					this.inputForm.socialSecurityBankNumber = ''
					throw new Error('请输入正确的社保银行卡号')
				}
			},
			getKeyWatch (keyWatch) {
				this.keyWatch = keyWatch
			},
			getUpload () {
			},
			init (method, id) {
				this.method = method
				this.inputForm = {
					userId: '',
					name: '',
					procInsId: '',
					socialSecurityNumber: '',
					socialSecurityBankNumber: '',
					socialSecurityPictureFront: '',
					socialSecurityPictureFrontUrl: '',
					socialSecurityPictureOpposite: '',
					socialSecurityPictureOppositeUrl: '',
				}
				if (method === 'add') {
					this.title = `新建社保登记`
				} else if (method === 'edit') {
					this.title = '修改社保登记信息'
				}
				this.inputForm.id = id
				this.visible = true
				this.loading = false
				this.$nextTick(() => {
					this.loading = true
					enrollmentRegistrationService.findSocialCardById(this.inputForm.id).then( async (data) => {
						this.fileList = []
						this.fileList2 = []
						if (this.status === 'audit' || this.status === 'taskFormDetail') {
							method = 'view'
						}
						this.inputForm = this.recover(this.inputForm, data)
						this.inputForm = JSON.parse(JSON.stringify(this.inputForm))

						if (this.commonJS.isNotEmpty(this.inputForm.socialSecurityNumber)) {
							this.testFlag = true
						}
						if (this.commonJS.isNotEmpty(this.inputForm.socialSecurityPictureFront)){
							await this.ossService.getTemporaryUrl(this.inputForm.socialSecurityPictureFront).then((data) => {
								let file = {
									url: data
								}
								this.fileList.push(file)
								// this.inputForm.socialSecurityPictureFrontUrl = data
							})
						}
						if (this.commonJS.isNotEmpty(this.inputForm.socialSecurityPictureOpposite)){
							await this.ossService.getTemporaryUrl(this.inputForm.socialSecurityPictureOpposite).then((data) => {
								let file = {
									url: data
								}
								this.fileList2.push(file)
								// this.inputForm.socialSecurityPictureFrontUrl = data
							})
						}

						this.loading = false
					})
				})
			},
			// 表单提交
			doSubmit () {
				this.$refs['inputForm'].validate((valid) => {
					if (valid) {
						this.loading = true
						if (this.commonJS.isEmpty(this.inputForm.files)) {
							this.inputForm.files = []
						}
						this.inputForm.id = this.businessId
						enrollmentRegistrationService.saveSocialCard(this.inputForm).then((data) => {
							this.close()
							this.$message.success(data)
							this.$emit('refreshDataList')
							this.loading = false
						}).catch(() => {
							this.loading = false
						})
					}
				})
			},
			close () {
				this.$refs.inputForm.resetFields()
				this.fileList = []
				this.fileList2 = []
				this.visible = false
			},
			reapplyForm (callback) {
				this.loading = true
				enrollmentRegistrationService.findSocialCardById(this.inputForm.id).then((data) => {
					if (data.type !== '4') { // 审核状态不是“驳回”，就弹出提示
						this.loading = false
						this.$message.error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
						throw new Error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
					} else {
						this.startForm(callback)
					}
				})
			},
			// 送审
			async startForm (callback) {
				this.$refs['inputForm'].validate(async (valid) => {
					if (valid) {
						this.loading = true
						this.inputForm.type = '2'
						enrollmentRegistrationService.saveSocialCard(this.inputForm).then((data) => {
							this.inputForm.title = `${this.$store.state.user.name} 发起了 [社保登记]`
							this.inputForm.id = data.businessId
							callback(data.businessTable, data.businessId, this.inputForm)
							this.$refs.inputForm.resetFields()
							this.loading = false
						}).catch(() => {
							this.$refs.inputForm.resetFields()
							this.loading = false
						})
					} else {
						this.loading = false
					}
				})
			},

			// 通过
			async agreeForm (callback) {
				this.loading = true
				enrollmentRegistrationService.findSocialCardById(this.inputForm.id).then((data) => {
					if (data.type !== '2' & data) { // 审核状态不是“审核中”，就弹出提示
						this.loading = false
						this.$message.error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
						throw new Error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
					} else {
						this.$refs['inputForm'].validate(async (valid) => {
							if (valid) {
								this.loading = true

								this.commonApi.getTaskNameByProcInsId(this.inputForm.procInsId).then((data) => {
									if (this.commonJS.isNotEmpty(data)) {
										if (data === '审核') {
											this.inputForm.type = '5'
										}
									}
									enrollmentRegistrationService.saveSocialCard(this.inputForm).then((data) => {
										callback(data.businessTable, data.businessId, this.inputForm)
										this.loading = false
									}).catch(() => {
										this.loading = false
									})
								})

							} else {
								this.loading = false
							}
						})
					}
				})
			},
			// 修改状态
			updateStatusById (type, callback) {
				if (type === 'reject') {
					this.loading = true
					enrollmentRegistrationService.findSocialCardById(this.inputForm.id).then((data) => {
						if (data.type !== '2') { // 审核状态不是“审核中”，就弹出提示
							this.loading = false
							this.$message.error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
							throw new Error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
						} else {
							this.inputForm.type = '4'
							enrollmentRegistrationService.updateSocialCardStatusById(this.inputForm).then(() => {
								this.loading = false
								callback()
							})
						}
					})
				} else if (type === 'hold') {
					this.loading = true
					enrollmentRegistrationService.findSocialCardById(this.inputForm.id).then((data) => {
						if (data.type !== '4') { // 审核状态不是“驳回”，就弹出提示
							this.loading = false
							this.$message.error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
							throw new Error('任务数据已发生改变或不存在，请在待办任务中确认此任务是否存在')
						} else {
							this.inputForm.type = '1'
							enrollmentRegistrationService.updateSocialCardStatusById(this.inputForm).then(() => {
								this.loading = false
								callback()
							})
						}
					})
				}
			},
			validateInput() {
				// 使用正则表达式验证输入内容，禁止中文
				this.inputForm.socialSecurityNumber = this.inputForm.socialSecurityNumber.replace(/[\u4e00-\u9fa5]/g, '');
			}
		}
	}
</script>
