<template>
    <view class="content">
        <statusNav returnColor="#c2c2c2" navBarTitle="处理工单"></statusNav>
        <container-subgroup-two>
            <view slot="content" style="margin: -20rpx -25rpx 0rpx;">
                <view class="work-order-schedule">
                    <view class="li">
                        <view class="icon on icon-after">1</view>
                        <view class="text">签到执行</view>
                    </view>
                    <view class="li">
                        <view class="icon icon-after">2</view>
                        <view class="text">填写维保单</view>
                    </view>
                    <view class="li">
                        <view class="icon">3</view>
                        <view class="text">结算审核</view>
                    </view>
                </view>
                <view class="work-order-from">
                    <view class="li disac">
                        <view class="title flexs">工单编号：</view>
                        <input type="text" disabled class="input" :value="targetObj.workOrderNo" />
                    </view>
                    <view class="li disac">
                        <view class="title flexs">项目编号：</view>
                        <input type="text" disabled class="input" :value="targetObj.projectNo" />
                    </view>
                    <view class="li disac">
                        <view class="title flexs">项目名称：</view>
                        <input type="text" disabled class="input input-black" :value="targetObj.projectName" />
                    </view>
                    <view class="li disac">
                        <view class="title flexs">产品类型：</view>
                        <!-- <input type="text" disabled class="input" v-model="targetObj.productType" placeholder="请填写产品类型" :style="{color: targetObj.productType!='' ? '#000' : ''}" /> -->
						<picker class="input input-black" mode="selector" :value="productIndex" :range="productTypeList" :range-key="'name'" @change="changePicker(0,$event)">
							<view>{{productTypeList[productIndex].name}}</view>
						</picker>
                    </view>
                    <view class="li disac">
                        <view class="title flexs">安装位置：</view>
                        <input type="text" class="input" v-model="targetObj.installLocation" placeholder="请填写安装位置(例:详细地址+某某栋11楼会议室)" :style="{color: targetObj.installLocation!='' ? '#000' : ''}" />
                    </view>
                    <view class="li disac">
                        <view class="title flexs">维保类型：</view>
                        <!-- <input type="text" disabled class="input" v-model="targetObj.faultType" placeholder="请填写维保类型(例:供电不足)" :style="{color: targetObj.faultType!='' ? '#000' : ''}" /> -->
						<picker class="input input-black" mode="selector" :value="faultIndex" :range="faultTypeList" :range-key="'name'" @change="changePicker(1,$event)">
							<view>{{faultTypeList[faultIndex].name}}</view>
						</picker>
                    </view>
                    <view class="li disac">
                        <view class="title flexs">紧急程度：</view>
                        <input type="text" disabled class="input" placeholder="" :value="targetObj.urgentDegree" />
                    </view>
                    <view class="li">
                        <view class="title flexs"> 维保说明：</view>
                        <textarea class="input line-h36" v-model="targetObj.faultExplain" style="height: 110rpx;" placeholder="请输入维保说明" :style="{color: targetObj.faultExplain!='' ? '#000' : ''}" />
                    </view>
                    <view class="li">
                        <view class="title flexs">维保图片：</view>
                        <view class="input">
							<view v-for="(item,index) in targetObj.faultImgList" :key="index" v-if="targetObj.faultImgList.length!=0">
								<image class="img" :src="item" mode="aspectFill" ></image>
							</view>
							<view v-if="targetObj.faultImgList.length!=2" @tap="chooseImg" class="img disjcac" style="background-color: #DDDDDD;">
								<image src="/static/iocn/jia.png" style="width: 80rpx;height: 80rpx;position: relative!important;" lazy-load></image>
							</view>
                        </view>
                    </view>
                </view>
                <view class="work-order-from">
                    <view class="li disac">
                        <view class="title flexs">报 单 人：</view>
                        <input type="text" style="margin-left: 14rpx;" disabled class="input" placeholder="" :value="targetObj.reporter" />
                    </view>
                    <view class="li disac">
                        <view class="title flexs">报单时间：</view>
                        <input type="text" disabled disabled class="input" placeholder="" :value="targetObj.declarationTime" />
                    </view>
                    <view class="li disac">
                        <view class="title flexs">服务方式：</view>
                        <!-- <input type="text" disabled v-model="targetObj.serviceMode" class="input input-black" placeholder="请填写服务方式(例:上门服务)" :style="{color: targetObj.serviceMode!='' ? '#000' : ''}" /> -->
						<picker class="input input-black" mode="selector" :value="serviceModeIndex" :range="serviceModeList" :range-key="'name'" @change="changePicker(2,$event)">
							<view>{{serviceModeList[serviceModeIndex].name}}</view>
						</picker>
                    </view>
                    <view class="li disac" @tap="getAddress">
                        <view class="title flexs">定位地址：</view>
                        <input type="text" disabled class="input" :value="targetObj.address" />
                    </view>
                </view>
                <button class="submit-button" @click="goWorkOrderThree()" type="default">签到</button>
            </view>
        </container-subgroup-two>
    </view>
</template>

<script>
    import containerSubgroupTwo from '@/components/containers/container-subgroup-two.vue';
    import statusNav from '@/components/status-nav.vue';
    import footTabOne from "@/components/foot-tabs/foot-tab-one.vue"
	import {handleWorkOrderGet,handleWorkOrderSubmit,getProductType,getFaultType,getServiceMode,uploadImg} from '@/jsFile/public-api.js';
	var QQMapWX = require('@/jsFile/map/qqmap-wx-jssdk.min.js');
	var qqmapsdk = new QQMapWX({
		key: 'QNHBZ-55RKF-OMFJJ-NPU7O-EPSDH-ACBAA'
	});
	// 解决H5跨域
	const jsonp = function(url, data) {
		return new Promise((resolve, reject) => {
			// 1.初始化url
			let dataString = url.indexOf('?') === -1 ? '?' : '&'
			let callbackName = `jsonpCB_${ Date.now() }`;
			url += `${ dataString }callback=${ callbackName }`
			if(data) {
				// 2.有请求参数，依次添加到url
				for(let k in data) {
					url += `&${ k }=${ data[k] }`
				}
			}
			let scriptNode = document.createElement('script');
			scriptNode.src = url;
			// 3. callback
			window[callbackName] = (result) => {
				result ? resolve(result) : reject('没有返回数据');
				delete window[callbackName];
				document.body.removeChild(scriptNode);
			}
			// 4. 异常情况
			scriptNode.addEventListener('error', () => {
				reject('接口返回数据失败');
				delete window[callbackName];
				document.body.removeChild(scriptNode);
			}, false)
			// 5. 开始请求
			document.body.appendChild(scriptNode)
		})
	}
    export default {
        components: {
            footTabOne,
            statusNav,
            containerSubgroupTwo
        },
        data() {
            return {
				targetObj:{
					workOrderNo:'GD20211203-001',// 工单编号
					projectNo:'GD20211203-001', // 项目编号
					projectName:'湖南省林业科学院11楼会议室P2.5', // 项目名称
					productType:'一拳超人', // 产品类型
					installLocation:'手臂', // 安装位置
					faultType:'脱节', // 维保类型
					urgentDegree:'紧急', // 紧急程度
					faultExplain:'摔了一跤', // 维保说明
					faultImgList:[], // 维保图片
					reporter:'林某', // 报单人
					declarationTime:'2022/3/31 12:01:00', //报单时间
					serviceMode: '手把手' ,// 服务方式
					address:'四川省成都市成华区' ,// 定位地址
					startTime:'' ,// 开始时间
					endTime:'', // 结束时间
					maintenanceTime:'',// 维保用时
					waitingTime:'',// 等待时长
					maintainer:'陈志远',//主维保人
					ifParts:false,//是否更换配件
					workDescribe:'',// 工作描述
					maintenanceImgList:[],//维保图片
					faultReason:'',//维保原因
					maintenancePersonnel:''//维保人员
				},
				productTypeList:[
					{id:1,name:'不显示'}
				],//产品类型
				productIndex:0,//产品类型下标
				faultTypeList:[
					{id:2,name:'参数错误'}
				],//维保类型
				faultIndex:0,//维保类型下标
				serviceModeList:[
					{id:1,name:'上门服务'}
				],//服务方式
				serviceModeIndex:0,//服务方式下标
				flag:true,
				temporaryImg:[],//暂存图片id
				addressFlag:true
            }
        },
		onShow() {
			uni.removeStorageSync('partsList');
			uni.removeStorageSync('targetObj');
		},
		onLoad(op) {
			if(op.id!=undefined) {
				this.orderId = op.id;
				this.handleWorkOrderGet(this.orderId);
			}
			// 更新定位地址
			this.getAddress();
		},
        methods: {
			// app获取经纬度和详细地址
			getAddress(){
				// this.$toolAll.tools.showToast('正在获取定位...')
				// #ifdef APP-PLUS
				if(this.addressFlag) {
					this.addressFlag = false;
					uni.getLocation({
						type: 'gcj02', 
						geocode:true,
						success: (res)=> {
							// this.$toolAll.tools.showToast('定位成功');
							// console.log(res,'app');
							this.targetObj.address = `${res.address.province}${res.address.city}${res.address.district}${res.address.street || ''}${res.address.streetNum || ''}${res.address.poiName || ''}`
							setTimeout(()=>{
								this.addressFlag = true;
							},2000)
						}
					});
				} else {
					this.$toolAll.tools.showToast('请勿重复获取定位...')
				}
				// #endif
				// #ifdef MP-WEIXIN
				this.getAddressWx();
				// #endif
				// #ifdef H5
				this.getAddressH5();
				// #endif
			},
			// 微信获取经纬度和详细地址
			getAddressWx(){
				if(this.addressFlag) {
					this.addressFlag = false;
					uni.getLocation({
						type: 'gcj02',
						geocode:true,
						success: (res)=> {
							// console.log(res,'地址信息');
							qqmapsdk.reverseGeocoder({
								location: {latitude: res.latitude, longitude: res.longitude},
								success:(res)=> { 
									console.log(res,'WX');
									// this.$toolAll.tools.showToast('定位成功');
									this.targetObj.address = `${res.result.address_component.province}${res.result.address_component.city}${res.result.address_component.district}${res.result.address_component.street || ''}(${res.result.address_component.street_number || ''})`
									setTimeout(()=>{
										this.addressFlag = true;
									},2000)
								},
								fail(err) {
									console.log(err)
								}
							})
						}
					});
				} else {
					this.$toolAll.tools.showToast('请勿重复获取定位...')
				}
			},
			getAddressH5(){
				if(this.addressFlag) {
					this.addressFlag = false;
					uni.getLocation({
					    type: 'gcj02',//wgs84	gcj02
						altitude: true, 
						geocode: true,
					    success: (res)=> {
							let str =  `output=jsonp&key=QNHBZ-55RKF-OMFJJ-NPU7O-EPSDH-ACBAA&location=${res.latitude},${res.longitude}`
							jsonp('https://apis.map.qq.com/ws/geocoder/v1/?'+str,{}).then(res=>{
								console.log(res,'H5'); 
								// this.$toolAll.tools.showToast('定位成功');
								this.targetObj.address = `${res.result.address_component.province}${res.result.address_component.city}${res.result.address_component.district}${res.result.address_component.street || ''}(${res.result.address_component.street_number || ''})`
								setTimeout(()=>{
									this.addressFlag = true;
								},2000)
							}) 
					    }
					});
				} else {
					this.$toolAll.tools.showToast('请勿重复获取定位...')
				}
			},
			// 改变产品类型、维保类型、服务方式
			changePicker(index,e) {
				switch (index){
					case 0:
					// 产品类型
					this.productIndex = e.detail.value;
					this.targetObj.productType = this.productTypeList[this.productIndex].name;
						break;
					case 1:
					// 维保类型
					this.faultIndex = e.detail.value;
					this.targetObj.faultType = this.faultTypeList[this.faultIndex].name;
						break;
					case 2:
					// 服务方式
					this.serviceModeIndex = e.detail.value;
					this.targetObj.serviceMode = this.serviceModeList[this.serviceModeIndex].name;
						break;
				}
			},
			// 查看信息签到执行
			handleWorkOrderGet(id){
				let params = {
					order_id:id,
					steps:1
				}
				handleWorkOrderGet(params).then(res=>{
					if(res.code) {
						let dataObj = res.data;
						this.targetObj.workOrderNo = dataObj.order_number;//工单编号
						this.targetObj.projectNo = dataObj.project_number;//项目编号
						this.targetObj.projectName = dataObj.project_name;//项目名称
						this.targetObj.installLocation = dataObj.installation_location;//安装位置
						this.targetObj.faultExplain = dataObj.failure_description;//维保说明
						this.targetObj.urgentDegree = dataObj.emergency_level_view;//紧急程度
						this.targetObj.reporter = dataObj.order_contact;//报单人
						this.targetObj.declarationTime = dataObj.order_times;//报单时间
						
						// 产品类型
						if(dataObj.form.product_type.length) {
							this.productTypeList = [];
							dataObj.form.product_type.forEach((item,index)=>{
								this.productTypeList.push(item);
								if(item.id==dataObj.product_type) {
									this.productIndex = index;
									this.targetObj.productType = item.name;//产品类型
								}
							})
						}
						// 维保类型
						if(dataObj.form.fault_type.length) {
							this.faultTypeList = [];
							dataObj.form.fault_type.forEach((item,index)=>{
								this.faultTypeList.push(item);
								if(item.id==dataObj.fault_type) {
									this.faultIndex = index;
									this.targetObj.faultType = item.name;//维保类型
								}
							})
						}
						// 服务方式
						if(dataObj.form.service_method.length) {
							this.serviceModeList = [];
							dataObj.form.service_method.forEach((item,index)=>{
								this.serviceModeList.push(item);
								if(item.id==dataObj.service_method) {
									this.serviceModeIndex = index;
									this.targetObj.serviceMode = item.name;//服务方式
								}
							})
						}
					}
				})
			},
			// 上传图片
			chooseImg(){
				uni.chooseImage({
					count:1,
					sourceType:['album','camera'],
					success: (res) => {
						let imgsrc = res.tempFilePaths[0];
						// 获取上传图片id
						uploadImg({path:imgsrc}).then(res=>{
							if(res.code) {
								this.temporaryImg.push(res.data.id);
								this.targetObj.faultImgList.push(imgsrc);
							}
						})
					},fail:(err)=> {
						this.$toolAll.tools.checkQx(err.code);
                    }
				})
			},
			// 签到事件
            goWorkOrderThree() {
				if(this.checkEmpty()){
					if(this.flag) {
						this.flag = false;
						this.targetObj.startTime = this.$toolAll.tools.returnCurrentTime('-',0);
						uni.setStorageSync('targetObj',this.targetObj);
						let params = {
							steps:1,
							order_id:this.orderId,//工单id
							start_address:this.targetObj.address,//开工地址
							product_type:this.productTypeList[this.productIndex].id,//产品类型
							installation_location:this.targetObj.installLocation,//安装位置
							fault_type:this.faultTypeList[this.faultIndex].id,//维保类型
							failure_description:this.targetObj.faultExplain,//维保说明
							fault_picture:this.temporaryImg.join(','),//维保图片
							service_method:this.serviceModeList[this.serviceModeIndex].id//服务方式
						}
						console.log(params,'签到数据')
						handleWorkOrderSubmit(params).then(res=>{
							console.log(res,'签到状态')
							if(res.code) {
								uni.navigateTo({
								    url: `/pagesA/workOrder/workorderTwo?id=${this.orderId}`
								})
							}
							this.flag = true;
						})
					}
				}
            },
			// 判空
			checkEmpty(){
				let result = false;
				if(!this.targetObj.installLocation) {
					this.$toolAll.tools.showToast('请填写安装位置');
				} else if(!this.targetObj.faultExplain) {
					this.$toolAll.tools.showToast('请填写维保说明');
				} else if(this.targetObj.faultImgList.length==0) {
					this.$toolAll.tools.showToast('请添加维保图片');
				} else {
					result = true;
				}
				return result;
			}
        }
    }
</script>

<style>
    .submit-button {
        margin-top: 60rpx;
    }

    .work-order-schedule {
        display: flex;
        padding: 22rpx 29rpx;
        margin-top: 10rpx;
        background-color: #FFFFFF;
        justify-content: space-between;
    }

    .work-order-schedule .icon {
        width: 38rpx;
        height: 38rpx;
        color: #FFFFFF;
        margin: auto;
        position: relative;
        font-size: 24rpx;
        margin-bottom: 10rpx;
        text-align: center;
        line-height: 38rpx;
        background-color: #999999;
        border-radius: 50%;

    }

    .work-order-schedule .on {
        background-color: #5391F3
    }

    .work-order-schedule .text {
        font-size: 24rpx;
        color: #333333;
    }

    .work-order-schedule .icon-after::after {
        content: "";
        width: 265rpx;
        height: 2rpx;
        background-color: #999999;
        position: absolute;
        top: 19rpx;
        left: 38rpx;
    }

    .work-order-from {
        margin-top: 10rpx;
        background-color: #FFFFFF;
    }

    .work-order-from .li {
        display: flex;
        padding: 20rpx 40rpx;
        border-bottom: 2rpx solid #ececec;
    }

    .work-order-from .li .title {
        font-size: 26rpx;
        /* width: 150rpx; */
    }

    .work-order-from .li .input {
        font-size: 24rpx;
        color: #8b8b8b;
        flex: 1;
        padding-left: 15rpx;
		display: flex;
    }

    .work-order-from .li .input .img {
        width: 169rpx;
        height: 127rpx;
        margin-right: 10rpx;
    }

    .work-order-from .li .input-black {
        color: #292929;
    }
</style>
