<template>
    <div>
        <el-card>
            <el-form  :model="filterQuery" size="mini" label-width="120px" v-show="showSearch">
                <el-row>
                  <el-col :span="6">
                    <el-form-item label="物品编号:">
                        <el-input v-model="filterQuery.unionCode" style="width: 90%" placeholder="请输入DI/医保编码/商品条码" clearable="true"></el-input>
                    </el-form-item>
                  </el-col>
                  <el-col :span="6">
                    <el-form-item label="产品通用名:">
                        <el-input v-model="filterQuery.cpmctymc" style="width: 90%" placeholder="请输入产品通用名" clearable="true"></el-input>
                    </el-form-item>
                  </el-col>
                  <el-col :span="6">
                    <el-form-item label="规格型号:">
                        <el-input v-model="filterQuery.ggxh" style="width: 90%" placeholder="请输入规格型号" clearable="true"></el-input>
                    </el-form-item>
                  </el-col>
                  <el-col :span="6">
                    <el-form-item label="对照条件:">
                        <el-select v-model="filterQuery.filterType" style="width: 90%" placeholder="请选择过滤对照条件">
                            <el-option
                                v-for="item in filterList"
                                :key="item.filterType"
                                :label="item.sysName"
                                :value="item.filterType">
                                <span style="float: left">{{ item.sysName }}</span>
                            </el-option>
                        </el-select>
                    </el-form-item>
                  </el-col>
                </el-row>
                <el-row>
                  <el-col :span="6">
                    <el-form-item label="生产企业:">
                        <el-input v-model="filterQuery.ylqxzcrbarmc" style="width: 90%" placeholder="请输入生产企业/注册备案人"
                                  clearable="true"></el-input>
                    </el-form-item>
                  </el-col>
                  <el-col :span="6">
                    <el-form-item label="第三方产品编码:">
                        <el-input v-model="filterQuery.thrPiId" style="width: 90%" placeholder="请输入第三方产品编码" clearable="true"></el-input>
                    </el-form-item>
                  </el-col>
                  <el-col :span="6">
                    <el-form-item label="审核状态:" v-if="isSpCombine">
                        <el-select v-model="filterQuery.lockStatus" style="width: 90%" placeholder="请选择审核状态">
                            <el-option label="全部" value=""></el-option>
                            <el-option label="未提交" value="1"></el-option>
                            <el-option label="已提交" value="2"></el-option>
                            <el-option label="已锁定" value="3"></el-option>
                        </el-select>
                    </el-form-item>
                  </el-col>
                </el-row>
            </el-form>

          <div class="top-right-btn">
          <el-button-group style="display:flex;">
            <el-button icon="el-icon-view" type="primary" @click="hideSearch">显示/隐藏搜索栏</el-button>
            <el-button  type="primary" icon="el-icon-refresh"    @click="onReset"   >重置 </el-button>
              <el-button type="primary" icon="el-icon-search" @click="search">查询</el-button>
              <el-button type="primary" icon="el-icon-bottom-right" @click="selectProduct()">选入产品</el-button>
            </el-button-group>
          </div>
          <el-divider style="margin: 15px"></el-divider>

            <el-table v-loading="loading" :data="list" style="width: 100%" @selection-change="handleSelectionChange" border highlight-current-row>
                <el-table-column label="序号" type="index"></el-table-column>
                <el-table-column label="最小销售产品标识" prop="nameCode" width="140" show-overflow-tooltip></el-table-column>
                <el-table-column label="产品编码" prop="thirdId" show-overflow-tooltip></el-table-column>
                <el-table-column label="生产企业" prop="ylqxzcrbarmc" show-overflow-tooltip></el-table-column>
                <el-table-column label="产品通用名" prop="cpmctymc" show-overflow-tooltip></el-table-column>
                <el-table-column label="规格型号" prop="ggxh" show-overflow-tooltip></el-table-column>
                <el-table-column label="注册/备案凭证" prop="zczbhhzbapzbh" show-overflow-tooltip></el-table-column>
                <el-table-column label="器械类别" prop="qxlb" show-overflow-tooltip></el-table-column>
                <el-table-column v-if="isSpCombine" label="审核状态" prop="lockStatus" show-overflow-tooltip>
                    <template slot-scope="scope">
                        {{ lockStatusMap[scope.row.lockStatus] }}
                    </template>
                </el-table-column>
                <el-table-column width="180" label="操作">
                    <template slot-scope="scope">
                        <el-button v-if="isSpCombine" type="text" size="small" :disabled="scope.row.originUuid!=null || scope.row.lockStatus===3" @click.native.stop="intentSelectUdi(scope.row)">关联DI</el-button>
                        <el-button v-if="scope.row.lockStatus!=3" type="text" size="small" @click.native.stop="handleModifyClick(scope.row)">编辑</el-button>
                        <el-button v-if=" scope.row.lockStatus!=3" type="text" size="small"  @click.native.stop="handleDetailClick(scope.row)">详情</el-button>
                        <el-button v-if="isSpCombine" type="text" size="small" :disabled="scope.row.lockStatus===3" @click.native.stop="sumitLockStatus(scope.row)">提交审核</el-button>
                        <el-button v-if="isSpCombine" type="text" size="small"    @click.native.stop="splitSelectUdi(scope.row)" :disabled="scope.row.thirdId===scope.row.nameCode  || scope.row.thirdId==null || scope.row.nameCode==null || scope.row.lockStatus===3">拆分产品</el-button>
                        <el-button type="text" size="small" @click.native.stop="deleteCompanyProductRelevance(scope.row)">移除</el-button>
                    </template>
                </el-table-column>
            </el-table>


          <pagination
            v-show="total>0"
            :total="total"
            :limit.sync="filterQuery.limit"
            :page.sync="filterQuery.page"
            @pagination="handleCurrentChange"
          ></pagination>


            <el-dialog
                title="产品信息编辑"
                :visible.sync="editDialogVisible"
                width="80%"
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                v-if="editDialogVisible"
                :before-close="refresh"
            >
                <basicProductEdit
                    :editQuery="editQuery"
                    :closeDialog="closeDialog">
                </basicProductEdit>


            </el-dialog>
            <el-dialog
                title="产品信息详情"
                :visible.sync="detailDialogVisible"
                width="70%"
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                v-if="detailDialogVisible"
            >
                <basicProductDetail
                    :productRemarkSet="productRemarkSet"
                    :editQuery="editQuery"
                    :closeDialog="closeDialog">
                >
                </basicProductDetail>
            </el-dialog>
            <el-dialog
                title="关联选入耗材信息"
                :visible.sync="selectUdiDialogVisible"
                width="85%"
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                v-if="selectUdiDialogVisible"
            >
                <selectUdi @closeUdi="closeUdi" :isImportUdi="isImportUdi"></selectUdi>
            </el-dialog>
            <el-dialog
                :title="selectErpTitle"
                :visible.sync="selectErpDialogVisible"
                width="85%"
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                v-if="selectErpDialogVisible"
            >
                <selectErp
                    :closeDialog="closeDialog"
                    :uuid="uuid"
                    :relId="relId"
                    :intentThirdId="intentThirdId"
                    :isImport="isImport"
                    :data="thisData"
                    :defaultSys="defaultSys"
                    @closeUdi="closeUdi"
                    :supEnable="true"
                ></selectErp>
            </el-dialog>
            <el-dialog
                title="选入DI器械信息"
                :visible.sync="selectLocalVisible"
                width="85%"
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                v-if="selectLocalVisible"
            >
                <selectLocalUdi
                    :closeDialog="closeDialog"
                    :relId="relId"
                    :thirdId="thirdId"
                    :idSpliUdi="idSpliUdi"
                    :isImportUdi="isImportUdi"
                    :data="thisData"
                    @closeUdi="closeUdi"
                ></selectLocalUdi>
            </el-dialog>
            <el-dialog
                title="选入产品信息"
                :visible.sync="selectProductVisible"
                width="85%"
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                v-if="selectProductVisible"
            >
                <selectProduct
                    :closeSelDialog="closeSelDialog"
                    :uuid="uuid"
                ></selectProduct>
            </el-dialog>

            <el-dialog
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                title="新增配送产品"
                :visible.sync="addProductVisible"
                width="85%"
                v-if="addProductVisible"
                @close="closeAddDialog"
            >
                <ThrProductsAdd
                    :closeAddDialog="closeAddDialog"
                    :newType="newType"></ThrProductsAdd>
            </el-dialog>
            <el-dialog
                title="选择DI版本"
                :visible.sync="selectVersionVisible"
                :close-on-click-modal="false"
                :close-on-press-escape="false"
                width="85%"
                v-if="selectVersionVisible"
            >
                <selectUdiVersion
                    :closeDialog="closeDialog"
                    :relId="relId"
                    :uuid="uuid"
                    :originUuid="originUuid"
                    @closeUdi="closeUdi"
                ></selectUdiVersion>
            </el-dialog>
        </el-card>
    </div>
</template>

<script>
import {
    deletetUdiInfos,
    updatetUdiInfos,
    updateErpProduct,
    uploadSmp,
    thirdSysDetail,
    removeRl, sysFilter, spcombie, lockStatus, removeDiRl
} from "../../../api/basic/udiRelevance";
import store from "../../../store/index";
import { deleteCompanyProductRelevance, filterCompanyProductRelevance } from "../../../api/supplier/companyProductRelevance";
import {finProductSet, selectSysParamByKey} from "../../../api/param/systemParamConfig";
import {filterByUuid} from "../../../api/basic/udiInfo";

import selectUdi from "@/views/basic/product/udiInfoRelevance.vue";
import selectErp from "@/views/basic/product/udiInfoselectErpUdi";
import selectLocalUdi from "@/views/basic/product/UdiInfoSelectLocalUdi";
import selectProduct from "./basicCompanyProductsImport";
import ThrProductsAdd from "@/views/supplier/company/ThrProductsAdd";
import selectUdiVersion from "@/views/basic/product/UdiinfoSelectVersion";
import basicProductEdit from "@/views/supplier/company/basicCompanyproductEdit";
import basicProductDetail from "@/views/supplier/company/basicCompanyproductDetail"


export default {
    data() {
        return {
          showSearch:true,
            filterQuery: {
                unionCode: null,
                udiCode: null,
                ylqxzcrbarmc: "",
                cpmctymc: "",
                nameCode: "",
                ggxh: null,
                page: 1,
                limit: 20,
                addType: 1,
                thrPiId: null,
                filterType: null,
                auditStatus: null,
            },
            idSpliUdi: false,
            newType: 2,
            selectProductVisible: false,
            addProductVisible: false,
            selectVersionVisible: false,
            editQuery: null,
            productRemarkSet: {},
            relevanceEdit: {
                id: null,
                thirdId: "",
                isDisable: null,
                isUseDy: false,
                isAdavence: null,
                pId: null,
            },
            pId: 0,
            productType: null,
            defaultSys: null,
            isImport: false,
            intentThirdId: null,
            isSpCombine: false,
            isImportUdi: false,
            isUploadSmp: false,
            isImportFile: false,
            uploadFileUrl: null,
            checked: false,
            list: [],
            detailList: [],
            sysList: [],
            filterList: [],
            total: 0,
            thirdNo: "",
            uuid: "111",
            originUuid: null,
            thirdId: null,
            relId: "",
            thisData: {
                nameCode: null,
                cpmctymc: null,
                ggxh: null
            },
            multipleSelection: [],
            editDialogVisible: false,       //编辑
            detailDialogVisible: false,//产品信息详情
            selectUdiDialogVisible: false,  //关联选入
            selectErpDialogVisible: false,  //选入ERP产品
            selectLocalVisible: false,      //关联UDI
            auditStatusMap: {
                1: '通过',
                2: '不通过',
                3: '反审',
                4: '申请反审',
                5: '拒绝反审',
            },

            selectErpTitle: "从指定系统添加耗材信息",
            lockStatusMap: {1: "未提交", 2: "已提交", 3: "已锁定"},
            isUseDyCheck: false,
            loading: false,
            activeNames: ['1']
        };
    },

    methods: {
      hideSearch() {
        this.showSearch = !this.showSearch;
      },
        onReset() {
            this.$router.push({
                path: "",
            });
            this.filterQuery = {
                unionCode: null,
                udiCode: null,
                ylqxzcrbarmc: "",
                cpmctymc: "", thrPiId: null,
                nameCode: "",
                ggxh: null,
                page: 1,
                limit: 20,
                addType: 1,
            };
            this.getList();
        },
      refresh(){
        this.getList();
        this.editDialogVisible=false;
      },
        search() {
            this.filterQuery.page = 1;
            this.getList();
        },
        getList() {
            this.loading = true;
            this.getProductRelevanceList();
        },
        getProductRelevanceList() {
            this.loading = true;
            this.filterQuery.customerId = store.getters.customerId;
            filterCompanyProductRelevance(this.filterQuery)
                .then((response) => {
                    this.loading = false;
                    this.list = response.data.list || [];
                    this.total = response.data.total || 0;
                })
                .catch(() => {
                    this.loading = false;
                    this.list = [];
                    this.total = 0;
                });
        },
        keyup_submit(event) {
            this.filterQuery.page = 1;
            this.getList();
            event.target.select();
        },
        getDetailList(detailQuery) {
            this.loading = true;
            filterByUuid(detailQuery)
                .then((response) => {
                    this.isUseDyCheck = false;
                    this.loading = false;
                    this.detailList = response.data || [];
                    this.productType = this.detailList[0].productType;
                    this.detailList.forEach((item, index, array) => {
                        if (item.zxxsbzbhsydysl > 1) {
                            this.isUseDyCheck = true;
                        }
                    });
                })
                .catch(() => {
                    this.loading = false;
                    this.detailList = [];
                });
        },

        handleDetail(row) {
            let rlId = this.editQuery.rlId;
            this.editQuery = row;
            this.editQuery.rlId = rlId;
        },
        deleteOrders(data) {
            this.loading = true;
            let tquery = {
                id: data.id + "",
            };

            deletetUdiInfos(tquery)
                .then((response) => {
                    if (response.code == 20000) {
                        this.getList();
                        this.$message({
                            type: "success",
                            message: "删除成功！",
                        });
                    } else {
                        this.$message.error(response.message);
                    }
                })
                .catch(() => {
                });
        },

        deleteDialog(rowId) {
            this.$confirm("此操作将永久删除该产品信息, 是否继续?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            })
                .then(() => {
                    this.deleteOrders(rowId);
                })
                .catch(() => {
                });
        },

        intentDetail() {
            this.isImportUdi = false;
            this.selectUdiDialogVisible = true;
        },
        addSelectErp(row) {
            this.defaultSys = row.sysId;
            this.isImport = false;
            this.selectErpTitle = "从" + row.sysName + "选入耗材信息";
            this.selectErpDialogVisible = true;
        },

        removeErp(row) {
            this.$confirm("此操作将解除该绑定产品信息, 是否继续?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            })
                .then(() => {
                    let query = {
                        relId: this.editQuery.rlId,
                        thirdSys: row.sysId
                    };
                    removeRl(query)
                        .then((response) => {
                            if (response.code == 20000) {
                                this.getThirdSysDetail()();
                                this.$message({
                                    type: "success",
                                    message: "删除成功！",
                                });
                            } else {
                                this.$message.error(response.message);
                            }
                        })
                        .catch(() => {
                        });
                })
                .catch(() => {
                });
        },
        removeDi() {
            this.$confirm("此操作将解除该绑定DI器械信息, 是否继续?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            })
                .then(() => {
                    let query = {
                        relId: this.editQuery.rlId,
                    };
                    removeDiRl(query)
                        .then((response) => {
                            if (response.code == 20000) {
                                this.$message({
                                    type: "success",
                                    message: "删除成功！",
                                });
                                this.getList();
                                this.cancelDialog();
                            } else {
                                this.$message.error(response.message);
                            }
                        })
                        .catch(() => {
                        });
                })
                .catch(() => {
                });
        },
        intentSelectErp(val) {
            this.uuid = val.uuid;
            this.relId = val.rlId;
            this.isImport = false;
            this.thisData = val;
            this.selectErpDialogVisible = true;
        },

        intentImportErp(val) {
            this.defaultSys = null;
            this.uuid = val.uuid;
            this.relId = val.rlId;
            this.isImport = true;
            this.thisData = val;
            this.intentThirdId = val.thirdId;
            this.selectErpDialogVisible = true;
        },
        uploadSMP() {
            var selectData = this.multipleSelection;
            var keys = [];
            selectData.forEach((obj) => {
                keys.push(obj.id);
            });
            var tquery = {
                keys: keys,
            };
            uploadSmp(tquery)
                .then((response) => {
                    if (response.code == 20000) {
                        this.$message({
                            type: "success",
                            message: "上传成功！",
                        });
                    } else {
                        this.$message({
                            type: "error",
                            message: response.message,
                        });
                    }
                })
                .catch(() => {
                    this.$message({
                        type: "error",
                        message: "上传失败",
                    });
                });
        },
        intentSelectUdi(val) {
            this.relId = val.rlId;
            this.isImportUdi = true;
            this.thisData = val;
            this.idSpliUdi = false;
            this.thirdId = val.thirdId;
            this.selectLocalVisible = true;
        },

        splitSelectUdi(val) {
            this.thirdId = val.thirdId;
            this.isImportUdi = true;
            this.thisData = val;
            this.idSpliUdi = true;
            this.selectLocalVisible = true;
        },

        intentImportUdi() {
            this.relId = null;
            this.selectLocalVisible = true;
        },
        deleteCompanyProductRelevance(row) {
            this.$confirm("是否移除?", "提示", {
                confirmButtonText: "确定",
                cancelButtonText: "取消",
                type: "warning",
            }).then(() => {
                this.productLoading = true;
                let tquery = {
                    id: row.id,
                };
                deleteCompanyProductRelevance(tquery)
                    .then((response) => {
                        this.productLoading = false;
                        if (response.code === 20000) {
                            this.getProductRelevanceList();
                            this.$message({
                                type: "success",
                                message: "移除成功！",
                            });
                        } else {
                            this.$message.error(response.message);
                        }
                    })
                    .catch(() => {
                        this.productLoading = false;
                    });
            }).catch(() => {
            });
        },
        handleSelectionChange(val) {
            this.multipleSelection = val;
        },
        closeSelDialog(val) {
            this.selectProductVisible = false;
            this.addProductVisible = false;
        },
        cancelDialog() {
            this.editDialogVisible = false;
        },
        handleCurrentChange(val) {
            this.filterQuery.page = val.page;
            this.getList();
        },
        handleDetailClick(row) {
            this.thisData = row;
            this.detailDialogVisible = true;
            this.editQuery = row;
            this.relevanceEdit = {
                id: row.rlId,
                isUseDy: row.isUseDy,
                isDisable: row.isDisable,
                isAdavence: row.isAdavence,
            };
        },
        sumitLockStatus(row) {
            let postQuery = {
                ids: [],
                lockStatus: 2,
            }
            postQuery.ids.push(row.rlId);
            lockStatus(postQuery)
                .then((response) => {
                    if (response.code == 20000) {
                        this.loading = false;
                        this.$message.success(response.data);
                        this.getList();
                    } else {
                        this.$message.error(response.message);
                    }

                })
                .catch(() => {
                    this.loading = false;
                });
        },
        handleModifyClick(row) {
            this.editQuery = row;
            this.editDialogVisible = true;
        },
        closeUdi(val) {
            this.selectUdiDialogVisible = false;
            this.selectErpDialogVisible = false;
            this.selectLocalVisible = false;
            this.detailDialogVisible=false;
            this.selectVersionVisible = false;
            if (val) {
                this.cancelDialog();
            }
        },
        getThirdSysDetail() {
            let query = {
                id: this.relevanceEdit.id,
            };

            thirdSysDetail(query)
                .then((response) => {
                    this.loading = false;
                    this.sysList = response.data.list || [];
                })
                .catch(() => {
                    this.loading = false;
                    this.sysList = [];
                });
        },
        getSysFilter() {
            sysFilter()
                .then((response) => {
                    this.loading = false;
                    this.filterList = response.data.list || [];
                })
                .catch(() => {
                    this.loading = false;
                    this.filterList = [];
                });

        },
        uploadErpProduct() {
            updateErpProduct()
                .then((response) => {
                    if (response.code == 20000) {
                        this.$message({
                            type: "success",
                            message: response.data,
                        });
                    } else {
                        this.$message.error(response.message);
                    }
                })
                .catch(() => {
                });
        },
        selectVersion() {
            this.selectVersionVisible = true;
            this.uuid = this.editQuery.uuid;
            this.originUuid = this.editQuery.originUuid;
            this.relId = this.editQuery.rlId;
        },
        closeDialog() {
            this.selectErpDialogVisible = false;
            this.selectLocalVisible = false;
            this.selectProductVisible = false;
            this.editDialogVisible = false;
            this.selectVersionVisible = false;
            this.closeUdi();
            this.getList();
        },
        onAddSubmit() {
            this.relevanceEdit.isDisable = this.editQuery.isDisable;
            this.relevanceEdit.isLock = this.editQuery.isLock;
            this.relevanceEdit.isAdavence = this.editQuery.isAdavence;
            this.relevanceEdit = this.editQuery
            this.relevanceEdit.pid = this.pId;
            if (this.checked == true) {
                this.relevanceEdit.isUseDy = 1;
            } else {
                this.relevanceEdit.isUseDy = 0;
            }
            this.relevanceEdit.id = this.editQuery.rlId,
                updatetUdiInfos(this.relevanceEdit)
                    .then((response) => {
                        this.loading = false;
                        this.getList();
                        this.cancelDialog();
                    })
                    .catch(() => {
                        this.loading = false;
                        this.cancelDialog();
                    });
        },
        selectSysParam() {

            spcombie().then((response) => {
                if (response.code == 20000) {
                    if (response.data.paramValue == "1") {
                        this.isSpCombine = true;
                    } else {
                        this.isSpCombine = false;
                    }
                }
            });

            let query = {
                paramKey: "smp_isUploadProuct",
            };
            selectSysParamByKey(query).then((response) => {
                if (response.code == 20000) {
                    if (response.data.paramValue == "1") {
                        this.isUploadSmp = true;
                    }
                }
            });
            let query1 = {
                paramKey: "upload_pi_file_enabled",
            };
            selectSysParamByKey(query1).then((response) => {
                if (response.code == 20000) {
                    if (response.data.paramValue == "1") {
                        this.isImportFile = true;
                    }
                }
            });
            let query2 = {
                paramKey: "upload_pi_file_url",
            };
            selectSysParamByKey(query2).then((response) => {
                if (response.code == 20000) {
                    this.uploadFileUrl = response.data.paramValue;
                }
            });
        },
        selectProduct() {
            this.selectProductVisible = true;
        },
        closeAddDialog(val) {
            if (val) {
                this.getList();
            }
            this.addProductVisible = false;
        },

        findBasicProductSet() {
            finProductSet().then((response) => {
                if (response.code == 20000) {
                    this.productRemarkSet = response.data;
                } else {
                    //出错了
                }
            });
        },

    }
    ,
    mounted() {
    }
    ,
    components: {
        selectUdi,
        selectErp,
        selectLocalUdi,
        selectProduct,
        ThrProductsAdd,
      selectUdiVersion,
      basicProductEdit,
      basicProductDetail
    }
    ,
    created() {
        this.findBasicProductSet();
        this.getList();
        this.selectSysParam();
        this.getSysFilter();
    }
    ,
}
;
</script>
<style scoped>
.itemTag {
    float: left;
    text-align: left;
    margin-top: 10px;
    width: 25%;
}

.text {
    font-size: 13px;
    font-family: "Microsoft YaHei";
}

.query-form-item {
    display: block !important;
    margin-right: 10px;
    margin-bottom: 5px;
}

.el-row {
    display: flex;
    flex-wrap: wrap;
    margin-bottom: 6px;
}

.el-col {
    border-radius: 4px;
    flex-wrap: wrap;
}

.form-title {
    font-size: 16px;
    font-family: Noto Sans SC;
    font-weight: bold;
    color: #303133;
    padding-bottom: 17px;
    padding-top: 17px;
}
.el-form-item--mini.el-form-item {
  margin-bottom: 9px;
}
</style>
