<template>
  <div class="app-container">
    <div class="box-container">
      <div class="contain-title">企业产品</div>
      <div class="contian-operate" v-if="companyId">
        <el-button type="primary" @click="addProductInfo">发布产品</el-button>
      </div>
    </div>
    <div class="content-container">
      <div class="select-box" v-if="!companyId">
        <p>请选择需要查看的企业</p>
        <el-select
          v-model="selectComp"
          filterable
          remote
          maxlength="50"
          placeholder="搜索企业名称"
          :remote-method="remoteCompName"
          :loading="selectLoading"
          suffix-icon="el-icon-search"
          @change="compChanged">
          <el-option
            v-for="item in compOptions"
            :key="item.value"
            :label="item.label"
            :value="item.value">
          </el-option>
        </el-select>
      </div>
      <div v-else>
        <div class="lit-tit">{{companyName}}</div>
        <el-table
          :data="tableData"
          height="600"
          v-loading="tableLoading"
          border ref="tableEle">
          <el-table-column
            v-for="item in tableItem"
            :key="item.index"
            :prop="item.prop ? item.prop : ''"
            :label="item.tit ? item.tit : ''"
            :width="item.width ? item.width : ''"
            align="center">
            <template slot-scope="scope">
              <div v-if="scope.row[item.prop]">
                <el-button type="text" v-if="item.link"><a :href="queryDetailShow(scope.row.id)" target="_blank">{{scope.row[item.prop]}}</a></el-button>
                <span v-else>{{scope.row[item.prop]}}</span>
              </div>
              <div class="operate-row" v-if="item.operate && typeof scope.row === 'object'">
                <el-button
                  size="medium"
                  type="primary"
                  @click="handelEdit(scope.row)">修改</el-button>
                <el-button
                  size="medium"
                  type="danger"
                  @click="handelDel(scope.row.id)">删除</el-button>
              </div>
            </template>
          </el-table-column>
        </el-table>
        <div class="pagination-container">
          <el-pagination
            background
            @current-change="handleCurrentChange"
            :current-page.sync="pageNo"
            :page-size="pageSize"
            layout="prev, pager, next, jumper"
            :total="total"
            v-if="total!==0">
          </el-pagination>
        </div>
      </div>
    </div>
  </div>
</template>

<script>
import {
  queryCompanyOne,
  queryCompName,
  pageProduct,
  delProduct
} from '@/api/companyCen'
import { urlParse, parseTime, xtUrl } from '@/utils'
import comTable from '@/utils/comTable'
export default {
  data() {
    return {
      companyId: '',
      companyName: '',
      selectComp: '',
      compOptions: [],
      selectLoading: false,
      pageSize: 10,
      pageNo: 1,
      total: 0,
      tableData: [],
      tableLoading: true,
      tableItem: [
        {
          prop: 'name',
          tit: '产品名称',
          link: true
        },
        {
          prop: 'spec',
          tit: '厂商型号'
        },
        {
          prop: 'createTime',
          tit: '创建时间',
          width: '160'
        },
        {
          operate: true,
          width: '200'
        }
      ]
    }
  },
  created() {
    this.pageNo = sessionStorage.getItem('p-page') || 1
    if (urlParse('cid')) {
      this.companyId = urlParse('cid')
      this.getCompanyInfo()
      this.pageQuery()
    }
  },
  methods: {
    getCompanyInfo() {
      var that = this
      that.$http.get(queryCompanyOne, {
        id: that.companyId
      }, function(res) {
        if (res.success) {
          that.companyName = res.data.name
        }
      })
    },
    pageQuery() {
      var that = this
      this.$http.get(pageProduct, {
        companyId: that.companyId,
        pageSize: that.pageSize,
        pageNo: that.pageNo
      }, function(res) {
        that.tableLoading = false
        if (res.success && res.data) {
          const obj = res.data.data
          if (obj.length > 0) {
            for (let i = 0; i < obj.length; ++i) {
              if (obj[i].createTime) {
                obj[i].createTime = parseTime(obj[i].createTime)
              }
            }
            that.total = res.data.total
            that.tableData = obj
            comTable.gapFilling(that.tableData)
          } else {
            that.pageNo = 1
            that.total = 0
            that.tableData = []
          }
        } else {
          that.pageNo = 1
          that.total = 0
          that.tableData = []
        }
      })
    },
    addProductInfo() {
      this.$router.push({
        name: 'productInfo',
        query: { cid: this.companyId }
      })
    },
    handelEdit(row) {
      this.$router.push({
        name: 'productInfo',
        query: { id: row.id, cid: row.companyId }
      })
    },
    handelDel(id) {
      var that = this
      that.$confirm(`确认删除该产品？`, '提示信息', {
        type: 'warning',
        center: true
      }).then(() => {
        that.$http.post(delProduct, {
          id: id
        }, function(res) {
          if (res.success) {
            if (res.data) {
              that.pageNo = 1
              that.total = 0
              that.tableData = []
              this.pageQuery()
            } else {
              that.$message({
                type: 'warning',
                message: '该产品删除失败，请重试'
              })
            }
          }
        })
      })
    },
    remoteCompName(query) {
      var that = this
      if (query !== '') {
        that.selectLoading = true
        that.$http.get(queryCompName, {
          name: query,
          size: 5
        }, function(res) {
          that.selectLoading = false
          if (res.success && res.data) {
            const obj = res.data
            that.compOptions = obj.map(item => {
              return { value: item.id, label: item.name }
            })
          } else {
            that.compOptions = []
          }
        })
      } else {
        that.compOptions = []
      }
    },
    compChanged(val) {
      this.$router.push({
        name: 'compProduct',
        query: { cid: val }
      })
    },
    handleCurrentChange(val) {
      this.$refs.tableEle.bodyWrapper.scrollTop = 0
      this.pageNo = val
      sessionStorage.setItem('p-page', this.pageNo)
      this.pageQuery()
    },
    queryDetailShow(id) {
      return xtUrl + '/product.html?id=' + id
    }
  }
}
</script>

<style rel="stylesheet/scss" lang="scss">
  .select-box{
    width:350px;
    margin: 15% auto 22%;
    p{
      font-size: 20px;
      font-weight: bold;
      line-height: 40px;
      text-align: center;
    }
  }
  .lit-tit{
    font-size: 17px;
    line-height: 30px;
    margin-bottom: 10px;
  }
</style>
