<template>
  <a-card :bordered="false" v-show="visible" class="card" :title="modalTitle">
    <a-row :gutter="48" slot="extra">
      <a-col :md="48" :sm="48">
        <span class="table-page-search-submitButtons" style="float: right">
          <a-button type="error" @click="updateSbInfoScrapForAudit()">提交审批</a-button>
          <a-button style="margin-left: 8px" type="primary" @click="save()">保存</a-button>
          <a-button style="margin-left: 8px" @click="handleCancel()">返回</a-button>
        </span>
      </a-col>
    </a-row>

    <title-divider title="型号信息" width="90px"></title-divider>
    <a-form :form="form">
      <a-form-item v-show="false" >
        <a-input v-decorator="['id']" type="hidden"/>
        <a-input v-decorator="['modelId']" type="hidden"/>
        <a-input v-decorator="['typeId']" type="hidden"/>
        <a-input v-decorator="['producerId']" type="hidden"/>
        <a-input v-decorator="['level']" type="hidden"/>
        <a-input v-decorator="['useType']" type="hidden"/>
        <a-input v-decorator="['parentId']" type="hidden"/>
      </a-form-item>

      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备类型"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              disabled
              v-decorator="['typeName']" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备型号"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              disabled
              v-decorator="['model']" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="生产商"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              disabled
              v-decorator="['producerName']" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备名称"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              disabled
              v-decorator="['name']" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="自定义类型"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"

          >
            <a-input
              disabled
              v-decorator="['useTypeName']" />
          </a-form-item>
        </a-col>

      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="计量单位"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              disabled
              v-decorator="['unit']" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备等级"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"

          >
            <a-input
              disabled
              v-decorator="['levelName']" />
          </a-form-item>
        </a-col>
      </a-row>
      <title-divider title="基本信息" width="90px"></title-divider>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备新号"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              disabled
              v-decorator="['no', {rules: [{required: false, message: '设备编号不能为空'}]}]" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备旧号"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              disabled
              v-decorator="['zbh']" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备原值"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"

          >
            <a-input-number
              style="width: 100%"
              :min="0"
              :step="0.01"
              :formatter="BaseTool.Amount.formatter"
              :parser="BaseTool.Amount.parser"
              v-decorator="['initialValue', {rules: [{required: true, message: '设备原值不能为空'}]}]" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="设备残值"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"

          >
            <a-input-number
              style="width: 100%"
              :min="0"
              :step="0.01"
              :formatter="BaseTool.Amount.formatter"
              :parser="BaseTool.Amount.parser"
              v-decorator="['currentValue', {rules: [{required: true, message: '设备残值不能为空'}]}]" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="净残值率"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              :min="0"
              :step="0.01"
              :formatter="BaseTool.Amount.formatter"
              :parser="BaseTool.Amount.parser"
              v-decorator="['rate']" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="折旧总计月份"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              :min="0"
              :step="1"
              :formatter="BaseTool.Amount.formatter"
              :parser="BaseTool.Amount.parser"
              v-decorator="['month']" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="已计提月份"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              :min="0"
              :step="1"
              :formatter="BaseTool.Amount.formatter"
              :parser="BaseTool.Amount.parser"
              v-decorator="['usedMonth']" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="状态"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-select v-decorator="['status', {rules: [{required: true, message: '状态不能为空'}]}]" placeholder="请选择">
              <a-select-option
                v-for="(label,value) in statusMap"
                :key="value"
                :label="label"
                :value="parseInt(value)">{{ label }}
              </a-select-option>
            </a-select>
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="助记码"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['zjm']" />
          </a-form-item>
        </a-col>
      </a-row>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="资产现状说明"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-input
              v-decorator="['remark', {rules: [{required: false, message: '资产现状说明不能为空'}]}]" />
          </a-form-item>
        </a-col>
      </a-row>
      <title-divider title="日期信息" width="90px"></title-divider>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="购置日期"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-date-picker
              style="width: 100%"
              :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
              v-decorator="['buyDate', {rules: [{required: true, message: '购置日期不能为空'}]}]" />
          </a-form-item>
        </a-col>
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="投用日期"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-date-picker
              style="width: 100%"
              :format="BaseTool.Date.PICKER_NORM_DATE_PATTERN"
              v-decorator="['startDate', {rules: [{required: true, message: '投用日期不能为空'}]}]" />
          </a-form-item>
        </a-col>
      </a-row>
      <title-divider title="文件信息" width="90px"></title-divider>
      <a-row class="form-row" :gutter="BaseTool.Constant.row.gutter">
        <a-col :lg="12" :md="24" :sm="24">
          <a-form-item
            label="资产图片"
            :labelCol="BaseTool.Constant.labelCol"
            :wrapperCol="BaseTool.Constant.wrapperCol"
          >
            <a-upload
              :action="uploadUrl"
              list-type="picture"
              :multiple="true"
              :file-list="this.defaultSbFileList"
              @change="handleSbFileChange"
              accept="image/*"
              :headers="headers"
            >
              <a-button> <a-icon type="upload" /> 选择上传文件 </a-button>
            </a-upload>
          </a-form-item>
        </a-col>
      </a-row>
    </a-form>
    <sb-model-select-modal ref="sbModelSelectModal" @selected="handleSbModelSelected"/>
    <sb-info-select-modal ref="sbInfoSelectModal" @selected="handleSbSelectd"/>
  </a-card>
</template>

<script>
import pick from 'lodash.pick'
import { updateSbInfoScrap, updateSbInfoScrapForAudit } from '@/api/sb/info'
import { fetchSbTypeTree } from '@/api/sb/type'
import FirmProducerSelectModal from '@/views/firm/producer/modules/FirmProducerSelectModal'
import SbGuigeSelectModal from '@/views/sb/guige/modules/SbGuigeSelectModal'
import SbModelSelectModal from '@/views/sb/model/modules/SbModelSelectModal'
import BaseTool from '../../../../utils/tool'
import { queryUserDeptByUserDeptId } from '@/api/upms/user-dept'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import Vue from 'vue'
import { uploadUrl } from '@/api/upms/file'
import { queryDept, getDeptsAllByParentId } from '@/api/upms/dept'
import SbInfoSelectModal from '@/views/sb/info/modules/SbInfoSelectModal'

export default {
  name: 'BaseSbInfo',
  components: {
    FirmProducerSelectModal,
    SbGuigeSelectModal,
    SbModelSelectModal,
    SbInfoSelectModal
  },
  data () {
    return {
      confirmLoading: false,
      modalTitle: null,
      form: this.$form.createForm(this),

      areaList: {},
      companyList: {},
      projectList: {},
      deptList: {},
      groupList: {},
      visible: false,

      sbTypeTreeData: [],
      // sbInfoTreeData: [],
      // sourceSbInfoTreeData: [],
      // sbPositionTreeData: [],
      depreciationTypeMap: {},
      sourceTypeMap: {},
      levelMap: {},
      rlTypeMap: {},
      colorMap: {},
      useTypeMap: {},
      statusMap: {},
      userList: {},
      unitMap: {},
      sbInfoSelectType: null,
      repairFileList: [], // 维修手册
      defaultRepairFileList: [],
      defaultUseFileList: [],
      defaultRecheckFileList: [],
      defaultSbFileList: [],
      useFileList: [], // 使用手册
      recheckFileList: [], // 验收手册
      sbFileList: [], // 设备图片,
      uploadUrl: uploadUrl,
      qrcodesrc: null,
      fileList: [],
      headers: {
        Authorization: 'Bearer ' + Vue.ls.get(ACCESS_TOKEN)
      }
    }
  },
  props: {
  },
  created () {
    this.depreciationTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_DEPRECIATIONTYPE)
    this.levelMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_LEVEL)
    this.colorMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_COLOR)
    this.rlTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.RANLIAO_TYPE)
    this.statusMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_INFO_STATUS)
    this.unitMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBINFO_UNIT)
    this.sourceTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SBTYPE_SOURCETYPE)
    this.useTypeMap = this.DictCache.getLabelByValueMapByType(this.DictCache.TYPE.SB_USE_TYPE)
  },
  methods: {
    base (record) {
      this.setTree(record)
      // 清除文件列表
      this.visible = true
      // 选择框查询条件
      // 如果是空标识添加
      if (this.BaseTool.Object.isBlank(record)) {
        this.qrcodesrc = null
        this.modalTitle = '添加'
        this.clearFileList()
        return
      }
      this.modalTitle = '设备报废'
      this.qrcodesrc = record.qrCode
      this.repairFileList = record.repairFileList
      this.defaultRepairFileList = this.BaseTool.UPLOAD.transImg(this.repairFileList)
      this.useFileList = record.useFileList
      this.recheckFileList = record.recheckFileList
      this.sbFileList = record.sbFileList
      this.defaultUseFileList = this.BaseTool.UPLOAD.transImg(this.useFileList)
      this.defaultRecheckFileList = this.BaseTool.UPLOAD.transImg(this.recheckFileList)
      this.defaultSbFileList = this.BaseTool.UPLOAD.transImg(this.sbFileList)

      // if (this.BaseTool.Object.isBlank(record.id)) {
      // this.modalTitle = '复制'
      // this.qrcodesrc = null
      // record.no = null
      // this.clearFileList()
      // }
      const { form: { setFieldsValue } } = this
      // 日期处理
      record.buyDate = this.BaseTool.Moment(record.buyDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      record.startDate = this.BaseTool.Moment(record.startDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      record.nextCheckDate = this.BaseTool.Moment(record.nextCheckDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      record.guaranteeDate = this.BaseTool.Moment(record.guaranteeDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      record.retirementDate = this.BaseTool.Moment(record.retirementDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)

      if (record.isChild === 1) {
        record.isChild = this.DictCache.VALUE.SB_IS_CHILD.IS_CHILD
      }
      if (record.isChild === 2) {
        record.isChild = this.DictCache.VALUE.SB_IS_CHILD.IS_PARENT
      }
      if (record.isChild === 3) {
        record.isChild = this.DictCache.VALUE.SB_IS_CHILD.IS_NORMAL
      }
      // record.lastRepaireTime = this.BaseTool.Moment(record.lastRepaireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      // record.lastBaoyangTime = this.BaseTool.Moment(record.lastBaoyangTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
      if (record.jbdDate != null) {
        record.jbdDate = this.BaseTool.Moment(record.jbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'jbdDate'
          ])))
        })
      }
      if (record.sbdDate != null) {
        record.sbdDate = this.BaseTool.Moment(record.sbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'sbdDate'
          ])))
        })
      }
      if (record.sbDate != null) {
        record.sbDate = this.BaseTool.Moment(record.sbDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'sbDate'
          ])))
        })
      }
      if (record.spDate != null) {
        record.spDate = this.BaseTool.Moment(record.spDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        this.$nextTick(() => {
          setFieldsValue(Object.assign(pick(record, [
            'spDate'
          ])))
        })
      }
      record.unitName = this.BaseTool.Object.getField(this.unitMap, record.unit)
      record.levelName = this.BaseTool.Object.getField(this.levelMap, record.level)
      record.useTypeName = this.BaseTool.Object.getField(this.useTypeMap, record.useType)

      this.$nextTick(() => {
        setFieldsValue(Object.assign(pick(record, [
          'id',
          'no',
          'parentId',
          'parentSbName',
          'isChild',
          'isShow',
          'cardNo',
          'financingNo',
          'name',
          'model',
          'positionId',
          'nameModel',
          'rate',
          'month',
          'usedMonth',
          'producerName',
          'useArea',
          'useCompany',
          'useProject',
          'useDept',
          'saveUser',
          'useGroup',
          'modelId',
          'typeId',
          'typeName',
          'level',
          'levelName',
          'unitName',
          'useTypeName',
          'initialValue',
          'currentValue',
          // 'cutValue',
          'producerId',
          // 'sourceType',
          'unit',
          'totalMiles',
          'totalHours',

          'buyDate',
          'startDate',

          // 'wbFile',
          // 'useFile',
          // 'checkFile',
          // 'sbImage',
          'status',
          'remark',
          'zzh',
          'fdjxh',
          'fdjh',
          'cph',
          'dph',
          'zz',
          'rlType',
          'color',
          'seatNumber',
          'zjm',
          'jbdh',
          'sbdh',
          'bxgs',
          'useType'

        ])))
      })
    },
    save () {
      const { form: { validateFieldsAndScroll } } = this
      this.confirmLoading = true
      validateFieldsAndScroll((errors, values) => {
        if (errors) {
          this.confirmLoading = false
          return
        }
        // 日期数据的处理
        values.buyDate = BaseTool.Date.formatter(values.buyDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.startDate = BaseTool.Date.formatter(values.startDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.nextCheckDate = BaseTool.Date.formatter(values.nextCheckDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.guaranteeDate = BaseTool.Date.formatter(values.guaranteeDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.retirementDate = BaseTool.Date.formatter(values.retirementDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)

        values.lastRepaireTime = this.BaseTool.Date.formatter(values.lastRepaireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.lastBaoyangTime = this.BaseTool.Date.formatter(values.lastBaoyangTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.spDate = this.BaseTool.Date.formatter(values.spDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.jbdDate = this.BaseTool.Date.formatter(values.jbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.sbdDate = this.BaseTool.Date.formatter(values.sbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.sbDate = this.BaseTool.Date.formatter(values.sbDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)

        // 上传文件
        values.repairFileList = this.repairFileList
        values.useFileList = this.useFileList
        values.recheckFileList = this.recheckFileList
        values.sbFileList = this.sbFileList
        values.level = this.level
        values.useType = this.useType
        values.unit = this.unit
        updateSbInfoScrap(values)
          .then(() => {
            this.handleCancel(values)
          }).catch(() => {
            this.confirmLoading = false
          })
      })
    },
    updateSbInfoScrapForAudit () {
      const { form: { validateFieldsAndScroll } } = this
      this.confirmLoading = true
      validateFieldsAndScroll((errors, values) => {
        if (errors) {
          this.confirmLoading = false
          return
        }
        // 日期数据的处理
        values.buyDate = BaseTool.Date.formatter(values.buyDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.startDate = BaseTool.Date.formatter(values.startDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.nextCheckDate = BaseTool.Date.formatter(values.nextCheckDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.guaranteeDate = BaseTool.Date.formatter(values.guaranteeDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.retirementDate = BaseTool.Date.formatter(values.retirementDate, BaseTool.Date.PICKER_NORM_DATE_PATTERN)

        values.lastRepaireTime = this.BaseTool.Date.formatter(values.lastRepaireTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.lastBaoyangTime = this.BaseTool.Date.formatter(values.lastBaoyangTime, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.spDate = this.BaseTool.Date.formatter(values.spDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.jbdDate = this.BaseTool.Date.formatter(values.jbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.sbdDate = this.BaseTool.Date.formatter(values.sbdDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)
        values.sbDate = this.BaseTool.Date.formatter(values.sbDate, this.BaseTool.Date.PICKER_NORM_DATE_PATTERN)

        // 上传文件
        values.repairFileList = this.repairFileList
        values.useFileList = this.useFileList
        values.recheckFileList = this.recheckFileList
        values.sbFileList = this.sbFileList
        values.level = this.level
        values.useType = this.useType
        values.unit = this.unit
        updateSbInfoScrapForAudit(values)
          .then(() => {
            this.handleCancel(values)
          }).catch(() => {
            this.confirmLoading = false
          })
      })
    },
    getQrcodeSrc () {
      console.log(111, 22)
    },
    handleCancel () {
      this.visible = false
      this.confirmLoading = false
      this.form.resetFields()
      this.$emit('ok')
    },
    setTree (record = {}) {
      fetchSbTypeTree().then(res => {
        this.sbTypeTreeData = res.data
      })
      // getSbInfoTree({ id: record.id }).then(res => {
      //  this.sbInfoTreeData = res.data
      //  this.sourceSbInfoTreeData = res.data
      // })
      // getSbPositionTree().then(res => {
      //  this.sbPositionTreeData = res.data
      // })
      queryDept({ nature: this.DictCache.VALUE.SYS_DEPT_NATURE.JITUAN }).then(res => {
        this.areaList = res.data
      })

      if (record.useArea != null) {
        getDeptsAllByParentId({ deptId: record.useArea, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.FEN_GONG_SI }).then(res => {
          this.companyList = res.data
        })
        getDeptsAllByParentId({ deptId: record.useCompany, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.XIANG_MU_BU }).then(res => {
          this.projectList = res.data
        })
        getDeptsAllByParentId({ deptId: record.useProject, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BU_MEN }).then(res => {
          this.deptList = res.data
        })
        getDeptsAllByParentId({ deptId: record.useDept, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BAN_ZU }).then(res => {
          this.groupList = res.data
        })
        queryUserDeptByUserDeptId({ deptId: record.useGroup }).then(res => {
          this.userList = res.data
        })
      }
    },
    handleSbModelSelect () {
      const modal = this.$refs.sbModelSelectModal
      modal.base()
    },
    handleSbModelSelected (keys, rows) {
      const [ key ] = keys
      const [ row ] = rows
      const { form: { setFieldsValue } } = this

      this.$nextTick(() => {
        setFieldsValue({
          'modelId': key,
          'name': row.name,
          'model': row.model,
          'nameModel': row.nameModel,
          'typeId': row.typeId,
          'typeName': row.typeName,
          'level': row.level,
          'levelName': this.BaseTool.Object.getField(this.levelMap, row.level),
          'initialValue': row.value,
          'useType': row.useType,
          'useTypeName': this.BaseTool.Object.getField(this.useTypeMap, row.useType),
          'producerId': row.producerId,
          'producerName': row.producerName,
          'unit': row.unit,
          'unitName': this.BaseTool.Object.getField(this.unitMap, row.unit)
        })
      })
    },

    beforeRecheckFileListUpload (file) {
      const reg = /\.(xls|xlsx)(\?.*)?$/
      return new Promise((resolve, reject) => {
        if (reg.test(file.name)) {
          this.recheckFileList = [file]
          return true
        } else {
          this.$message.error(`请上传正确的xls|xlsx文件`)
          reject(new Error('请上传正确的xls|xlsx文件'))
          return false
        }
      })
    },
    beforeUploadPic (file) {
      const reg = /\.(jpg|jpeg|png)(\?.*)?$/
      return new Promise((resolve, reject) => {
        if (reg.test(file.name)) {
          this.sbFileList = [file]
          return true
        } else {
          this.$message.error(`请上传正确的jpg|jpeg|png文件`)
          reject(new Error('请上传正确的jpg|jpeg|png文件'))
          return false
        }
      })
    },
    clearFileList () {
      this.repairFileList = []
      this.useFileList = []
      this.recheckFileList = []
      this.sbFileList = []
    },
    handleRepairFileChange (info) {
      this.defaultRepairFileList = info.fileList
      this.repairFileList = this.setFileList(info, 1)
    },
    handleUseFileChange (info) {
      this.defaultUseFileList = info.fileList
      this.useFileList = this.setFileList(info, 2)
    },
    handleAreaChange (value) {
      getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.FEN_GONG_SI }).then(res => {
        this.companyList = res.data
      })
    },
    handleCompanyChange (value) {
      getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.XIANG_MU_BU }).then(res => {
        this.projectList = res.data
      })
    },
    handleProjectChange (value) {
      getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BU_MEN }).then(res => {
        this.deptList = res.data
      })
    },
    handleDeptChange (value) {
      getDeptsAllByParentId({ deptId: value, nature: this.DictCache.VALUE.SYS_DEPT_NATURE.BAN_ZU }).then(res => {
        this.groupList = res.data
      })
    },
    handleGroupChange (value) {
      queryUserDeptByUserDeptId({ deptId: value }).then(res => {
        this.userList = res.data
      })
    },
    handleRecheckFileChange (info) {
      this.defaultRecheckFileList = info.fileList
      this.recheckFileList = this.setFileList(info, 3)
    },
    handleSbFileChange (info) {
      this.defaultSbFileList = info.fileList
      this.sbFileList = this.setFileList(info, 4)
    },
    setFileList1 (info, type) {
      const fileList = [...info.fileList]
      const file = [...info.file]
      if (file.status === 'done') {
        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
      } else if (file.status === 'removed') {
        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
      } else if (file.status === 'error') {
        this.$message.error('上传失败')
        return []
      }
    },
    handleSbSelect () {
      this.$refs.sbInfoSelectModal.base({}, { isChild: this.DictCache.VALUE.SB_IS_CHILD.IS_PARENT })
    },
    handleSbSelectd (keys, rows) {
      const [ key ] = keys
      const [ row ] = rows
      const { form: { setFieldsValue } } = this
      // 日期处理
      this.$nextTick(() => {
        setFieldsValue(Object.assign({
          'parentId': key,
          'parentSbName': row.name,
          'isChild': this.DictCache.VALUE.SB_IS_CHILD.IS_CHILD
        }))
      })
    },
    setFileList (info, type) {
      // { file, fileList }

      const file = info.file
      const fileList = info.fileList
      // fileList = fileList.slice(-2)
      // console.log(111, this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type))

      if (file.status === 'done') {
        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
      } else if (file.status === 'removed') {
        return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)
      } else if (file.status === 'error') {
        this.$message.error('上传失败')
        return null
      }

      // return this.BaseTool.UPLOAD.getUploadFileDTO(fileList, type)

      // 1. Limit the number of uploaded files
      //    Only to show two recent uploaded files, and old ones will be replaced by the new
      // fileList = fileList.slice(-2)

      // 2. read from response and show file link
      // fileList = fileList.map(file => {
      //   if (file.response) {
      //     // Component will show file.url as link
      //     const { response: { data } } = file
      //     file.url = data.url
      //     file.fileName = data.fileName
      //     file.fileFormat = data.fileFormat
      //     file.name = data.name
      //     file.type = type
      //   }
      //   return file
      // })
      // console.log(6666, fileList)
      // return fileList
    }
  }
}
</script>
