<template>
    <div>
        <el-form :inline="true" :model="query" class="query-form" size="mini">
            <el-row>
                <el-form-item class="query-form-item">
                    <el-input v-model="query.key" style="width: 300px;" placeholder="搜索"></el-input>
                </el-form-item>
                <el-form-item class="query-form-item">
                    <el-select v-model="query.corpType" 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="4"></el-option>
                    </el-select>
                </el-form-item>
                <el-form-item>
                    <el-button-group>
                        <el-button
                            type="primary"
                            icon="el-icon-refresh"
                            @click="onReset"
                        ></el-button>
                        <el-button type="primary" icon="search" @click="getList"
                        >查询
                        </el-button
                        >
                        <el-button type="primary" icon="search" @click="handleAddClick"
                        >添加往来单位信息
                        </el-button
                        >
                    </el-button-group>
                </el-form-item>
            </el-row>
        </el-form>

        <el-table
            v-loading="loading"
            :data="list"
            style="width: 100%"
            @selection-change="handleSelectionChange"
        >
            <el-table-column label="序号" type="index" fixed></el-table-column>
            <el-table-column label="往来单位编码" prop="unitId" fixed></el-table-column>
            <el-table-column label="名称" prop="name" fixed></el-table-column>
            <el-table-column label="往来单位类型" prop="coryType" fixed>
                <template slot-scope="scope">
                    <span>{{ coryTypeArr[scope.row.corpType] }}</span>
                </template>
            </el-table-column>
            <el-table-column label="拼音码" prop="pinyinCode" fixed></el-table-column>
            <el-table-column label="社会信用号" prop="creditNo" fixed></el-table-column>
            <el-table-column label="第三方系统编码" prop="thirdId" fixed></el-table-column>
            <el-table-column label="操作" fixed="right">
                <template slot-scope="scope">
                    <el-button
                        type="text"
                        size="small"
                        @click.native.stop="handleModifyClick(scope.row)"
                    >编辑
                    </el-button
                    >
                    <!-- <el-button
                         type="text"
                         size="small"
                         @click.native.stop="handleLinkClick(scope.row)"
                     >关联自助平台
                     </el-button
                     >-->
                    <el-button
                        type="text"
                        size="small"
                        @click.native.stop="deleteDialog(scope.row)"
                    >删除
                    </el-button
                    >
                </template>
            </el-table-column>
        </el-table>

        <el-pagination
            :page-size="query.limit"
            @current-change="handleCurrentChange"
            layout="prev, pager, next"
            :total="total"
        ></el-pagination>

        <el-dialog
            :title="editTypeMap[editType]"
            :visible.sync="editDialogVisible"
            width="60%"
            :close-on-click-modal="false"
            :close-on-press-escape="false"
        >
            <el-form :model="editQuery" ref="editQuery" :rules="rules">
                <!--<el-row :gutter="20" class="el-row" type="flex">
                    <el-col :span="10" class="el-col">
                        <div class="text item">
                            <div class="text item">
                                <el-form-item label="往来单位名称" prop="name">
                                    <el-input v-model="editQuery.name" auto-complete="off"></el-input>
                                </el-form-item>
                                <el-form-item label="拼音码" prop="pinyinCode">
                                    <el-input v-model="editQuery.pinyinCode" auto-complete="off" ></el-input>
                                </el-form-item>
                                <el-form-item label="企业自定义ID" prop="thirdId">
                                    <el-input v-model="editQuery.thirdId"" auto-complete="off" ></el-input>
                                </el-form-item>
                                <el-form-item label="社会信用号" prop="creditNo">
                                    <el-input type="" v-model="editQuery.creditNo" auto-complete="off" :disabled="true"></el-input>
                                </el-form-item>
                            </div>
                        </div>
                    </el-col>
                    <el-col :span="10" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="往来单位编码" prop="contact">
                                <el-input v-model="editQuery.contact" auto-complete="off" :disabled="true"></el-input>
                            </el-form-item>
                            <el-form-item label="第三方往来单位ID" prop="thirdId">
                                <el-input v-model="editQuery.mobile" auto-complete="off" :disabled="true"></el-input>
                            </el-form-item>
                            <el-form-item label="地址" prop="addr">
                                <el-input v-model="editQuery.addr" auto-complete="off" :disabled="true"></el-input>
                            </el-form-item>
                            <el-form-item v-if="spellUpdate" label="往来单位类型" prop="corpType">
                                <el-select v-model="editQuery.corpType" placeholder="往来单位类型">
                                    <el-option
                                        v-for="item in corpTypeList"
                                        :key="item.value"
                                        :label="item.label"
                                        :value="item.value">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </div>
                    </el-col>
                </el-row>-->


                <el-row :gutter="20" class="el-row" type="flex">
                    <el-col :span="10" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="往来单位名称" prop="name">
                                <el-input
                                    v-model="editQuery.name"
                                    style="width: 60%"
                                    size="small"
                                    @input="change()"
                                ></el-input>
                            </el-form-item>
                        </div>
                    </el-col>
                    <el-col :span="10" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="拼音码" prop="pinyinCode">
                                <el-input
                                    v-model="editQuery.pinyinCode"
                                    style="width: 60%"
                                    size="small"
                                ></el-input>
                            </el-form-item>
                        </div>
                    </el-col>
                </el-row>
                <el-row :gutter="20" class="el-row" type="flex">
                    <el-col :span="10" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="企业自定义ID" prop="thirdId">
                                <el-input
                                    v-model="editQuery.thirdId"
                                    style="width: 60%"
                                    size="small"
                                ></el-input>
                            </el-form-item>
                        </div>
                    </el-col>
                    <el-col :span="10" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="社会信用号" prop="creditNo">
                                <el-input
                                    v-model="editQuery.creditNo"
                                    style="width: 60%"
                                    size="small"
                                ></el-input>
                            </el-form-item>
                        </div>
                    </el-col>
                </el-row>
                <el-row :gutter="20" class="el-row" type="flex">
                    <el-col :span="10" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="联系人" prop="contact">
                                <el-input
                                    v-model="editQuery.contact"
                                    style="width: 60%"
                                    size="small"
                                ></el-input>
                            </el-form-item>
                        </div>
                    </el-col>
                    <el-col :span="10" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="联系电话" prop="mobile">
                                <el-input
                                    v-model="editQuery.mobile"
                                    style="width: 60%"
                                    size="small"
                                ></el-input>
                            </el-form-item>
                        </div>
                    </el-col>
                </el-row>
                <el-row :gutter="20" class="el-row" type="flex">
                    <el-col :span="10" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="地址" prop="addr">
                                <el-input
                                    v-model="editQuery.addr"
                                    style="width: 60%"
                                    size="small"
                                ></el-input>
                            </el-form-item>
                        </div>
                    </el-col>
                    <el-col :span="10" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="往来单位类型" prop="corpType">
                                <el-select v-model="editQuery.corpType" placeholder="往来单位类型">
                                    <el-option
                                        v-for="item in corpTypeList"
                                        :key="item.value"
                                        :label="item.label"
                                        :value="item.value">
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </div>
                    </el-col>
                </el-row>
            </el-form>

            <div slot="footer" class="dialog-footer">
                <el-button @click.native="cancelDialog" size="small">取消</el-button>
                <el-button type="primary" size="small" @click.native="formSubmit()"
                >提交
                </el-button
                >
            </div>
        </el-dialog>
        <el-dialog
            :title="editTypeMap[editType]"
            :visible.sync="editLoginVisible"
            :close-on-click-modal="false"
            :close-on-press-escape="false"
            width="40%"
        >
            <el-form :model="editLogin" ref="editLogin" :rules="platformRules">
                <el-row :gutter="20" class="el-row" type="flex">
                    <el-col :span="15" class="el-col" type="flex">
                        <div class="edit-text">
                            <el-form-item label="自助平台名称:" prop="platformId">
                                <el-select
                                    v-model="editLogin.platformId"
                                    style="width: 90%"
                                    @change="intentPlatform"
                                    placeholder="请选择自助平台"
                                >
                                    <el-option
                                        v-for="item in platformList"
                                        :key="item.platformId"
                                        :label="item.name"
                                        :value="item.id"
                                    >
                                    </el-option>
                                </el-select>
                            </el-form-item>
                        </div>
                    </el-col>


                </el-row>
                <el-row :gutter="20" class="el-row" type="flex">
                    <el-col :span="15" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="账号:" prop="platformUsername">
                                <el-input
                                    v-model="editLogin.platformUsername"
                                    style="width: 80%"
                                    size="small"
                                    @input="change()"
                                ></el-input>
                            </el-form-item>
                        </div>
                    </el-col>
                </el-row>
                <el-row :gutter="20" class="el-row" type="flex">
                    <el-col :span="15" class="el-col" type="flex">
                        <div class="text item">
                            <el-form-item label="密码:" prop="platformPassword">
                                <el-input
                                    v-model="editLogin.platformPassword"
                                    style="width: 80%"
                                    size="small"
                                    @input="change()"
                                ></el-input>
                            </el-form-item>
                        </div>
                    </el-col>
                </el-row>
            </el-form>

            <div slot="footer" class="dialog-footer">
                <el-button @click.native.stop="cancelDialog" size="small">取消</el-button>
                <el-button type="primary" size="small" @click.native="linkSubmit()"
                >提交
                </el-button
                >
            </div>
        </el-dialog>
        <el-dialog title="选择自助平台" :visible.sync="platformVisible" width="35%">
            <el-table
                v-loading="loading"
                @row-click="intentPlatform"
                :data="platformList"
                style="width: 100%"
            >
                <el-table-column
                    label="序号"
                    type="index"
                    width="80"
                ></el-table-column>
                <el-table-column
                    label="自助平台名称"
                    prop="name"
                    width="140"
                ></el-table-column>
            </el-table>
        </el-dialog>
    </div>
</template>

<script>
    import {
        getUnitMaintain,
        addUnit,
        modifyUnit,
        deleteUnitMaintain
    } from "../../api/receipts/unitMaintain";
    import {
        getPlatform,
        linkPlatform
    } from "../../api/auth/platform";

    export default {
        data() {
            return {
                query: {
                    key: "",
                    customerId: this.$store.getters.customerId,
                    page: 1,
                    limit: 20
                },

                editQuery: {
                    unitId: null,
                    thirdId: null,
                    name: null,
                    spell: null,
                    creditNo: null,
                    pinyinCode: null,
                    contact: null,
                    mobile: null,
                    corpType: null,
                    outType: null
                },
                editLogin: {
                    platformId: null,
                    platformUsername: null,
                    platformPassword: null,
                    appid: null,
                    appKey: null,
                    sceretKey: null
                },
                editPlatfromQuery: {
                    id: null,
                    name: null,
                    host: null
                },
                spellUpdate: true,
                platformVisible: false,
                editLoginVisible: false,
                checked: false,
                editDialogVisible: false,
                list: [],
                platformList: [],
                total: 0,
                multipleSelection: [],
                rules: {
                    name: [
                        {required: true, message: "请输入往来单位名称", trigger: "change"}
                    ],
                    creditNo: [
                        {required: true, message: "请输入社会信用号", trigger: "change"}
                    ],
                    corpType: [
                        {required: true, message: "请选择往来单位类型", trigger: "change"}
                    ],
                    pinyinCode: [
                        {required: true, message: "请输入拼音码", trigger: "change"}
                    ]
                },
                platformRules: {
                    platformId: [
                        {required: true, message: "请选择自助平台", trigger: "change"}
                    ],
                    userName: [
                        {required: true, message: "请输入账号", trigger: "change"}
                    ],
                    password: [
                        {required: true, message: "请输入密码", trigger: "change"}
                    ]

                },
                editType: 0,
                editTypeMap: {
                    0: "新增往来单位",
                    1: "编辑往来单位",
                    2: "关联自助平台"
                },
                corpTypeList: [
                    {
                        value: 1,
                        label: "客户"
                    },
                    {
                        value: 2,
                        label: "供应商"
                    },
                    {
                        value: 4,
                        label: "特殊往来"
                    }
                ],
                coryTypeArr: {
                    1: "客户",
                    2: "供应商",
                    4: "特殊往来"
                }
            };
        },

        methods: {
            onReset() {
                this.$router.push({
                    path: ""
                });
                this.query = {
                    key: "",
                    customerId: this.$store.getters.customerId,
                    page: 1,
                    limit: 20
                };
                this.getList();
            },
            getList() {
                this.loading = true;
                getUnitMaintain(this.query)
                    .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;
                    });
            },
            //获取自助平台数据
            getPlatformList() {
                this.loading = true;
                getPlatform()
                    .then((response) => {
                        this.loading = false;
                        this.platformList = response.data.list || [];
                    })
                    .catch(() => {
                        this.loading = false;
                        this.platformList = [];
                    });
            },
            deleteUnit(data) {
                this.loading = true;
                let tquery = {
                    id: data.id + ""
                };

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

            cancelDialog() {
                this.editDialogVisible = false;
                this.editLoginVisible = false;
            },

            handleModifyClick(row) {
                this.editType = 1;
                this.editDialogVisible = true;
                this.editQuery = row;
            },
            handleLinkClick(row) {
                if (row.platformId != null) {
                    //已经绑定过
                    this.$confirm("是否需要重新关联自助平台?", "提示", {
                        confirmButtonText: "确定",
                        cancelButtonText: "取消",
                        type: "warning"
                    }).then(() => {
                        this.editType = 2;
                        this.editLoginVisible = true;
                        this.editLogin = row;
                    }).catch(() => {
                    });
                } else {
                    this.editType = 2;
                    this.editLoginVisible = true;
                    this.editLogin = row;
                }
            },
            handleAddClick() {
                this.editType = 0;
                this.editDialogVisible = true;
                this.editQuery = {
                    unitId: null,
                    thirdId: null,
                    name: null,
                    spell: null,
                    creditNo: null
                };
                var timestamp3 = new Date().getTime();
                this.editQuery.unitId = timestamp3;
            },

            change() {
                var pinyin = require("pinyin");
                var py = pinyin(this.editQuery.name, {
                    style: pinyin.STYLE_FIRST_LETTER, // 设置拼音风格
                    heteronym: true
                });
                var str = "";
                py.forEach((item) => {
                    str = str + item[0];
                });
                this.editQuery.pinyinCode = str;
            },

            formSubmit() {
                this.$refs["editQuery"].validate((valid) => {
                    if (valid) {
                        if (this.editType == 0) {
                            addUnit(this.editQuery)
                                .then((response) => {
                                    if (response.code == 20000) {
                                        this.getList();
                                        this.$message({
                                            type: "success",
                                            message: "添加成功"
                                        });
                                        this.cancelDialog();
                                    } else {
                                        this.$message.error(response.message);
                                    }
                                })
                                .catch(() => {
                                });
                        } else {
                            modifyUnit(this.editQuery)
                                .then((response) => {
                                    if (response.code == 20000) {
                                        this.getList();
                                        this.$message({
                                            type: "success",
                                            message: "修改成功"
                                        });
                                        this.cancelDialog();
                                    } else {
                                        this.$message.error(response.message);
                                    }
                                })
                                .catch(() => {
                                });
                        }
                    }
                });
            },
            intentPlatform(value) {
                this.editPlatfromQuery.id = value;
            },
            deleteDialog(rowId) {
                this.$confirm("此操作将永久删除该往来单位信息, 是否继续?", "提示", {
                    confirmButtonText: "确定",
                    cancelButtonText: "取消",
                    type: "warning"
                })
                    .then(() => {
                        this.deleteUnit(rowId);
                    })
                    .catch(() => {
                    });
            },
            linkSubmit() {
                this.$refs["editLogin"].validate((valid) => {
                    if (valid) {
                        linkPlatform(this.editLogin)
                            .then((response) => {
                                if (response.code == 20000) {
                                    this.getList();
                                    this.$message({
                                        type: "success",
                                        message: "关联成功"
                                    });
                                    this.cancelDialog();
                                } else {
                                    this.$message.error(response.message);
                                }
                            })
                            .catch(() => {
                            });

                    }
                });
            },

            exportTxt() {
            },

            handleSelectionChange(val) {
                console.log("----" + val);
                this.multipleSelection = val;
            },

            handleCurrentChange(val) {
                this.query.page = val;
                this.getList();
            }
        },
        mounted() {
        },
        created() {
            this.getList();
            this.getPlatformList();
            var pinyin = require("pinyin");
            console.log(
                pinyin("中心", {
                    style: pinyin.STYLE_FIRST_LETTER, // 设置拼音风格
                    heteronym: true
                })
            );
        }
    };
</script>

<style>


</style>
