<template>
  <view class="handler">
    <view class="head">
      <view class="tab" :class="{active: tab.value === dataInfo.tabActiveValue}" v-for="tab in dataInfo.tabs" :key="tab.id" @click="clickTab(tab.value)">
        {{tab.name}}<text v-if="tab.num !== ''">({{tab.num}})</text>
      </view>
    </view>
		<view class="body view-body" :class="{ page_padding: !(dataInfo.tabActiveValue === 'doing' && isInSummaryOrder), bg: (dataInfo.tabActiveValue === 'doing' && isInSummaryOrder) }">
    <!-- <scroll-view scroll-y class="body" :class="{ page_padding: !(dataInfo.tabActiveValue === 'doing' && isInSummaryOrder), bg: (dataInfo.tabActiveValue === 'doing' && isInSummaryOrder) }"> -->
      <!-- 汇总单 -->
      <template v-if="dataInfo.tabActiveValue === 'doing' && isInSummaryOrder">
        <!-- 耗材 -->
        <view class="summaryItem">
          <view class="summaryItem_head">
            耗材清单
          </view>
          <view class="summaryItem_body" v-if="dataInfo.summaryObj.consumableList.length">
            <view class="summaryItem_bodyItem" v-for="item in dataInfo.summaryObj.consumableList" :key="item.id" @click="numberClick(item, 'editConsumable')">
              <view class="summaryItem_bodyItem_top">
                <text class="name ellipsis">{{ item.consumableName }}<template v-if="item.consumableBrandModel">({{ item.consumableBrandModel }})</template></text>
                <text class="value">{{ item.consumableEndPrice }}元</text>
              </view>
              <view class="summaryItem_bodyItem_bottom">
                <text class="name">x{{ item.consumablesNum }}{{ item.consumablesUnit }}</text>
                <text class="value">总价{{item.consumablesNum * item.consumableEndPrice}}元</text>
              </view>
            </view>
          </view>
          <view class="summaryItem_foot">
            <view class="summaryItem_foot_total">
              耗材总价：{{dataInfo.summaryObj.consumablePrice}}元
            </view>
            <view class="summaryItem_foot_add" @click="addConsumable">
              <text class="newicon newicon-icon-test"></text>
            </view>
          </view>
        </view>
        
        <!-- 工时 -->
        <view class="summaryItem">
          <view class="summaryItem_head">
            工时清单
          </view>
          <view class="summaryItem_body" v-if="dataInfo.summaryObj.workHourManagementList.length">
            <view class="summaryItem_bodyItem" v-for="item in dataInfo.summaryObj.workHourManagementList" :key="item.id" @click="numberClick(item, 'editWorkHourManagement')">
              <view class="summaryItem_bodyItem_top">
                <text class="name ellipsis">{{ item.workName }}</text>
                <text class="value">{{ item.wage }}元</text>
              </view>
              <view class="summaryItem_bodyItem_bottom">
                <text class="name">x{{ item.workHourNum2 }}{{ item.workUnit }}</text>
                <text class="value">总价{{item.workHourNum2 * item.wage}}元</text>
              </view>
            </view>
          </view>
          <view class="summaryItem_foot">
            <view class="summaryItem_foot_total">
              工时总价：{{dataInfo.summaryObj.workHourPrice}}元
            </view>
            <view class="summaryItem_foot_add" @click="addWorkHourManagement">
              <text class="newicon newicon-icon-test"></text>
            </view>
          </view>
        </view>
        
        <!-- 汇总单总价 -->
        <view class="summaryItem">
          <view class="summaryItem_foot total">
            <view class="summary_total">
              汇总单总价：{{dataInfo.summaryObj.totalMaintenancePrice}}元
            </view>
          </view>
        </view>
      </template>
      
      <!-- 故障处理 -->
      <template v-if="dataInfo.tabActiveValue === 'doing' && !isInSummaryOrder">
        <view class="form_item column" v-if="HandleData.simpleness != 1">
          <view class="title title-width">
						<text class="required newicon newicon-bitian"></text>
						<view class="title-fl-sb">
							解决方案：
							<view @click="importRep('malfunction')" class="import-rep">引入知识库({{dataInfo.introduceCount}})</view>
						</view>	
					</view>
          <uni-easyinput id="scheme" class="value" type="textarea" v-model="dataInfo.handleDescription" placeholder="请输入解决方案" :class="{formRed: isSubmit && !dataInfo.handleDescription.trim()}" />
        </view>
				<view class="form_item" v-if="newProvideBackupMachine==1">
				  <view class="title"><text class="required newicon newicon-bitian"></text>是否归还备用机：</view>
					<uni-data-checkbox v-model="dataInfo.returnBackupMachine" :localdata="machineData"></uni-data-checkbox>
				</view>
        <view class="form_item" v-if="HandleData.simpleness != 1">
          <view class="title"><text class="required newicon newicon-bitian"></text>故障现象：</view>
          <view class="value category" @click="selectCategory">
            <text class="categoryName ellipsis-multiline">{{dataInfo.category.mutiCategory}}</text>
            <text class="newicon newicon-weibiaoti2010104"></text>
          </view>
        </view>
        <view class="form_item">
          <view class="title select"><text class="required newicon newicon-bitian"></text>处理方式：</view>
          <!-- <uni-data-select class="value" v-model="dataInfo.handleCategory" :localdata="dataInfo.handleCategoryList" :clear="false" placeholder="请选择处理方式" :class="{formRed: isSubmit && !dataInfo.handleCategory}"></uni-data-select> -->
					<uni-data-picker class="value" placeholder="请选择处理方式"
						v-model="dataInfo.handleCategory" :localdata="dataInfo.handleCategoryList"
						:clear-icon="false" :class="{formRed: isSubmit && !dataInfo.handleCategory}">
					</uni-data-picker>
				</view>
        <view class="form_item" v-if="HandleData.simpleness != 1">
          <view class="title select"><text class="required newicon newicon-bitian"></text>处理结果：</view>
          <!-- <uni-data-select class="value" v-model="dataInfo.closecode" :localdata="dataInfo.closecodeList" :clear="false" placeholder="请选择处理结果" :class="{formRed: isSubmit && !dataInfo.closecode}"></uni-data-select> -->
					<uni-data-picker class="value" placeholder="请选择处理结果"
						v-model="dataInfo.closecode" :localdata="dataInfo.closecodeList"
						:clear-icon="false" :class="{formRed: isSubmit && !dataInfo.closecode}">
					</uni-data-picker>
				</view>
        <view class="form_item">
          <view class="title"><text class="required newicon newicon-bitian transparent"></text>协同人员：</view>
          <text class="synergeticNames ellipsis">{{dataInfo.synergetic.map(v => v.name).join('，')}}</text>
          <button type="primary" plain size="mini" class="primaryPlainButton synergeticAdd" @click="synergeticAdd">+立即添加</button>
        </view>
        <view class="form_item_column">
          <view class="form_item">
            <view class="title"><text class="required newicon newicon-bitian transparent"></text>处理图片：</view>
            <view class="value">
              <uni-file-picker ref="handlerImgRef" v-model="dataInfo.handlerImgList" limit="3" @success="handlerImgSuccess" @fail="handlerImgFail" @select="handlerImgSelect" @delete="handlerImgDelete"></uni-file-picker>
            </view>
          </view>
          <view class="form_item">
            <view class="title transparent"><text class="required newicon newicon-bitian transparent"></text>处理图片：</view>
            <view class="value">
              <text class="imgTips ellipsis">(支持JPG/PNG格式图片，单张大小10M以内)</text>
            </view>
          </view>
        </view>
      </template>
      
      <!-- 延期处理 -->
      <template v-if="dataInfo.tabActiveValue === 'overtime'">
        <view class="form_item">
          <view class="title select"><text class="required newicon newicon-bitian"></text>延期原因：</view>
          <!-- <uni-data-select class="value" v-model="dataInfo.repairTypeId" :localdata="dataInfo.repairTypeList" :clear="false" placeholder="请选择延期原因" :class="{formRed: isSubmit && !dataInfo.repairTypeId}"></uni-data-select> -->
					<uni-data-picker class="value" placeholder="请选择延期原因"
						v-model="dataInfo.repairTypeId" :localdata="dataInfo.repairTypeList"
						:clear-icon="false" :class="{formRed: isSubmit && !dataInfo.repairTypeId}">
					</uni-data-picker>
				</view>
        <view class="form_item column">
          <view class="title"><text class="required newicon newicon-bitian"></text>延期说明：</view>
          <uni-easyinput class="value" type="textarea" v-model="dataInfo.deferralRemark" placeholder="请输入延期说明" :class="{formRed: isSubmit && !dataInfo.deferralRemark.trim()}" />
        </view>
        <view class="form_item">
          <view class="title select"><text class="required newicon newicon-bitian"></text>延期天数：</view>
          <!-- <uni-data-select class="value" v-model="dataInfo.deferralDayId" :localdata="dataInfo.deferralDayList" :clear="false" placeholder="请选择延期天数" :class="{formRed: isSubmit && !dataInfo.deferralDayId}"></uni-data-select> -->
					<uni-data-picker class="value" placeholder="请选择延期天数"
						v-model="dataInfo.deferralDayId" :localdata="dataInfo.deferralDayList"
						:clear-icon="false" :class="{formRed: isSubmit && !dataInfo.deferralDayId}">
					</uni-data-picker>
				</view>
				<view class="form_item">
				  <view class="title"><text class="required newicon newicon-bitian"></text>是否提供备用机：</view>
					<uni-data-checkbox v-model="dataInfo.provideBackupMachine" :localdata="machineData"></uni-data-checkbox>
				</view>
      </template>
    <!-- </scroll-view> -->
		</view>
    <view class="foot_common_btns">
      <button @click="goBackOrToList" type="default" class="cancelButton btn">{{dataInfo.isSummaryNext ? '上一步' : '返回'}}</button>
      <button @click="submit" type="default" class="primaryButton btn">{{dataInfo.tabActiveValue === 'doing' && isInSummaryOrder ? '下一步' : '提交'}}</button>
    </view>
    <NumberModal v-if="dataInfo.isNumber" @cancelEmit="cancelNumber" @confirmEmit="conformNumber" @removeEmit="removeNumber" :selectData="dataInfo.selectData" :selectType="dataInfo.selectType" :evtNumber="dataInfo.evtNumber" showRemove></NumberModal>
  </view>
</template>

<script setup>
  import { ref, reactive, computed } from 'vue'
  import NumberModal from '@/components/NumberModal.vue';
  import { onLoad } from '@dcloudio/uni-app'
  import { generateNumberArray } from '@/utils/index.js'
  import { api_group, api_incidentDetail, getFetchDataList, api_getSolution, api_user, api_incidentTask, api_branch, api_dutyDepartment, api_getDictionary, api_querySummaryDoc, api_addSummaryDoc } from "@/http/api.js"
  import { defaultColor } from '@/static/js/theme.js'
  import { useSetTitle } from '@/share/useSetTitle.js'
  import { useMakePhoneCall } from '@/share/useMakePhoneCall.js'
  import { useUploadFile } from '@/share/useUploadFile.js'
  import { useGoBack } from '@/share/useGoBack.js'
  import { useLoginUserStore } from '@/stores/loginUser'
  import { useHandlerStore } from '@/stores/handler'
  
  useSetTitle();
  const loginUserStore = useLoginUserStore();
  const handlerStore = useHandlerStore();
  const { makePhoneCall }  = useMakePhoneCall();
  const { uploadFile }  = useUploadFile();
  const { goBack }  = useGoBack();
  
  // 主题颜色
  const primaryColor = ref(defaultColor)
  
	// 备用机选项
	const machineData = ref([
		{
			text:'是',
			value:1
		},
		{
			text:'否',
			value:0
		},
	])
	
  // 数据
  const dataInfo = reactive({
    tabs: [
      // {id: 5, name: '故障处理', value: 'doing', num: ''},
      // {id: 6, name: '延期处理', value: 'overtime', num: ''},
    ],
    tabActiveValue: 0,//当前选择的tab
    incidentId: undefined,//事件ID
    incidentData: {},//事件对象
    repairTypeList: [], //延期原因列表
    repairTypeId: undefined, //延期原因ID
    deferralDayList: [], //延期天数列表
    deferralDayId: undefined, //延期天数ID
    deferralRemark: '',//延期说明
    summaryObj: {
      consumableList: [],//耗材列表
      workHourManagementList: [],//工时列表
    },//汇总单信息
    summaryId: undefined,//汇总单Id
    isNumber: false,//修改数量弹窗
    evtNumber: 1,//弹窗返回的数量
    selectData: {},//选择的对象
    selectType: {},//选择的对象类型
    handleDescription: '',//解决方案
    handleCategory: undefined,//处理方式
    handleCategoryList: [],//处理方式列表
    closecode: undefined,//处理结果
    closecodeList: [],//处理结果列表
    handlerImgList: [],//处理图片列表
    category: {},//故障现象
    synergetic: [],//协同人员
    isSummaryNext: false,//汇总单-下一步
		introduceCount :0 ,//引入次数
		provideBackupMachine:0,//是否提供备用机
		returnBackupMachine:null//是否归还备用机
  })
  
	// 故障处理用是否提供备用机
	const newProvideBackupMachine = ref(0)
	
	// 知识库id
	const solutionId = ref(null)
	
  // 是否提交
  const isSubmit = ref(false)
	
	// 是否开启汇总单
	const SummaryData = ref(false)
  
	// 是否简单处理
	const HandleData = reactive({
		simpleness:null
	})
  // 处理图片
  const handlerImgRef = ref(null)
  
  // 是否进入汇总单
  const isInSummaryOrder = computed(() => {
    return dataInfo.tabActiveValue === 'doing' && SummaryData.value.value == 1 && (dataInfo.incidentData.handlingPersonnelUser.id == loginUserStore.loginUser.user.id);
  })
  
  // 上一步或者返回列表
  function goBackOrToList(){
    if(dataInfo.isSummaryNext){
			handlerStore.setHandlerData(dataInfo, 'assign', 'assign');
      goBack();
    }else{
      uni.reLaunch({
        url: '/pages/incidentList/incidentList'
      })
    }
  }
  
  // 上传处理图片成功
  function handlerImgSuccess(e){
    dataInfo.handlerImgList.forEach(v => {
      v.url = v.path;
    })
    console.log(dataInfo.handlerImgList);
    let handlerOrder$ = handlerOrder();
    let requestList = [handlerOrder$];
    dataInfo.handlerImgList.forEach(v => {
      let handlerOrderImg$ = handlerOrderImg(v);
      requestList.push(handlerOrderImg$);
    })
    
    Promise.all(requestList).then(resList => {
      uni.hideLoading();
      console.log(resList);
      if(resList[0].state == 200){
        uni.showToast({
        	icon: 'none',
          title: '处理成功',
          mask: true,
        });
        setTimeout(() => {
          uni.reLaunch({
            url: '/pages/incidentList/incidentList',
          })
        }, 1500)
      }else{
        uni.showToast({
          icon: 'none',
          title: resList[0].msg || '请求数据失败！'
        });
      }
    })
  }
  
  // 上传处理图片失败
  function handlerImgFail(e){
    dataInfo.handlerImgList.forEach(v => {
      v.url = v.path;
    })
    console.log(dataInfo.handlerImgList);
  }
  
  // 选择上传图片
  function handlerImgSelect(e){
    dataInfo.handlerImgList = dataInfo.handlerImgList.concat(e.tempFiles);
    console.log(dataInfo.handlerImgList);
  }
  
  // 删除上传图片
  function handlerImgDelete(e){
    dataInfo.handlerImgList = dataInfo.handlerImgList.filter(v => e.tempFile.uuid != v.uuid);
    console.log(dataInfo.handlerImgList);
  }
  
  // 添加协同人员
  function synergeticAdd(){
    handlerStore.setHandlerData(dataInfo, 'handler');
    uni.navigateTo({
      url: `/pages/synergeticAdd/synergeticAdd?incidentId=${dataInfo.incidentId}`
    })
  }
  
	// 引入知识库
	function importRep(type){
		dataInfo.operateType = type
		handlerStore.setHandlerData(dataInfo, 'assign', 'assign');
		uni.navigateTo({
		  url: `/pages/repository/repository`
		})
	}
	
  // 选择故障现象
  function selectCategory(){
    handlerStore.setHandlerData(dataInfo, 'handler');
    uni.navigateTo({
      url: `/pages/categoryOne/categoryOne?incidentId=${dataInfo.incidentId}`
    })
  }
  
  // 点击修改数量
  function numberClick(data, type){
    if(type === 'editConsumable'){
      dataInfo.evtNumber = data.consumablesNum;
    }else if(type === 'editWorkHourManagement'){
      dataInfo.evtNumber = data.workHourNum2;
    }
    
    dataInfo.isNumber = true;
    dataInfo.selectData = data;
    dataInfo.selectType = type;
  }
  
  // 确认修改数量
  function conformNumber(evtNumber){
    dataInfo.evtNumber = evtNumber;
    dataInfo.isNumber = false;
    addSummaryDoc();
  }
  
  // 移除数量
  function removeNumber(evtNumber){
    dataInfo.evtNumber = evtNumber;
    dataInfo.isNumber = false;
    removeSummaryDoc();
  }
  
  // 关闭修改数量
  function cancelNumber(){
    dataInfo.isNumber = false;
  }
  
  // 修改耗材/工时
  function addSummaryDoc(){
    uni.showLoading({
      title: "加载中",
      mask: true,
    });
    let postData = {
      "summaryId": dataInfo.summaryId,
      "modifyNum": 'edit',
    };
    if(dataInfo.selectType === 'editConsumable'){
      postData.consumableList = [
        {
          "consumablesId": dataInfo.selectData.consumableId,
          "consumablesNum": dataInfo.evtNumber,
        }
      ];
    }else if(dataInfo.selectType === 'editWorkHourManagement'){
      postData.workHourManagementList = [
        {
          "workHourId": dataInfo.selectData.id,
          "workHourNum": dataInfo.evtNumber,
        }
      ];
    }
    api_addSummaryDoc(postData).then(res => {
      uni.hideLoading();
      if(res.status == 200){
        uni.showToast({
        	icon: 'none',
          title: '修改数量成功',
          mask: true,
        });
        getSummaryList();
      }else{
        uni.showToast({
          icon: 'none',
          title: res.msg || '请求数据失败！'
        });
      }
    })
  }
  
  // 移除耗材/工时
  function removeSummaryDoc(){
    uni.showLoading({
      title: "加载中",
      mask: true,
    });
    let postData = {
      "summaryId": dataInfo.summaryId,
      "remove": 'remove',
    };
    if(dataInfo.selectType === 'editConsumable'){
      postData.consumableList = [
        {
          "consumablesId": dataInfo.selectData.consumableId,
          "consumablesNum": dataInfo.evtNumber,
        }
      ];
    }else if(dataInfo.selectType === 'editWorkHourManagement'){
      postData.workHourManagementList = [
        {
          "workHourId": dataInfo.selectData.id,
          "workHourNum": dataInfo.evtNumber,
        }
      ];
    }
    api_addSummaryDoc(postData).then(res => {
      uni.hideLoading();
      if(res.status == 200){
        uni.showToast({
        	icon: 'none',
          title: '移除成功',
          mask: true,
        });
        getSummaryList();
      }else{
        uni.showToast({
          icon: 'none',
          title: res.msg || '请求数据失败！'
        });
      }
    })
  }
  
  // 重置
  function reset(){
    dataInfo.repairTypeList = []; //延期原因列表
    dataInfo.repairTypeId = undefined; //延期原因ID
    dataInfo.deferralDayList = []; //延期天数列表
    dataInfo.deferralDayId = undefined; //延期天数ID
    dataInfo.deferralRemark = '';//延期说明
    dataInfo.summaryObj = {
      consumableList: [],//耗材列表
      workHourManagementList: [],//工时列表
    };//汇总单信息
    dataInfo.summaryId = undefined;//汇总单Id
    dataInfo.isNumber = false;//修改数量弹窗
    dataInfo.evtNumber = 1;//弹窗返回的数量
    dataInfo.selectData = {};//选择的对象
    dataInfo.selectType = {};//选择的对象类型
    dataInfo.handleDescription = '';//解决方案
		solutionId.value = null;//引用知识库id
    dataInfo.handleCategory = undefined;//处理方式
    dataInfo.handleCategoryList = [];//处理方式列表
    dataInfo.closecode = undefined;//处理结果
    dataInfo.closecodeList = [];//处理结果列表
    dataInfo.handlerImgList = [];//处理图片列表
    dataInfo.category = {};//故障现象
    dataInfo.synergetic = [];//协同人员
		dataInfo.provideBackupMachine = 0
		dataInfo.returnBackupMachine = null
  }
  
  // 初始化表单
  function initForm(){
    if(dataInfo.tabActiveValue === 'doing' && isInSummaryOrder.value){
      getSummaryList();
    }else if(dataInfo.tabActiveValue === 'doing' && !isInSummaryOrder.value){
      getHandleCategorys();
      getClosecodes();
    }else if(dataInfo.tabActiveValue === 'overtime'){
      getRepairTypes();
      getDeferralDays();
    }
  }
  
  // 点击tab
  function clickTab(tabValue){
    if(dataInfo.tabActiveValue == tabValue){
      return;
    }
    dataInfo.tabActiveValue = tabValue;
    isSubmit.value = false;
    reset();
    dataInfo.category = dataInfo.incidentData.category || {};
    dataInfo.synergetic = dataInfo.incidentData.synergetic || [];
		newProvideBackupMachine.value = dataInfo.incidentData.provideBackupMachine
    initForm();
  }
  
  // 获取事件详情
  function getIncidentDetail(){
    uni.showLoading({
      title: "加载中",
      mask: true,
    });
		let title = null;
    api_incidentDetail(dataInfo.incidentId).then(res => {
      uni.hideLoading();
      if(res.status == 200){
        dataInfo.incidentData = res.data || {};
				dataInfo.summaryId = res.data.summaryId;
				newProvideBackupMachine.value = dataInfo.incidentData.provideBackupMachine
        let storeData = handlerStore.handler.data
        if(storeData && storeData.type!='rep'){
					if(dataInfo.isSummaryNext){
					  // 汇总单-下一步
					  dataInfo.incidentData.duty.addSummary = 0;
					}
				}
        
        // 跳转页面选择了选项并且工单ID一致
        if(handlerStore.handler.data && handlerStore.handler.data.incidentId == dataInfo.incidentId){
         if(dataInfo.handleDescription){
         	dataInfo.handleDescription = null;
         }
					Object.assign(dataInfo, handlerStore.handler.data);
					getIntroduceCount(dataInfo.category.id)

					
          handlerStore.clearHandlerData();
        }else{
          handlerStore.clearHandlerData();
          // 初始化回显
          dataInfo.category = dataInfo.incidentData.category || {};
          dataInfo.synergetic = dataInfo.incidentData.synergetic || [];
          getIntroduceCount(dataInfo.category.id)
          let chuli = false;//故障处理权限
          for (let i = 0; i < loginUserStore.loginUser.menu.length; i++) {
              if (loginUserStore.loginUser.menu[i].link == "handle") {
                chuli = true
              }
          }
          
          // 故障处理
          if(dataInfo.incidentData.state.value == 'handler' && dataInfo.incidentData.handlingPersonnelUser && dataInfo.incidentData.handlingPersonnelUser.id == loginUserStore.loginUser.user.id && chuli){
            let flag = dataInfo.tabs.some(v => v.value === 'doing');
            !flag && dataInfo.tabs.splice(0, 0, {id: 5, name: '故障处理', value: 'doing', num: ''});
          }
          
          // 延期处理
          if(dataInfo.incidentData.state.value == 'handler' && dataInfo.incidentData.handlingPersonnelUser && dataInfo.incidentData.handlingPersonnelUser.id == loginUserStore.loginUser.user.id){
            let flag = dataInfo.tabs.some(v => v.value === 'overtime');
            !flag && dataInfo.tabs.push({id: 6, name: '延期处理', value: 'overtime', num: ''});
          }
          
          dataInfo.tabActiveValue = dataInfo.tabs[0].value;
        }
        initForm()
      }else{
        uni.showToast({
          icon: 'none',
          title: res.msg || '请求数据失败！'
        });
      }
    })
  }
  
  // 获取延期原因列表
  function getRepairTypes(){
    uni.showLoading({
      title: "加载中",
      mask: true,
    });
    let postData = {
      "key": 'repair_type',
      "type": "list",
    };
    api_getDictionary(postData).then(res => {
      uni.hideLoading();
      res = res || [];
      dataInfo.repairTypeList = res.map(v => ({
        text: v.name,
        value: v.id,
      }));
    })
  }
  
  // 获取处理方式列表
  function getHandleCategorys(){
    uni.showLoading({
      title: "加载中",
      mask: true,
    });
    let postData = {
      "key": 'incident_handle_type',
      "type": "list",
    };
    api_getDictionary(postData).then(res => {
      uni.hideLoading();
      res = res || [];
      dataInfo.handleCategoryList = res.map(v => ({
        text: v.name,
        value: v.id,
        key: v.value,
      }));
      if(!dataInfo.handleCategory){
        let handleCategory = dataInfo.handleCategoryList.find(v => v.key == 'SUPPORT');
        dataInfo.handleCategory = handleCategory ? handleCategory.value : undefined;
      }
    })
  }
  
  // 获取处理结果列表
  function getClosecodes(){
    uni.showLoading({
      title: "加载中",
      mask: true,
    });
    let postData = {
      "key": 'incident_closecode',
      "type": "list",
    };
    api_getDictionary(postData).then(res => {
      uni.hideLoading();
      res = res || [];
      dataInfo.closecodeList = res.map(v => ({
        text: v.name,
        value: v.id,
        key: v.value,
      }));
      if(!dataInfo.closecode){
        let closecode = dataInfo.closecodeList.find(v => v.key == '060');
        dataInfo.closecode = closecode ? closecode.value : undefined;
      }
    })
  }
  
  // 获取延期天数列表
  function getDeferralDays(){
    dataInfo.deferralDayList = generateNumberArray(1, 15).map(v => ({
      text: v + '天',
      value: v,
    }));
		dataInfo.deferralDayList.unshift({
			text: '0.5天',
			value: 0.5,
		})
  }
  
  // 获取汇总单信息
  function getSummaryList(){
    uni.showLoading({
      title: "加载中",
      mask: true,
    });
    let postData = {
      "incidentId": dataInfo.incidentId,
    };
    api_querySummaryDoc(postData).then(res => {
      uni.hideLoading();
      if(res.status == 200){
        dataInfo.summaryObj = {...{consumableList:[], workHourManagementList: []}, ...res };
        dataInfo.summaryId = res.summaryId;
      }else if(res.status == 201){
        // 事件第一次绑定汇总单
        dataInfo.summaryId = res.summaryId;
      }else{
        uni.showToast({
          icon: 'none',
          title: res.msg || '请求数据失败！'
        });
      }
    })
  }
  
  // 添加耗材
  function addConsumable(){
    uni.navigateTo({
      url: `/pages/consumableList/consumableList?incidentId=${dataInfo.incidentId}&summaryId=${dataInfo.summaryId}`
    })
  }
  
  // 添加工时
  function addWorkHourManagement(){
		let hosId = dataInfo.incidentData.duty.id
    uni.navigateTo({
      url: `/pages/workHourManagementOne/workHourManagementOne?incidentId=${dataInfo.incidentId}&summaryId=${dataInfo.summaryId}&hosId=${hosId}`
    })
  }
  
  // 提交
  function submit(){
    isSubmit.value = true;
    if(dataInfo.tabActiveValue === 'doing' && isInSummaryOrder.value){
      uni.navigateTo({
        url: `/pages/handler/handler?incidentId=${dataInfo.incidentId}&isSummaryNext=1&type=0`,
      });
    }else if(dataInfo.tabActiveValue === 'doing' && !isInSummaryOrder.value){
      submitHandler();
    }else if(dataInfo.tabActiveValue === 'overtime'){
      submitOvertime();
    }
  }
  
  // 处理提交事件
  function handlerOrder(){
		dataInfo.incidentData.returnBackupMachine = dataInfo.returnBackupMachine
    let postData = {
      incident: dataInfo.incidentData,
			solutionId:solutionId.value
    }
    postData.incident.handleDescription = dataInfo.handleDescription;
    postData.incident.handleCategory = {id: dataInfo.handleCategory};
    postData.incident.closecode = {id: dataInfo.closecode};
    postData.incident.category = dataInfo.category;
    postData.incident.synergetic = dataInfo.synergetic;
    
    return api_incidentTask(dataInfo.tabActiveValue, postData);
  }
  
  // 处理图片
  function handlerOrderImg(imgObj){
    return uploadFile(imgObj, 'incident', dataInfo.incidentId)
  }
  
  // 处理提交
  function submitHandler(){
    console.log(dataInfo);
    if(!dataInfo.handleDescription.trim() && HandleData.simpleness != 1){
      uni.showToast({
      	icon: 'none',
        title: '请填写解决方案'
      });
      return;
    }
		
		if(newProvideBackupMachine.value==1 && dataInfo.returnBackupMachine==null){
		  uni.showToast({
		  	icon: 'none',
		    title: '请选择是否归还备用机'
		  });
		  return;
		}
		
    if(!dataInfo.category.id && HandleData.simpleness != 1){
      uni.showToast({
      	icon: 'none',
        title: '请选择故障现象'
      });
      return;
    }
    
    if(!dataInfo.handleCategory){
      uni.showToast({
      	icon: 'none',
        title: '请选择处理方式'
      });
      return;
    }
    
    if(!dataInfo.closecode && HandleData.simpleness != 1){
      uni.showToast({
      	icon: 'none',
        title: '请选择处理结果'
      });
      return;
    }
    console.log(dataInfo.handlerImgList)
    
    uni.showLoading({
      title: "加载中",
      mask: true,
    });
    if(dataInfo.handlerImgList.length){
      // 有图片
      handlerImgRef.value.upload();
    }else{
      // 没有图片
      let handlerOrder$ = handlerOrder();
      let requestList = [handlerOrder$];
      Promise.all(requestList).then(resList => {
        uni.hideLoading();
        console.log(resList);
        if(resList[0].state == 200){
          uni.showToast({
          	icon: 'none',
            title: '处理成功',
            mask: true,
          });
          setTimeout(() => {
            uni.reLaunch({
              url: '/pages/incidentList/incidentList',
            })
          }, 1500)
        }else{
          uni.showToast({
            icon: 'none',
            title: resList[0].msg || '请求数据失败！'
          });
        }
      })
    }
  }
  
  // 延期处理提交
  function submitOvertime(){
    if(!dataInfo.repairTypeId){
      uni.showToast({
      	icon: 'none',
        title: '请选择延期原因'
      });
      return;
    }
    
    if(!dataInfo.deferralRemark.trim()){
      uni.showToast({
      	icon: 'none',
        title: '请填写延期说明'
      });
      return;
    }
    
    if(!dataInfo.deferralDayId){
      uni.showToast({
      	icon: 'none',
        title: '请选择延期天数'
      });
      return;
    }
    
    uni.showLoading({
      title: "加载中",
      mask: true,
    });
    dataInfo.incidentData.provideBackupMachine = dataInfo.provideBackupMachine
    let postData = {
      incident: dataInfo.incidentData,
    }
    
    postData.incident.currentLog = {
      remark: dataInfo.deferralRemark,
      extra1: dataInfo.repairTypeId,
      extra2: dataInfo.deferralDayId,
    }
    
    api_incidentTask(dataInfo.tabActiveValue, postData).then(res => {
      uni.hideLoading();
      if(res.state == 200){
        uni.showToast({
        	icon: 'none',
          title: '延期处理成功',
          mask: true,
        });
        setTimeout(() => {
          uni.reLaunch({
            url: '/pages/incidentList/incidentList',
          })
        }, 1500)
      }else{
        uni.showToast({
          icon: 'none',
          title: res.msg || '请求数据失败！'
        });
      }
    })
  }
  
	// 获取知识库数量
	function getIntroduceCount(categoryId){
		uni.showLoading({
		  title: "加载中",
		  mask: true,
		});
		let query = {
		  "key": 'solution_status',
		  "type": "list",
		};
		api_getDictionary(query).then(res=>{
			 let typeId = res.find(v => v.value == '3');
			 let postData = {
			   idx: 0,
			   sum: 9999,
			   solution: {
					deleteFlag:0,
					hosId: loginUserStore.loginUser.user.currentHospital.id,
			 		categoryId:categoryId,
			 		status:{id:typeId.id},
			   }
			 }
			 api_getSolution(postData).then(res => {
			   uni.hideLoading();
			   if(res.status == 200){
			 		dataInfo.introduceCount = res.totalNum
			   }else{
			     uni.showToast({
			       icon: 'none',
			       title: res.msg || '请求数据失败！'
			     });
			   }
			 })
		})
	}
	
	// 获取文本内容
	function getHtml(html) {
	  const tempDiv = document.createElement('div');
	  tempDiv.innerHTML = html;
	  return tempDiv.textContent || tempDiv.innerText || '';
	}
	
	// 获取是否开启汇总单、简易处理
	function getHosConfig(){
		let postData = {
		  idx: 0,
		  sum: 9999,
			hospitalConfig:{
				hosId: loginUserStore.loginUser.user.currentHospital.id,
				model: "itsm"
			}
		};
		getFetchDataList("simple/data", "hospitalConfig", postData)
		  .then((res) => {
				if(dataInfo.isSummaryNext!=1){
					SummaryData.value = res.list.find(i=>i.key=='itsmSummarySheet')
				}
				HandleData.simpleness = res.list.find(i=>i.key=='itsmSimpleHandle').value
			});
	}
	
  onLoad((option) => {
		let storeData = handlerStore.handler.data
		if(storeData && storeData.type=='rep'){
			solutionId.value = storeData.solutionId
			dataInfo.isSummaryNext = storeData.isSummaryNext
			dataInfo.incidentId = storeData.incidentId;
		}else{
			dataInfo.incidentId = option.incidentId;
			dataInfo.isSummaryNext = option.isSummaryNext == 1;
		}
		getHosConfig()
    getIncidentDetail();
  })
</script>

<style lang="scss" scoped>
.handler{
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  .head{
    height: 88rpx;
    display: flex;
    position: fixed;
    z-index: 99;
    width: 100%;
    background-color: #fff;
    font-size: 30rpx;
    .tab{
      flex: 1;
      display: flex;
      justify-content: center;
      align-items: center;
      border-bottom: 4rpx solid transparent;
      &.active{
        color: $uni-primary;
        border-color: $uni-primary;
      }
    }
  }
  .body{
    margin-top: 88rpx;
    box-sizing: border-box;
    flex: 1;
    min-height: 0;
    &.bg{
      background-color: #F7F7F7;
    }
    .summaryItem{
      &:first-of-type{
        .summaryItem_head{
          border-bottom: 1rpx solid #DDDDDD;
        }
      }
      .summary_total{
        padding: 20rpx 0;
        display: flex;
        justify-content: center;
        align-items: center;
      }
      .summaryItem_head{
        padding: 24rpx;
        font-size: 26rpx;
        color: #3A3A3A;
      }
      .summaryItem_body{
        font-size: 30rpx;
        background-color: #fff;
        .summaryItem_bodyItem{
          padding: 24rpx;
          border-bottom: 1rpx solid #DDDDDD;
          .summaryItem_bodyItem_top{
            display: flex;
            justify-content: space-between;
            align-items: center;
            .value{
              padding-left: 48rpx;
              flex-shrink: 0;
            }
          }
          .summaryItem_bodyItem_bottom{
            margin-top: 24rpx;
            display: flex;
            justify-content: space-between;
            align-items: center;
            .name{
              text-align: right;
              flex: 1;
            }
            .value{
              width: 240rpx;
              text-align: right;
              padding-left: 48rpx;
              flex-shrink: 0;
            }
          }
        }
      }
      .summaryItem_foot{
        font-size: 30rpx;
        background-color: #fff;
        &.total{
          margin-top: 24rpx;
        }
        .summaryItem_foot_total{
          padding: 24rpx 0;
          display: flex;
          justify-content: center;
          align-items: center;
        }
        .summaryItem_foot_add{
          border-top: 1rpx solid #DDDDDD;
          padding: 24rpx 0;
          display: flex;
          justify-content: center;
          align-items: center;
          .newicon-icon-test{
            font-size: 30rpx;
            font-weight: bold;
          }
        }
      }
    }
    .form_item_column{
      padding-top: 24rpx;
      min-height: 86rpx;
      .form_item{
        padding-top: 0;
        min-height: auto;
      }
    }
    .form_item{
      display: flex;
      align-items: center;
      padding-top: 24rpx;
      min-height: 86rpx;
      &.column{
        height: auto;
        flex-direction: column;
        align-items: flex-start;
				.import-rep{
					padding: 5rpx 10rpx;
					border-radius: 50rpx;
					background: #d1fcd5;
					color: #49b856;
					font-size: 24rpx;
				}
        .title{
          margin-right: 0;
        }
				.title-width{
					width: 100%;
				}
				.title-fl-sb{
					display: flex;
					justify-content: space-between;
					width: 100%;
				}
        .value{
          margin-top: 10rpx;
          padding-left: 20rpx;
          box-sizing: border-box;
        }
        .tips{
          padding: 24rpx;
          text-align: center;
          font-size: 22rpx;
          color: #909399;
          width: 100%;
          box-sizing: border-box;
        }
      }
      .title{
        font-size: 26rpx;
        display: flex;
        align-items: center;
        margin-right: 12rpx;
        flex-shrink: 0;
        &.select{
          width: calc(5em + 20rpx);
        }
      }
      .value{
        width: 100%;
        &.category{
          width: 100%;
          display: flex;
          justify-content: space-between;
          align-items: center;
          .categoryName{
            font-size: 26rpx;
            color: #555;
            flex: 1;
          }
          .newicon-weibiaoti2010104{
            color: $uni-primary;
            margin-left: 24rpx;
          }
        }
        .imgTips{
          color: #909399;
          font-size: 22rpx;
        }
      }
      .synergeticNames{
        font-size: 26rpx;
        margin-right: 24rpx;
      }
      .synergeticAdd{
        flex-shrink: 0;
      }
    }
  }
}
</style>
