<template>
	<view class="problemHandleItem">
		<view class="text-black font-weight-bold font-md">
			问题{{indexNo}}
		</view>
		<u--form labelPosition="left" :model="model" labelWidth="80">
			<u-form-item label="问题名称:" :required="!onlyFlag" prop="questionName">
				<u--input v-model="model.questionName" :readonly="onlyFlag" :border="onlyFlag ? 'none' : 'surround'"
					:placeholder="!onlyFlag ? '请填写问题名称' : ''">
				</u--input>
			</u-form-item>
			<view class="error-tip" v-if="!model.questionName && errorTip">
				请填写问题名称
			</view>
			<u-form-item label="问题类型:" :required="!onlyFlag" prop="questionTypeName">
				<song-data-picker style="width: 100%;" @click.native="songClick" :readonly="onlyFlag" :clearIcon="false"
					:localdata="questionTypeColumn" :placeholder="!onlyFlag ? '请选择问题类型' : ''" popup-title="请选择问题类型"
					@nodeclick="onnodeclick">
					<slot name="data">
						<view class="d-flex j-sb a-center border p-1 rounded8" style="border-color: rgb(218, 219, 222, 0.5);">
							<view class="text-secondary">
								<text v-show="model.questionTypeName">{{model.questionTypeName}}</text>
								<text v-show="!model.questionTypeName" style="color: rgb(192, 196, 204);" class="font-md">请选择问题类型</text>
							</view>
							<u-icon v-if="!onlyFlag" name="arrow-down" color="#303133" size="15">
							</u-icon>
						</view>
					</slot>
				</song-data-picker>
			</u-form-item>
			<view class="error-tip" v-if="!model.questionTypeName && errorTip">
				请选择问题类型
			</view>
			<block
				v-if="model.questionType == 'YG' || model.questionType == 'ZJ' || model.questionType == 'YDI' || model.questionType == 'CF'">
				<u-form-item label="缺口数:" :required="!onlyFlag" prop="gaps">
					<view class="d-flex a-center" v-if="model.questionType == 'YG'">
						<u--input v-model="model.gaps" v-if="!onlyFlag" type="number" :readonly="onlyFlag"
							:border="onlyFlag ? 'none' : 'surround'" :placeholder="!onlyFlag ? '请输入缺口数' : ''">
						</u--input>
						<text class="ml-1"><text v-if="onlyFlag" class="pr">{{model.gaps}}</text>人</text>
					</view>
					<view class="d-flex a-center" v-if="model.questionType == 'ZJ'">
						<u--input v-model="model.gaps" v-if="!onlyFlag" type="number" :readonly="onlyFlag"
							:border="onlyFlag ? 'none' : 'surround'" :placeholder="!onlyFlag ? '请输入缺口数' : ''">
						</u--input>
						<text class="ml-1"><text v-if="onlyFlag" class="pr">{{model.gaps}}</text>万元</text>
					</view>
					<view class="d-flex a-center" v-if="model.questionType == 'YDI'">
						<u--input v-model="model.gaps" v-if="!onlyFlag" type="number" :readonly="onlyFlag"
							:border="onlyFlag ? 'none' : 'surround'" :placeholder="!onlyFlag ? '请输入缺口数' : ''">
						</u--input>
						<text class="ml-1"><text class="pr" v-if="onlyFlag">{{model.gaps}}</text>亩</text>
					</view>
					<view class="d-flex a-center" v-if="model.questionType == 'CF'">
						<u--input v-model="model.gaps" v-if="!onlyFlag" type="number" :readonly="onlyFlag"
							:border="onlyFlag ? 'none' : 'surround'" :placeholder="!onlyFlag ? '请输入缺口数' : ''">
						</u--input>
						<text class="ml-1"><text class="pr" v-if="onlyFlag">{{model.gaps}}</text></text>
					</view>
				</u-form-item>
				<view class="error-tip" v-if="!model.gaps && errorTip">
					请输入缺口数
				</view>
			</block>
			<u-form-item label="问题描述:" :required="!onlyFlag" prop="questionDescription" class="questionDesc">
				<u--textarea v-model="model.questionDescription" :disabled="onlyFlag" maxlength='-1'
					:border="onlyFlag ? 'none' : 'surround'" :placeholder="!onlyFlag ? '请填写问题描述' : ''">
				</u--textarea>
			</u-form-item>
			<view class="error-tip" v-if="!model.questionDescription && errorTip">
				请填写问题描述
			</view>
			<u-form-item label="附件:" prop="files" v-if="model.fileList&&model.fileList.length">
				<view class="d-flex flex-wrap">
					<view class="w-100 d-flex" v-for="(item,index) in model.fileList" :key="index">
						<u--text type="primary" :text="item.name" @tap="downloadFile(index)"></u--text>
					</view>
				</view>
			</u-form-item>

		</u--form>

		<slot></slot>
	</view>
</template>

<script>
	import {Global} from "@/common/Global.js";
	import {enterpriseVisit} from "@/api/dzf/enterpriseVisit.js";
	import {Store} from "@/common/store.js";
	import {formatDate} from "@/common/util2.js"
	export default {
		props: {
			model: {
				type: Object,
				default: () => {}
			},
			readOnlyFlag: {
				type: Boolean,
				default: false
			},
			showErrorTip: {
				type: Boolean,
				default: false
			},
			column: {
				type: Array,
				default: () => []
			},
			dealProgressDict: {
				type: Array,
				default: () => []
			},
			modelIndex: {
				type: Number,
				default: 0
			},
		},
		data() {
			return {
				preTimeShow: false,
				outCharge: false
			}
		},
		computed: {
			onlyFlag() {
				return Boolean(this.readOnlyFlag)
			},
			errorTip() {
				return this.showErrorTip
			},
			questionTypeColumn() {
				const column = (this.column || []).map(ele => {
					const obj = {}
					obj.text = ele.fullName
					obj.value = ele.enCode
					return obj
				})
				return column
			},
			dealProgressColumn() {
				const column = (this.dealProgressDict || []).map(ele => {
					const obj = {}
					obj.text = ele.fullName
					obj.value = ele.enCode
					return obj
				})
				return column
			},
			indexNo() {
				return this.modelIndex + 1
			}
		},
		mounted() {
			const userInfo = Store.getUser() ? JSON.parse(Store.getUser()) : {}
			this.outCharge = userInfo?.roleLevel === '5'

			console.log("this.outCharge:", this.outCharge)
			console.log("this.readOnlyFlag:", this.readOnlyFlag)
			console.log("this.(model.preTime:", this.model)

		},
		methods: {
			downloadFile(index) {
				const downloadLink = Global.baseUrl + this.model.fileList[index].url;
				window.open(downloadLink, '_blank'); //h5直接进行跳转页面打开就可以了
				uni.downloadFile({ //调用uni中的下载方法
					url: Global.baseUrl + this.model.fileList[index].url, //后端返回的完整路径
					success: (res) => {
						console.log(res.tempFilePath, "下载");
						if (res.statusCode === 200) {
							const tempFilePath = res.tempFilePath;
							// 显示文件
							uni.openDocument({
								filePath: tempFilePath,
								success: (res) => {
									console.log(res, '打开文件成功');
								},
							});
						}
					},
					fail: (err) => {
						console.log('下载文件失败', err);
					}
				});
			},
			clearIcon(e) {
				this.$set(this.model, 'preTime', null)
			},
			// 问题类型选择变化操作
			onnodeclick(ele) {
				this.$set(this.model, 'questionTypeName', ele.text)
				this.$set(this.model, 'questionType', ele.value)
				this.model.gaps = ''
			},
			// 问题类型选择变化操作
			ondealprogressclick(ele) {
				this.$set(this.model, 'dealProgressName', ele.text)
				this.$set(this.model, 'dealProgress', ele.value)
			},
			choosePreTime() {
				if (!(this.model.status == '4' && this.outCharge)) return
				this.preTimeShow = true;
				uni.hideKeyboard()
			},
			preTimeConfirm(e) {
				this.preTimeShow = false
				console.log("preTime:", e.value)
				this.$set(this.model, 'preTime', formatDate(e.value, 'yyyy-MM-dd'))
			},
			// 问题类型--->点击
			songClick() {
				uni.hideKeyboard()
			},
			// 问题类型--->点击
			dealProgressClick() {
				uni.hideKeyboard()
			},
			// 判断是否有必填项为填写
			isRequired() {
				const query = uni.createSelectorQuery().in(this);
				let dataLength = 0
				query.selectAll('.error-tip').boundingClientRect(data => {
					dataLength = data.length
					if (dataLength) {
						uni.$u.toast('请填写完整问题诉求')
					}
				}).exec();
				return dataLength
			}
		}
	}
</script>

<style lang="scss" scoped>
	.error-tip {
		font-size: 12px;
		color: #f56c6c;
		margin-left: 160rpx;
	}
</style>