<template>
  <div>
    <el-table v-loading="codeLoading" :data="codeDetailList" style="width: 100%" :row-style="{height:'32px'}" border>
      <template v-for="(item, index) in tableHeader2">
        <el-table-column
          v-if="item.columnType == 'id' && executeEval(row,item.expression,true)"
          type="index" :label="item.columnDesc"></el-table-column>
        <el-table-column
          v-if="item.columnType == 'selection'"
          type="selection"
          :width="item.width"
          :selectable="(row,number) => executeFuc(row,'3',item.clickFuc)"
        ></el-table-column>

        <el-table-column
          v-if="item.columnType == 'radio' && executeEval(row,item.expression,true)"
          :prop="item.columnName"
          :label="item.columnDesc"
          :sortable="item.sort"
          :width="item.width"
          :show-overflow-tooltip="item.tooltip"
          :key="item.columnName"
        >
          <template slot-scope="scope">
            <el-radio :label="scope.row.id" v-model="radioCheck"><span></span></el-radio>
          </template>
        </el-table-column>
        <el-table-column
          v-if="item.columnType == 'laber' && executeEval(row,item.expression,true)"
          :prop="item.columnName"
          :label="item.columnDesc"
          :sortable="item.sort"
          :width="item.width"
          :show-overflow-tooltip="item.tooltip"
          :key="item.columnName"
        >
          <template slot-scope="scope">
                <span :style="{color: executeFuc(scope.row,'4',item.lableRuleObj[scope.row[item.columnName]])}">{{
                    item.lableRuleObj[scope.row[item.columnName]]
                  }}</span>
          </template>
        </el-table-column>
        <el-table-column
          v-if="item.columnType == 'eltag' && executeEval(row,item.expression,true)"
          :prop="item.columnName"
          :label="item.columnDesc"
          :sortable="item.sort"
          :width="item.width"
          :show-overflow-tooltip="item.tooltip"
          :key="item.columnName"
        >
          <template slot-scope="scope">
            <el-tag
              :type="executeFuc(scope.row,'4',item,item.lableRuleObj?item.lableRuleObj[scope.row[item.columnName]]:scope.row[item.columnName])">
                  <span>{{
                      item.lableRuleObj ? item.lableRuleObj[scope.row[item.columnName]] : scope.row[item.columnName]
                    }}</span>
            </el-tag>
          </template>
        </el-table-column>
        <el-table-column
          v-if="item.columnType == 'button' && executeEval(row,item.expression,true)"
          :prop="item.columnName"
          :label="item.columnDesc"
          :width="item.width"
          :key="item.columnName"
          fixed="right"
        >
          <template slot-scope="scope">
            <el-button v-for="(buttonItem, buttonIndex) in item.buttonRulObj"
                       :type="buttonItem.type"
                       :size="buttonItem.size"
                       :style="buttonItem.style"
                       :key="buttonItem"
                       v-if="executeEval(scope.row,buttonItem.hasPermi,true)"
                       :disabled="executeEval(scope.row,buttonItem.disabledFuc,false)"
                       @click.native.stop="executeFuc(scope.row,'1',buttonItem.clickFuc)"
            >{{ buttonItem.name }}
            </el-button>
          </template>
        </el-table-column>
        <el-table-column
          v-if="item.columnType == 'text'  && !(item.columnName == 'productDate' || item.columnName == 'expireDate') && executeEval(row,item.expression,true)"
          :prop="item.columnName"
          :label="item.columnDesc"
          :sortable="item.sort"
          :width="item.width"
          :show-overflow-tooltip="item.tooltip"
          :key="item.columnName"
        >
          <template slot-scope="scope">
                <span :style="{color: executeFuc(scope.row,'4',item,scope.row[item.columnName])}">{{
                    scope.row[item.columnName]
                  }}</span>
          </template>
        </el-table-column>
        <el-table-column
          v-if="item.columnType == 'text' && (item.columnName == 'productDate' || item.columnName == 'expireDate') && executeEval(row,item.expression,true)"
          :prop="item.columnName"
          :label="item.columnDesc"
          :sortable="item.sort"
          :width="item.width"
          :show-overflow-tooltip="item.tooltip"
          :key="item.columnName"
        >
          <template slot-scope="scope">
                <span :style="{color: executeFuc(scope.row,'4',item,scope.row[item.columnName])}">{{
                    convertDateFun(scope.row[item.columnName])
                  }}</span>
          </template>
        </el-table-column>
      </template>
    </el-table>
    <pagination
      v-show="codeTotal>0"
      :total="codeTotal"
      :limit.sync="codeQuery.limit"
      :page.sync="codeQuery.page"
      @pagination="getList"
    ></pagination>

  </div>
</template>

<script>
import {convertDate} from "@/utils/date";
import {executeFuc, getHead} from "@/utils/customConfig";
import {autoCodeDetail, autoCodeResult, manualCodeDetail, codeRemove} from "@/api/collect/collectOrder";

export default {

  /**
   * 手动扫码
   */
  name: "PanelOrderManuTagCode",
  props: {
    refreshPanel: {
      type: Function,
      required: true,
    },
    closeScanDialog: {
      type: Function,
      required: true,
    },
    prescribeData: {
      type: Object,
      default: null,
      required: true
    },
    bizId: {
      type: Object,
      default: null,
      required: true
    },
    //上货方式：1:拆零上货；2:整取上货;3：手动扫码查询
    fifoSplit: {
      type: Object,
      default: null,
      required: true
    },
  },
  data() {

    return {
      //界面配置相关
      //赋码明细
      tableHeader2: [],
      queryList2: [],
      tableObj2: [],
      fromList2: [],
      convertDateFun: convertDate,
      //界面配置-------------end

      codeLoading: false,
      codeDetailList: [],
      codeTotal: 0,
      codeQuery: {
        fifoSplit: null,
        page: 1,
        limit: 10,
      },
      splitType: true,
    }
  },
  methods: {
    deleteMan(_this, row) {
      _this.$confirm("是否确定删除该条扫码?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        _this.loading = true;
        _this.codeRemoveMan(row.id, 2);
      })
    },
    deleteCode(_this, row) {
      _this.$confirm("是否确定移除一个条码?", "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      }).then(() => {
        _this.loading = true;
        _this.codeRemoveMan(row.id, 1);
      })
    },
    codeRemoveMan(codeManId, delType) {
      let post = {
        codeManId: codeManId,
        delType: delType
      }
      codeRemove(post).then((response) => {
        if (response.code === 20000) {
          this.$message.success("操作成功！");
          // this.refreshPanel(this)
          this.getList();
          this.closeScanDialog()
        } else {
          this.$message.error(response.message);
        }
        this.loading = false;
      }).catch(() => {
        this.loading = false;
      })
    },
    //界面配置相关------------
    executeFuc(row, type, clickFuc, value) {
      return executeFuc(this, row, type, clickFuc, value);
    },
    executeEval(row, expression, defaultRet) {
      if (expression) {
        return eval(expression);
      }
      return defaultRet;
    },
    handleSortChange(column, prop, order) {
      if (column.order === 'descending') {
        this.query.sort = 'desc'
      } else {
        this.query.sort = 'asc'
      }
      this.query.orderBy = column.prop;
      this.getList();
    },
    ///界面配置相关------------end

    getList() {
      if (this.prescribeData == null)
        return
      if (this.prescribeData != null) {
        // this.codeQuery.page = 1
        this.codeQuery.orderIdFk = this.prescribeData.billNo
        this.codeQuery.bizIdFk = this.bizId
      }
      this.codeLoading = true;
      if (this.fifoSplit == 3) {
        manualCodeDetail(this.codeQuery).then(res => {
          this.codeLoading = false
          if (res.code != 20000) {
            this.$message.error(res.message)
            return
          }
          this.codeDetailList = res.data.list
          this.codeTotal = res.data.total || 0
          this.codeLoading = false
        }).catch(() => {
          this.codeLoading = false
          this.codeTotal = res.data.total || 0
          this.$message.error("数据加载失败")
        })
      } else {
        this.codeQuery.fifoSplit = this.fifoSplit
        autoCodeResult(this.codeQuery).then(res => {
          this.codeLoading = false
          if (res.code != 20000) {
            this.$message.error(res.message)
            return
          }
          this.codeDetailList = res.data.list
          this.codeTotal = res.data.total || 0
          this.codeLoading = false
        }).catch(() => {
          this.codeLoading = false
          this.$message.error("数据加载失败")
        })
      }

    },
    codeHandleCurrentChange(val) {
      this.filterQuery.page = val.page;
      this.getCodeDetail(this, null);
    },
    rowStyle({row, rowIndex}) {
      let rowBackground = {};
      if (row.count != row.scanCount) {
        rowBackground.color = '#f60303';
      }

      rowBackground.height = "32px"
      return rowBackground;
    },

    /**
     * 扫码减一
     */
    removeOneDialog() {
      //todo
    },

    /**
     * 删除条码
     */
    deleteDialog() {
      //todo
    },


  },

  created() {
    if (this.fifoSplit == 2 || this.fifoSplit == 1) {
      this.splitType = false
    }
    if (this.tableHeader2 == null || this.tableHeader2.length == 0) {
      getHead("PanelOrderManuTagCode", "1").then((re) => {
        // 处理返回的数据
        this.tableObj2 = re.data;
        this.tableHeader2 = re.data.tableList;
        this.queryList2 = re.data.queryList;
        this.fromList2 = re.data.fromList;
        this.getList();
      });
    } else {
      this.getList();
    }


  }

}
</script>

<style scoped>

</style>
