import {
    listPerson,
    getPerson,
    delPerson,
    addPerson,
    updatePerson,
    stationList,
    StationDepartmentList,
    getNurseStationPersonCheck,
    updateNurseStationPersonChecks
} from "@/api/system/person";
import { getToken } from "@/utils/auth";
import { getListByUser } from "@/api/system/userlist.js";
import stationAcatar from "../stationAvatar/index.vue";
export default {
    components: { stationAcatar },
    name: "Person",
    data() {
        // 验证手机号的规则
        var checkMobile = (rule, value, cb) => {
            // 验证手机号的正则表达式
            // const regMobile =
            //     /^((0\d{2,3}(-)?\d{7,8})|(13[0-9]|14[0-9]|15[0-9]|16[2567]|17[0-9]|18[0-9]|19[0-9])+\d{8})$/;;
            const isPhone = /^1([38][0-9]|4[014-9]|[59][0-35-9]|6[2567]|7[0-8])\d{8}$/ //11位合法手机号码
            const isMob0 = /0\d{2,3}\d{7,8}/ //不带-的座机：02985111752
            const isMob1 = /^([0-9]{3,4}-)?[0-9]{7,8}$/ //带一个-：029-85111752
            const isMob2 = /^([0-9]{3,4}-)?[0-9]{7,8}$/ //带二个-：029-8511-1752
            const isMob3 = /^\d{3,4}-\d{3,4}-\d{3,4}$/; //带三个-： 0752-250-520
            if (isPhone.test(value) || isMob0.test(value) || isMob1.test(value) || isMob2.test(value) || isMob3.test(value)) {
                return cb();
            }
            cb(new Error("请输入正确的联系电话"));
        };
        // 验证手机号的规则
        var checkMobile2 = (rule, value, cb) => {
            // 验证手机号的正则表达式
            // const regMobile =
            //     /^((0\d{2,3}(-)?\d{7,8})|(13[0-9]|14[0-9]|15[0-9]|16[2567]|17[0-9]|18[0-9]|19[0-9])+\d{8})$/;;
            const isPhone = /^1([38][0-9]|4[014-9]|[59][0-35-9]|6[2567]|7[0-8])\d{8}$/ //11位合法手机号码
            const isMob1 = /0\d{2,3}\d{7,8}/ //不带-的座机：02985111752
            const isMob2 = /^([0-9]{3,4}-)?[0-9]{7,8}$/ //带一个-：029-85111752
            if (isPhone.test(value) || isMob1.test(value) || isMob2.test(value)) {
                return cb();
            }
            cb(new Error("请输入正确的联系电话"));
        };
        return {
            baseurl: process.env.VUE_APP_BASE_API,
            //男女选择
            sexs: [{
                    label: "男",
                    value: "MALE",
                },
                {
                    label: "女",
                    value: "FEMALE",
                },
            ],
            positionalTitleLevellist: [{
                label: "初级",
                value: "PRIMARY_LEVEL",
            }, {
                label: "中级",
                value: "MIDDLE_LEVEL",
            }, {
                label: "高级",
                value: "HIGH_LEVEL",
            }],
            modifyCheckStatuslist: [{
                label: "已审核",
                value: "CHECKED",
            }, {
                label: "未审核",
                value: "NOT_CHECK",
            }],
            nursePersonTypes: [{
                    label: "护士",
                    value: "NURSE",
                },
                {
                    label: "护理师",
                    value: "NURSE_TEACHER",
                }
            ],
            innerVisiblexg: false,
            innerVisiblexg2: false,
            // 遮罩层
            loading: true,
            // 用户导入参数
            upload: {
                // 是否显示弹出层（用户导入）
                open: false,
                // 弹出层标题（用户导入）
                title: "",
                // 是否禁用上传
                isUploading: false,
                // 设置上传的请求头部
                headers: { Authorization: "Bearer " + getToken() },
                // 上传的地址
                url: process.env.VUE_APP_BASE_API +
                    "/system/person/insertNurseStationPersonImportList",
            },
            // 选中数组
            ids: [],
            // 非单个禁用
            single: true,
            // 非多个禁用
            multiple: true,
            // 显示搜索条件
            showSearch: true,
            // 总条数
            total: 0,
            departtotal: 0,
            nursetotal: 0,
            // 护理站人员信息表格数据
            nurseStationPersonList: [],
            // 护理站名称
            stationLists: [],
            // 所属科室
            StationDepartmentLists: [],
            nurseStationlist: [],
            stationid: "",
            stationid2: "",
            departid: "",
            nurseStationName: "请选择所属护理站",
            departmentName: "请选择所属科室",
            // 弹出层标题
            title: "",
            title2: "",
            title3: "",
            //  添加弹出层修改弹出层
            open: false,
            templeopen: false,
            //权限查询
            queryParams: {
                pageNum: 1,
                pageSize: 10,
                nurseStationId: null,
                departmentCode: null,
                userId: null,
                departmentName: null,
                nursePersonCode: null,
                nursePersonName: null,
                nursePersonType: null,
                nurseStationName: null,
                phone: null,
                address: null,
            },
            queryParams2: {
                pageNum: 1,
                pageSize: 10,
                nurseStationName: null,
                departmentName: null,
                id: null,
                nurseStationId: null,
            },
            queryParams3: {
                pageNum: 1,
                pageSize: 10,
                nurseStationName: null,
                id: null,
                departmentCode: null,
                departmentName: null,
                nurseStationId: null,
            },
            nurseStationqueryParams: {
                pageNum: 1,
                pageSize: 10,
            },
            StationqueryParams: {
                pageNum: 1,
                pageSize: 10,
            },
            // 表单参数
            form: {},
            index: "",
            // 表单校验
            rules: {
                geniusItem: [
                    { required: true, message: "请输入擅长项目", trigger: "blur" },
                ],
                birthDate: [
                    { required: true, message: "请选择出生日期", trigger: "blur" },
                ],
                positionalTitleLevel: [
                    { required: true, message: "请选择职称级别", trigger: "blur" },
                ],
                nurseStationId: [
                    { required: true, message: "请选择所属护理站", trigger: "blur" },
                ],
                departmentName: [
                    { required: true, message: "所属科室不能为空", trigger: "blur" },
                ],
                nursePersonName: [
                    { required: true, message: "护理人姓名不能为空", trigger: "blur" },
                ],
                nursePersonType: [
                    { required: true, message: "护理人职称不能为空", trigger: "blur" },
                ],
                sex: [{ required: true, message: "性别不能为空", trigger: "blur" }],
                phone: [{
                    required: true,
                    validator: checkMobile2,
                    message: "",
                    trigger: "blur",
                }, ],
                address: [
                    { required: true, message: "居住地址不能为空", trigger: "blur" },
                ],
            },
            homenumber: null,
            idd: 1,
        };
    },
    created() {
        this.getList();
    },
    methods: {
        //删除Certificate
        delCertificate(index) {
            if (this.form.nurseStationPersonCertificateList.length == 1) {
                this.$message.error("不可全部删除");
            } else {
                this.form.nurseStationPersonCertificateList.splice(index, 1);
            }
        },
        //添加Certificate
        addCertificate() {
            this.idd++;
            var obj = {
                certificateName: null,
                certificateUrl: null,
                idd: this.idd,
                sort: null,
            };
            if (this.form.nurseStationPersonCertificateList.length == 5) {
                this.$message.error("最多只能5条");
            } else {
                this.form.nurseStationPersonCertificateList.push(obj);
            }
        },
        imgUrl(imgUrl) {},
        //接收图片所属的item
        imgclassifyItem(item) {
            let items = JSON.parse(item);
            if (items.idd && !items.id) {
                this.form.nurseStationPersonCertificateList.forEach((e) => {
                    if (e.idd == items.idd) {
                        e.certificateUrl = items.certificateUrl;
                    }
                });
            } else if (!items.idd && items.id) {
                this.form.nurseStationPersonCertificateList.forEach((e) => {
                    if (e.id == items.id) {
                        e.certificateUrl = items.certificateUrl;
                    }
                });
            }
        },
        // // 所属科室按钮
        departclick2() {
            if (this.form.nurseStationId != null) {
                this.getList3();
                this.departid2 = this.form.departmentCode;
                this.innerVisiblexg2 = true;

            } else {
                this.$message.error('请先选择所属护理站');
            }
        },
        //修改护理站按钮
        departclickxg() {
            this.info();
            this.stationid2 = this.form.nurseStationId;
            this.innerVisiblexg = true;
            // this.index = index;
        },
        // 修改护理站
        nurseclick2(row) {
            if (this.homenumber) {
                this.queryParams.nurseStationName = row.nurseStationName;
                this.queryParams.nurseStationId = row.id;
            } else {
                this.nurseStationName = row.nurseStationName;
                this.stationid2 = row.id;
                this.form.nurseStationId = row.id;
                this.queryParams3.nurseStationId = row.id;
                this.form.nursename = row.nurseStationName;
            }
            this.innerVisiblexg = false;
        },
        // 护理站名称
        nurseclick(row) {
            this.nursename = row.nurseStationName;
            this.stationid = row.id;
            this.form.nurseStationId = row.id;
            this.queryParams3.nurseStationId = row.id;
            this.form.nursename = row.nurseStationName;
        },
        // 所属科室
        StationDepartmentclick2(row) {
            this.departmentName = row.departmentName;
            this.form.departmentCode = row.departmentCode;
            this.departid2 = row.departmentCode;
            this.form.departmentName = row.id;
            this.innerVisiblexg2 = false;
        },
        //主页面打开护理站列表
        ParamsStation(item) {
            this.info();
            this.innerVisiblexg = true
            this.title2 = '选择护理站'
            this.homenumber = item
            this.stationid2 = this.queryParams.nurseStationId;
        },

        //护理站列表
        info() {
            this.loading = true;
            getListByUser(this.nurseStationqueryParams).then((res) => {
                this.nurseStationlist = res.rows;
                this.nursetotal = res.total;
                this.loading = false;
            });
        },
        /** 查询护理站人员信息列表 */
        getList() {
            // 护理站名称
            this.loading = true;
            listPerson(this.queryParams).then((response) => {
                response.rows.forEach(e => {
                    if (e.modifyCheckStatus == 'CHECKED') {
                        e.modifyCheckStatus = true
                    } else {
                        e.modifyCheckStatus = false
                    }
                })
                this.nurseStationPersonList = response.rows;
                this.total = response.total;
                this.loading = false;
            });
        },
        getList3() {
            this.loading = true;
            StationDepartmentList(this.queryParams3).then((res) => {
                this.StationDepartmentLists = res.rows;
                this.departtotal = res.total;
                this.loading = false;
            });
        },
        // 取消按钮
        cancel() {
            this.open = false;
            this.nurseStationName = "请选择所属护理站";
            this.departmentName = "请选择所属科室";
            this.reset();
        },
        // 表单重置
        reset() {
            this.form = {
                geniusItem: null,
                birthDate: null,
                id: null,
                nurseStationId: null,
                departmentCode: null,
                userId: null,
                nursePersonCode: null,
                nursePersonName: null,
                nursePersonType: null,
                phone: null,
                address: null,
                createBy: null,
                createTime: null,
                updateBy: null,
                updateTime: null,
                nurseStationName: "请选择所属护理站",
                departmentName: "请选择所属科室",
                nurseStationPersonCertificateList: [{
                    certificateName: null,
                    certificateUrl: null,
                    sort: null,
                    idd: this.idd,
                }]
            };
            this.resetForm("form");
        },
        /** 搜索按钮操作 */
        handleQuery2() {
            this.nurseStationqueryParams.pageNum = 1;
            this.info();
        },
        // 修改护理站弹框的搜索
        handleQuery4() {
            this.nurseStationqueryParams.pageNum = 1;
            this.info();
        },
        //修改所属科室
        handleQuery3() {
            this.queryParams3.pageNum = 1;
            this.getList3();
        },
        handleQuery() {
            this.queryParams.pageNum = 1;
            this.getList();
        },
        /** 重置按钮操作 */
        addcancel() {
            this.innerVisiblexg = false;
            this.resetQuery4();
        },
        departcancel() {
            this.innerVisiblexg2 = false;
            this.resetQuery3();
        },
        resetQuery2() {
            this.resetForm("queryForm");
            this.nurseStationqueryParams = {
                pageNum: 1,
                pageSize: 10,
            };
            this.handleQuery2();
        },
        resetQuery4() {
            this.resetForm("queryForm");
            this.nurseStationqueryParams = {
                pageNum: 1,
                pageSize: 10,
            };
            this.handleQuery4();
        },
        resetQuery3() {
            this.queryParams3.pageNum = 1;
            this.queryParams3.pageSize = 10;
            this.queryParams3.departmentName = null;
            this.queryParams3.departmentCode = null;
            this.handleQuery3();
        },
        resetQuery() {
            this.resetForm("queryForm");
            this.queryParams = {
                pageNum: 1,
                pageSize: 10,
                nurseStationId: null,
                departmentCode: null,
                userId: null,
                nursePersonCode: null,
                nursePersonName: null,
                nursePersonType: null,
                phone: null,
                address: null,
            };
            this.handleQuery();
        },
        // 多选框选中数据
        handleSelectionChange(selection) {
            this.ids = selection.map((item) => item.id);
            this.single = selection.length !== 1;
            this.multiple = !selection.length;
        },
        /** 新增按钮操作 */
        handleAdd() {
            this.queryParams3.nurseStationId = null
            this.reset();
            this.open = true;
            this.title = "添加护理站人员信息";
            this.title2 = "请选择所属护理站";
            this.title3 = "请选择科室";
            this.homenumber = null;
        },
        /** 修改按钮操作 */
        handleUpdate(row) {
            this.homenumber = null;
            const id = row.id || this.ids;
            getPerson(id).then((response) => {
                this.departmentName = response.data.departmentName;
                this.nurseStationName = response.data.nurseStationName;
                this.form = response.data;
                var obj = {
                    certificateName: null,
                    certificateUrl: null,
                    sort: null,
                    idd: this.idd
                };
                if (this.form.nurseStationPersonCertificateList.length == 0) {
                    this.form.nurseStationPersonCertificateList.push(obj);
                }
                this.queryParams3.nurseStationId = response.data.nurseStationId
                this.open = true;
                this.title = "修改护理站人员信息";
                if (this.departmentName == null && this.departmentName == undefined) {
                    this.departmentName = "请选择所属科室";
                } else {
                    this.departmentName = response.data.departmentName;
                }
            });
        },
        // 审核
        handshenhe(row) {
            getNurseStationPersonCheck(row.id).then(res => {
                this.form = res.data;
                this.templeopen = true;
            })
        },
        /** 提交按钮 */
        submitForm() {
            this.$refs["form"].validate((valid) => {
                if (valid) {
                    if (this.form.nurseStationPersonCertificateList.length > 0) {
                        this.form.nurseStationPersonCertificateList.forEach(e => {
                            if (!e.certificateName && !e.certificateUrl && !e.sort) {
                                this.form.nurseStationPersonCertificateList = this.form.nurseStationPersonCertificateList.filter(el => el != e)
                            }
                        })
                    }
                    if (this.form.id != null) {
                        updatePerson(this.form).then((response) => {
                            if (response.code == 200) {
                                this.$modal.msgSuccess("修改成功");
                                this.open = false;
                                this.getList();
                            }
                        });
                    } else {
                        addPerson(this.form).then((response) => {
                            if (response.code == 200) {
                                this.$modal.msgSuccess("新增成功");
                                this.open = false;
                                this.getList();
                                this.nurseStationName = "请选择所属护理站";
                                this.departmentName = "请选择所属科室";
                            }
                        });
                    }
                }
            });
        },
        // 审核提交
        templesubmit() {
            this.form.modifyCheckStatus = "CHECKED"
            this.form.positionalTitleLevel = this.form.positionalTitleLevelCheck
            this.form.geniusItem = this.form.geniusItemCheck
            updateNurseStationPersonChecks(this.form).then(res => {
                this.$modal.msgSuccess("审核成功");
                this.getList();
                this.templeopen = false
            })
        },
        templeopenfalse() {
            this.templeopen = false
        },
        /** 删除按钮操作 */
        handleDelete(row) {
            const ids = row.id || this.ids;
            this.$modal
                .confirm("是否确认删除护理站人员信息的数据项？")
                .then(function() {
                    return delPerson(ids);
                })
                .then(() => {
                    this.getList();
                    this.$modal.msgSuccess("删除成功");
                })
                .catch(() => {});
        },
        /** 导入按钮操作 */
        handleImport() {
            this.upload.open = true;
            this.upload.title = "护理站人员导入";
        },

        /** 下载模板操作 */
        importTemplate() {
            this.download(
                "/system/station/downloadTemplate?fileType=nurseStationPerson", {},
                `护理站人员基本信息导入模板.xlsx`
            );
        },

        // 提交上传文件
        submitFileForm() {
            this.$refs.upload.submit();
        },
        // 文件上传成功处理
        handleFileSuccess(response, file, fileList) {
            this.upload.open = false;
            this.upload.isUploading = false;
            this.$refs.upload.clearFiles();
            this.$alert(
                "<div style='overflow: auto;overflow-x: hidden;max-height: 70vh;padding: 10px 20px 0;'>" +
                response.msg +
                "</div>",
                "导入结果", { dangerouslyUseHTMLString: true }
            );
            this.getList();
        },
        // 文件上传中处理
        handleFileUploadProgress(event, file, fileList) {
            this.upload.isUploading = true;
        },

        /** 导出按钮操作 */
        handleExport() {
            this.download(
                "system/person/export", {
                    ...this.queryParams,
                },
                `person_${new Date().getTime()}.xlsx`
            );
        },
    },
};