<template>
  <div class="app-container">
    <div v-if="show === 1">
      <!-- 筛选条件 -->
      <div>
        <div>
          <el-form
            ref="screenForm"
            :model="screenForm"
            label-width="70px"
            size="mini"
            label-position="left"
          >
            <el-row :gutter="20">
              <el-col :xs="24" :sm="12" :lg="6">
                <el-form-item label="物料编码" prop="materialNumber">
                  <el-input
                    placeholder="请输入物料编码"
                    v-model="screenForm.materialNumber"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :xs="24" :sm="12" :lg="6">
                <el-form-item label="产品名称" prop="materialName">
                  <el-input
                    placeholder="请输入产品名称"
                    v-model="screenForm.materialName"
                  ></el-input>
                </el-form-item>
              </el-col>
              <el-col :xs="24" :sm="12" :lg="6">
                <el-form-item label="产品编码" prop="materialOldNumber">
                  <el-input
                    placeholder="请输入产品编码"
                    v-model="screenForm.materialOldNumber"
                  ></el-input>
                </el-form-item>
              </el-col>
<!--              <el-col :xs="24" :sm="12" :lg="6">-->
<!--                <el-form-item label="生效日期" prop="startDate">-->
<!--                  <el-date-picker-->
<!--                    v-model="screenForm.startDate"-->
<!--                    type="datetime"-->
<!--                    placeholder="请输入生效日期"-->
<!--                    value-format="yyyy-MM-dd HH:mm:ss"-->
<!--                  >-->
<!--                  </el-date-picker>-->
<!--                </el-form-item>-->
<!--              </el-col>-->
<!--              <el-col :xs="24" :sm="12" :lg="6">-->
<!--                <el-form-item label="失效日期" prop="endDate">-->
<!--                  <el-date-picker-->
<!--                    v-model="screenForm.endDate"-->
<!--                    type="datetime"-->
<!--                    placeholder="请输入生效日期"-->
<!--                    value-format="yyyy-MM-dd HH:mm:ss "-->
<!--                  >-->
<!--                  </el-date-picker>-->
<!--                </el-form-item>-->
<!--              </el-col>-->
              <el-col :xs="24" :sm="12" :lg="6">
                <el-form-item label="销售类型" prop="saleTypeId">
                  <el-select
                    v-model="screenForm.saleTypeId"
                    filterable
                    placeholder="选择销售类型"
                    style="width: 100%"
                  >
                    <el-option label="全部" value=""></el-option>
                    <el-option
                      v-for="item in typeList"
                      :key="item.id"
                      :label="item.saleName"
                      :value="item.id"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :xs="24" :sm="12" :lg="6">
                <el-form-item label="产品类别" prop="k3CategoryNumber">
                  <el-select
                  style="width:100%"
                    placeholder="请选择产品类别"
                    v-model="screenForm.k3CategoryNumber"
                  >
                    <el-option label="全部" value=""></el-option>
                    <el-option
                      v-for="item in dictList"
                      :label="item.name"
                      :value="item.number"
                    ></el-option>
                  </el-select>
                </el-form-item>
              </el-col>
              <el-col :xs="24" :sm="12" :lg="6">
                <el-form-item label="规格型号" prop="specification">
                  <el-input
                    placeholder="请输入规格型号"
                    v-model="screenForm.specification"
                  ></el-input>
                </el-form-item>
              </el-col>

              <el-col :xs="24" :sm="24" :lg="24" class="tr">
                <el-form-item label="">
                  <el-button size="mini" @click="resetScreenForm">清空</el-button>
                  <el-button size="mini" type="primary" @click="submitScreenForm"
                  >搜索</el-button
                  >
                </el-form-item>
              </el-col>
            </el-row>
          </el-form>
      </div>
      </div>
      <!-- 按钮 -->
      <div class="btn-group clearfix">
        <div class="fl">
         <el-button type="primary"  v-if="$checkBtnRole('add', $route.meta.roles)"  icon="el-icon-plus" size="mini" @click="addFn">新增</el-button>
          <!-- <el-button type="primary" size="mini">编辑</el-button> -->
          <el-upload
            v-if="$checkBtnRole('add', $route.meta.roles)"
            style="margin-bottom: 10px;"
            class="import-btn"
            :action="baseURL + 'student/import'"
            :http-request="handleImport"
            :file-list="importFileList"
            :show-file-list="false"
            :disabled="importLoading"
            v-loading="importLoading"
          >
            <el-button
              type="primary"
              size="mini"
            >导入调价单
            </el-button>
          </el-upload>
          <el-button
            v-if="$checkBtnRole('add', $route.meta.roles)"
            type="primary"
            size="mini"
            @click="hanleDownloadFiles"
          >下载模板
          </el-button>
          <el-popconfirm
           v-if="$checkBtnRole('del', $route.meta.roles)"
            confirm-button-text="好的"
            cancel-button-text="不用了"
            icon="el-icon-info"
            icon-color="red"
            title="内容确定删除吗？"
            style="margin-right:10px"
            @onConfirm="hanleDeleteAll"
          >
            <el-button
              type="primary"
              size="mini"
                icon="el-icon-delete"
              slot="reference"
              class="el-popover-left"
              >删除</el-button
            >
          </el-popconfirm>
          <el-button size="mini"  type="warning" icon="el-icon-finished" @click="batchExamine"  v-if="$checkBtnRole('examine', $route.meta.roles)">批量审批</el-button>
        </div>
        <div class="fr">
            <ExportButton :exUrl="'/product-upd-price/export'" :exParams="exParams" />
          <!-- <el-button type="primary" size="mini">导入</el-button>
          <el-button type="primary" size="mini">导出</el-button>
          <el-button type="primary" size="mini">打印</el-button> -->
        </div>
      </div>
      <div class="mymain-container">
        <!-- 列表 -->
        <div class="table">
          <el-table
            v-loading="listLoading"
            :data="dataList"
            element-loading-text="Loading"
            border
            fit
            highlight-current-row
            @select-all="hanleSelectAll"
            @select="hanleSelectAll"
            
            :row-class-name="tableRowClassName"
          >
            <el-table-column
              type="selection"
              align="left"
              width="50"
            ></el-table-column>
            <el-table-column
              align="left"
              label="单据号"
              prop="updPriceBillId"
              min-width="200"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <CopyButton :copyText="scope.row.updPriceBillId" />
                <span>{{scope.row.updPriceBillId}}</span>
              </template>
            </el-table-column>

            <el-table-column
              align="left"
              label="销售类型"
              prop="saleTypeName"
              :formatter="formatterType"
              min-width="160"
              show-overflow-tooltip
            ></el-table-column>
            <!-- <el-table-column
              align="left"
              label="产品类别"
              prop="mainName"
              min-width="160"
              show-overflow-tooltip
            ></el-table-column> -->
            <el-table-column
              align="left"
              label="物料编码"
              prop="materialNumber"
              min-width="160"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <CopyButton :copyText="scope.row.materialNumber" />
                <span>{{scope.row.materialNumber}}</span>
              </template>
            </el-table-column>
            <el-table-column
              align="left"
              label="产品名称"
              prop="materialName"
              min-width="200"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <CopyButton :copyText="scope.row.materialName" />
                <span>{{scope.row.materialName}}</span>
              </template>
            </el-table-column>
            <el-table-column
              align="left"
              label="产品编码"
              prop="materialOldNumber"
              min-width="200"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <CopyButton :copyText="scope.row.materialOldNumber" />
                <span>{{scope.row.materialOldNumber}}</span>
              </template>
            </el-table-column>
            <el-table-column
              align="left"
              label="规格型号"
              prop="specification"
              min-width="200"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <CopyButton :copyText="scope.row.specification" />
                <span>{{scope.row.specification}}</span>
              </template>
            </el-table-column>
            <el-table-column
              align="left"
              label="计量单位"
              prop="unit"
              min-width="160"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="right"
              label="数量"
              prop="qty"
              min-width="160"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="right"
              label="批发价"
              prop="batchPrice"
              min-width="160"
              show-overflow-tooltip
            ></el-table-column>

            <el-table-column
              align="right"
              label="格力折扣"
              prop="discAmount"
              min-width="160"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="left"
              label="调价日期"
              prop="createTime"
              min-width="200"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="left"
              label="生效日期"
              prop="startDate"
              min-width="200"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="left"
              label="失效日期"
              prop="endDate"
              min-width="200"
              show-overflow-tooltip
            ></el-table-column>
           <!-- <el-table-column
              align="left"
              label="是否促销价"
              prop="isPromote"
              min-width="160"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <el-tag size="mini" type="success" v-if="scope.row.isPromote">是</el-tag>
                <el-tag size="mini"  type="danger" v-else>否</el-tag>
              </template>
            </el-table-column> -->
            <el-table-column
              align="left"
              label="返利类型（钱包）"
              prop="wallets"
              min-width="250"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <template v-for="(item, index) in comWallets( scope.row.wallets)">
                     <template v-if="item.type === 'REBATE'">
                        <el-tag
                  type="success"
                  style="margin: 0 10px"
                  size="mini"

                  :key="index"
                  >
               {{ item.walletName }}
                </el-tag>
                  </template
                  >
                </template>

              </template>
            </el-table-column>
            <el-table-column
              align="left"
              label="现金钱包"
              prop="modifyPriceDepartment"
              min-width="350"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <template  v-for="(item, index) in comWallets(scope.row.wallets)">
                  <template v-if="item.type === 'COMMONLY'">

                   <el-tag
                  type="success"
                  style="margin: 0 10px"
                  size="mini"

                  :key="index"
                >
                {{ item.walletName }}
                </el-tag>
                    </template
                  >
                </template>

              </template>
            </el-table-column>
            <el-table-column
              align="left"
              label="调价部门"
              prop="adminWebsitName"
              min-width="200"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="left"
              label="调价业务员"
              prop="serviceName"
              min-width="200"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="left"
              label="制单日期"
              prop="createTime"
              min-width="200"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="left"
              label="审核人"
              prop="confirmName"
              min-width="200"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="left"
              label="审核日期"
              prop="confirmTime"
              min-width="200"
              show-overflow-tooltip
            ></el-table-column>
            <el-table-column
              align="left"
              label="状态"
              prop="examineStatus"
              min-width="160"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <el-tag size="mini" type="success" v-if="scope.row.examineStatus == 'SAVE'"
                  >保存</el-tag
                >
                <el-tag
                  size="mini"
                  type="danger"
                  v-else-if="scope.row.examineStatus == 'WAIT'"
                  >待审核</el-tag
                >
                <el-tag
                  size="mini"
                  type="danger"
                  v-else-if="scope.row.examineStatus == 'OK'"
                  >通过</el-tag
                >
                <el-tag
                  size="mini"
                  type="danger"
                  v-else-if="scope.row.examineStatus == 'FAIL'"
                  >不通过</el-tag
                >
                <el-tag size="mini" type="danger" v-else>审核</el-tag>
              </template>
            </el-table-column>
            <el-table-column
              align="center"
              label="操作"
              fixed="right"
              min-width="160"
              show-overflow-tooltip
            >
              <template slot-scope="scope">
                <template v-if="scope.row.examineStatus == 'SAVE'">
                  <el-popconfirm
                    title="确定提审吗？"
                    @onConfirm="handleGetPriceSubmit(scope.row.updPriceBillId)"
                    style="margin-right: 10px"
                  >
                    <el-button type="text" slot="reference">提审</el-button>
                  </el-popconfirm>
                </template>
                <template v-if="scope.row.examineStatus == 'WAIT'">
                  <el-button
                    type="text"
                    class="textColor"
                    @click="approvalFn(scope.row.updPriceBillId)"
                    >审批</el-button
                  >
                </template>
                <el-button
                 v-if="scope.row.examineStatus == 'SAVE'"
                  type="text"
                  class="textColor"
                  @click="editFn(scope.row.updPriceBillId,scope.row)"
                  >编辑</el-button
                >
                <el-button
                  type="text"
                  class="textColor"
                  @click="detailFn(scope.row.updPriceBillId)"
                  >详情</el-button
                >
              </template>
            </el-table-column>
          </el-table>
        </div>
        <!-- 分页 -->
        <div class="fr">
          <el-pagination
            @size-change="handleSizeChange"
            @current-change="handleCurrentChange"
            :current-page="currentPage"
            :page-sizes="[10, 20, 30, 50]"
            :page-size="10"
            layout="total, sizes, prev, pager, next, jumper"
            :total="listTotal"
          >
          </el-pagination>
        </div>
      </div>
    </div>
    <ModifyListApply v-else-if="show === 2 || show==5" :cid='cid'/>
    <ModifyListApproval v-else-if="show === 3 " :detail="detail" />
    <ModifyListDetail v-else :detail="detail" />
       <ExamineDialog :isShow.sync="isShowExamineDialog" :examineForm.sync="examineForm" />
  </div>
</template>

<script>
import ModifyListApply from './components/modify_list-apply.vue'
import ModifyListApproval from './components/modify_list-approval.vue'
import ModifyListDetail from './components/modify_list-detail.vue'
import ExamineDialog from '@/components/Common/examine-dialog'
import Mixin from '@/mixin/index'
import {
  getPriceSubmit,
  getProductRricedel,
  getProductRriceDetail,
  getProductRriceList,
  getTypeList,
  examineData
} from '@/api/basic_data/material'
import {downloadFiles, handleImport} from '@/utils/util'
import { getCategoryList } from '@/api/common'

export default {
  mixins: [Mixin],
  data() {
    return {
      baseURL: '',
      importFileList: [],
      importLoading: false,
      show: 1,
      currentPage: 1, // 当前页码
      pageSize: 10, // 每页数量
      listTotal: 0, // 列表总数
      dataList: [
        {
          baseUnitId: "",
          batchPrice: "",
          billId: "",
          endDate: "",
          id: null,
          isPromote: "",
          isPublish: "",
          materialId: "",
          materialName: "",
          materialNumber: "",
          parentId: "",
          qty: "",
          rebateUseRate: "",
          retailPrice: "",
          saleTypeId: "",
          specification: "",
          startDate: "",
          wallets: [],
        },
      ],
      screenForm: {
        materialName: "",
        materialNumber: "",
        startDate: "",
        materialOldNumber:'',
        saleTypeId:'',
        k3CategoryNumber:'',
        specification:''
      },
      liDetail: {},
      detail: {},
      obj: {
        baseUnitId: "",
        batchPrice: "",
        billId: "",
        endDate: "",
        id: null,
        isPromote: "",
        isPublish: "",
        materialId: "4",
        materialName: "",
        materialNumber: "",
        parentId: "",
        qty: "",
        rebateUseRate: "",
        retailPrice: "",
        saleTypeId: "",
        specification: "",
        startDate: "",
        wallets: [],
      },
      cid:'',
      typeList: [],
      dictList:[],
       isShowExamineDialog: false,
      examineForm: {
        status: 'OK',
        remark: '',
      },
    };
  },
  components: {
    ExamineDialog,
    ModifyListApply,
    ModifyListApproval,
    ModifyListDetail,
  },
  computed:{
    exParams() {
      return {
        materialName: this.screenForm.materialName,
        materialNumber: this.screenForm.materialNumber,
        startDate:this.screenForm.startDate
      };
    },
    comWallets(){
      return (e)=>{
          let map = new Map()
          for (const item of e) {
            map.set(item.walletId,item)
          }

          return [...map.values()]
      }
    }
  },
  mounted() {
    let params = {
      pageNum: 1,
      pageSize: -1,
      saleCode: "",
      saleName: "",
      status: "",
    };
    getTypeList(params).then((res) => {
      this.typeList = res.data.records;
    });
   getCategoryList({ pageNum:1,pageSize:-1}).then((res) => {
      this.dictList = res.data.records
      console.log(this.dictList,777777)
    })
  },
  methods: {
    formatterType(row) {
      for (let i = 0; i < this.typeList.length; i++) {
        if (this.typeList[i].id == row.saleTypeId) {
          return this.typeList[i].saleName;
        }
      }
    },
    addFn() {
      this.show = 2;
    },
    hanleDeleteAll(id) {

      this.hanleDeleteAllPromise(id).then((ids) => {

        getProductRricedel(ids).then((res) => {
          this.$successMsg("删除成功");
          this.getList();
        });
      });
    },
      // 打开 批量审批
    batchExamine() {
      if (this.ids.length) {
        this.isShowExamineDialog = true;
        return
      }
      this.$errorMsg('请选择审核项')
    },
    // 提交 批量审批
    submitExamineForm() {
      // let ids = this.dis.map(item => {
      //   return item
      // });
    const  ids = [...new Set(this.ids)]
      examineData({
        ids: ids.join(','),
        examineStatus: this.examineForm.status,
        examineRemark: this.examineForm.remark,
      })
        .then((res) => {
          this.isShowExamineDialog = false;
          this.$successMsg("修改成功");
          this.getList();
        })
    },
    handleGetPriceSubmit(id) {
      console.log(id);
      getPriceSubmit({ ids:id }).then((res) => {
        this.$successMsg("已提审");
        this.getList();
      });
    },
    approvalFn(id) {
      getProductRriceDetail({ id }).then((res) => {
        this.detail = res.data;
        this.show = 3;
      });
    },
    detailFn(id) {
      getProductRriceDetail({ id }).then((res) => {
        this.detail = res.data;

        this.show = 4;
      });
    },
    getList() {
      this.listLoading = true;
      console.log(456654);
      let params = {
        pageNum: this.currentPage,
        pageSize: this.pageSize,
        materialName: this.screenForm.materialName,
        materialNumber: this.screenForm.materialNumber,
        startDate: this.screenForm.startDate,
        materialOldNumber:this.screenForm.materialOldNumber,
        saleTypeId:this.screenForm.saleTypeId,
        k3CategoryNumber:this.screenForm.k3CategoryNumber,
        specification:this.screenForm.specification
      };
      getProductRriceList(params).then((res) => {
        this.dataList = res.data.records;
        this.listTotal = res.data.total;
        this.listLoading = false;
      });
    },
    editFn(id, row) {
          this.cid = id
         this.show = 5;


      // this.diaLogForm = {
      //   id,
      //   composeNumber: row.composeNumber,
      //   items: row.items === undefined ? [] : row.items,
      //   materialId: row.materialId,
      //   orgNumber: row.orgNumber,
      //   productModel: row.productModel,
      //   productVolume: row.productVolume,
      // };
      // this.showDialogForm = true;
    },
    hanleInfo() {
      if (this.type === 1) {
        getProductAdd(this.diaLogForm).then((res) => {
          this.$successMsg("保存成功");
          console.log(params, 123);
          this.getList();
        });
      } else if (this.type === 2) {
        const params = {
          ...this.diaLogForm,
        };
        console.log(params, 123);
        getProductEdit(params).then((res) => {
          this.$successMsg("编辑成功");
          this.getList();
        });
        this.diaLogForm.id = null;
      }
      this.showDialogForm = false;
    },
    hanleDelete(id) {
      this.hanleDeleteAllPromise(id).then((ids) => {
        getProductDel(ids).then((res) => {
          this.$successMsg("删除成功");
        });
      });
    },
    handleExport() {
      let screenData = {
        customerName: this.screenForm.customerName,
        freeDay: this.screenForm.freeDay,
        toll: this.screenForm.toll,
      };
      downloadFiles("/product-compose/export", screenData);
    },
    resetInfo() {
      this.diaLogForm = {
        composeNumber: "",
        id: "",
        items: [],
        materialId: "",
        orgNumber: 0,
        productModel: "",
        productVolume: "",
      };
    },
    // 导入
    async handleImport(param) {
      this.importLoading = true
      const file = param.file
      const formData = new FormData()
      formData.append('file', file)

      const result = await handleImport('/product-upd-price/material/import', formData)
      this.importLoading = false
      this.importFileList = []
      if (result.code === 200) {
        this.$alert('成功处理记录数：' + result.data, '导入成功', {
          confirmButtonText: '确定'
        })
        this.getList()
      } else {
        this.$alert(result.message, '导入失败', {
          confirmButtonText: '确定'
        })
      }
    },
    // 下载经销商模板
    hanleDownloadFiles() {
      downloadFiles('/product-upd-price/download')
    },
    tableRowClassName({row, rowIndex}) {
      // || row.examineStatus=='FAIL'
     if (this.ids.includes(row.updPriceBillId)) {
          return 'warning-row';
        }
        return '';
    },
  },
};
</script>

<style lang="scss" scoped>
::v-deep .el-select--small {
  width: 100%;
}
::v-deep .el-table .warning-row {
    background:  oldlace;
  }
.import-btn{
  display: inline-block;
    margin: 0 10px;
}
</style>
