<template>
  <div>
    <!-- 基础数据校验 -->
    <p-card title="基础数据校验">
      <!-- <p-grid-form :label-col="{ span: 8 }" :span="8" :items="config.items" @submit="hanlderSubmit" /> -->
      <p-table
        ref="table"
        row-key="id"
        bordered
        :doneBefore="doneBefore"
        :columns="config.columns"
        :remoteUrl="config.remoteUrl"
        :remoteParams="remoteParams"
        :remoteBefore="remoteBefore"
        :rowSelectType="false"
        :data-source="data"
      >
        <template slot="operation" slot-scope="text, record">
          <!-- {{ text ? '禁用' : '启用' }} -->
          <a @click="showmodel(text)">策略管理</a>
          <a-divider type="vertical" />
          <a v-if="!text.isAvailable" @click="del(text)">删除</a>
          <span v-else>删除</span>
        </template>
      </p-table>
    </p-card>
  </div>
</template>

<script>
import config from './config.js'
import { diffOption } from '@/views/kzyWMS/utils/index.js'

import { add, deletes, update, CredelContainer, CreateTaks } from './api'
export default {
  data() {
    return {
      config: config(this),
      data: [],
      type: true,
      remoteParams: {
        areaNoList: [],
      },

      visible: false,
      visibleErrinfo: false,
      visibleContainerOn: false,
      visibleinitiatorTask: false,
      errinfo: {},
      confirmLoading: false,
    }
  },
  mounted() {
    // this.getinfo()
  },
  created() {
    diffOption(this.config.columns).then((res) => {
      this.config.columns = res
    })
  },
  methods: {
    remoteBefore(vNode, remoteUrl) {
      console.log(remoteUrl)
      //   remoteUrl.data = []
      return remoteUrl
    },
    hanlderSubmitModel(name) {
      this.$refs[name].form.validateFields(async (err, value) => {
        if (!err) {
          console.log(value)
          if (name == 'ContainerOnmodel') {
            let res = await CredelContainer(value)
            console.log(res)
            if (res.success) {
              this.$message.success(res.message)
            } else {
              this.$exception(res)
            }
          } else {
            let res = await CreateTaks(value)
            console.log(res)
            if (res.success) {
              this.$message.success(res.message)
            } else {
              this.$exception(res)
            }
          }
        }
      })
    },
    //容器上下架 弹窗
    ContainerOn() {
      this.visibleContainerOn = true
      this.$nextTick(() => {
        this.$refs.ContainerOnmodel.form.resetFields()
      })
    },
    //发起搬运任务
    initiatorTask() {
      console.log('1111')
      this.visibleinitiatorTask = true
      this.$nextTick(() => {
        this.$refs.initiatorTaskmodel.form.resetFields()
      })
    },

    async showinfo(record) {
      console.log(record)
      let res = await deviceInfo({ deviceNo: record.deviceNo })
      console.log(res)
      if (res.success) {
        this.errinfo = res.data
        this.visibleErrinfo = true
      }
    },
    doneBefore(res) {
      res.data.list.forEach((item) => {
        // item.id = item.deviceNo
      })
      console.log(res)
      return res
    },
    hanlderSubmit(e, form) {
      console.log(arguments)
      e.preventDefault()
      form.validateFields((error, values) => {
        console.log(error, values, 'valuesvaluesvaluesvaluesvalues')
        // this.queryName = values.name
        // this.queryType = values.type
        // this.getlistCompanyByAuthId()
        if (!error) {
          this.remoteParams = { ...this.remoteParams, ...values }
        }
      })
    },
    handleOk(e) {
      this.$refs.model.form.validateFields(async (err, value) => {
        if (!err) {
          console.log(value)
          this.confirmLoading = true
          if (this.type) {
            let res = await update(value)
            console.log(res)
            if (res.success) {
              this.visible = false
              this.$message.success(res.message)
              this.remoteParams = { ...this.remoteParams }
            } else {
              this.$exception(res)
              this.visible = false
            }
          } else {
            let res = await add(value)
            console.log(res)
            if (res.success) {
              this.visible = false
              this.$message.success(res.message)
              this.remoteParams = { ...this.remoteParams }
            } else {
              this.$exception(res)
              this.visible = false
            }
          }

          this.confirmLoading = false
          //
        }
      })
    },
    handleCancel(e) {
      console.log('Clicked cancel button')
      this.visible = false
      this.visibleErrinfo = false
      this.visibleContainerOn = false
      this.visibleinitiatorTask = false
    },
    //点击弹出
    showmodel(data) {
      console.log(data)
      this.visible = true

      if (data) {
        this.config.Modelitems.forEach((item) => {
          if (data.isAvailable) {
            item.disabled = true
            item.name == 'isAvailable' && (item.disabled = false)
          } else {
            item.disabled = false
          }
          // item.name == 'areaType' && (item.disabled = true)
        })
        this.$nextTick(() => {
          this.$refs.model.form.setFieldsValue(data)
        })
        this.type = true
      } else {
        this.config.Modelitems.forEach((item) => {
          item.disabled = false
        })
        this.$nextTick(() => {
          this.$refs.model.form.resetFields()
        })
        this.type = false
      }
    },
    del(text) {
      let that = this
      console.log(text)
      this.$confirm({
        title: '确定是否要删除?',
        content: '',
        async onOk() {
          let res = await deletes({ id: text.id })
          if (res.success) {
            that.$message.success('删除成功')
            that.remoteParams = { ...that.remoteParams }
          } else {
            that.$exception(res)
          }
        },
        onCancel() {},
      })
    },
  },
}
</script>

<style lang="less" scoped>
.errinfo {
  padding: 10px;
  width: 100%;
  height: 200px;
  line-height: 50px;
  font-size: 20px;
  color: #fff;
  font-weight: bolder;
  text-align: center;
  background: rgb(145, 143, 144);
}
</style>
