import {
    listStation,
    getStation,
    delStation,
    listStationClassify,
    addStation,
    updateStation,
    getFirstLevelInfo,
    getSecondaryLevelInfo,
    updatePicture,
    nurseStationFriends
} from "@/api/system/station";
import stationAcatar from "../stationAvatar/index.vue";
import { getListByUser } from "@/api/system/userlist.js";
import { getToken } from "@/utils/auth";
import editor from "@/components/Editor";
export default {
    components: { stationAcatar, editor },
    name: "Station",
    data() {
        // var checkMobile = (rule, value, cb) => {
        //     // 验证手机号的正则表达式
        //     const regMobile =
        //         /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57]|19[0-9])[0-9]{8}$/;
        //     if (regMobile.test(value)) {
        //         return cb();
        //     }
        //     cb(new Error("请输入正确的联系电话"));
        // };
        // 验证手机号的规则
        // var checkMobile2 = (rule, value, cb) => {
        //     // 验证手机号的正则表达式
        //     const regMobile =
        //         /^(0|86|17951)?(13[0-9]|15[012356789]|17[678]|18[0-9]|14[57]|19[0-9])[0-9]{8}$/;
        //     if (!value) {
        //         //所以当没有值的时候，我们直接callback，让他不校验直接执行下一步
        //         return cb();
        //     } else {
        //         if (regMobile.test(value)) {
        //             return cb();
        //         } else {
        //             cb(new Error("请输入正确的联系电话"));
        //         }
        //     }
        // };
        return {
            imgsurl: { pictureUrlList: [] },
            imageUrl: "",
            imageUrl2: "",
            imgtwo: "",
            imgone: "",
            // 用户导入参数
            upload: {
                // 是否显示弹出层（用户导入）
                open: false,
                // 弹出层标题（用户导入）
                title: "",
                // 是否禁用上传
                isUploading: false,
                // 设置上传的请求头部
                headers: { Authorization: "Bearer " + getToken() },
                // 上传的地址
                url: process.env.VUE_APP_BASE_API +
                    "/system/station/insertNurseStationImportList",
            },
            //护理类型
            nurseTypeCode: "nurse_type_code",
            nurseStationTypelist: [],
            nurseStationType2: null,
            // 遮罩层
            loading: true,
            // 选中数组
            ids: [],
            // 非单个禁用
            single: true,
            // 非多个禁用
            multiple: true,
            // 显示搜索条件
            showSearch: true,
            // 总条数
            total2: 0,
            classifytotal: 0,
            //所属标签
            looknurseStationLabel: [{
                labelDescription: "",
                sort: "",
                idd: 1,
            },],
            // 护理站信息表格数据
            stationList: [{
                sysAreaVOList: [{
                    provinceName: null,
                    cityName: null,
                    streetName: null,
                },],
            },],
            nurseStationlist: [],
            // 弹出层标题
            title: "",
            // 是否显示弹出层
            open: false,
            Classifyshow: false,
            nurseStationFriendslist: {
                img: undefined
            },
            nurseStationFriendsshow: false,
            afternoonOpenStartTimeStr: "",
            afternoonOpenEndTimeStr: "",
            //权限查询
            getListByUserquery: {
                pageNum: 1,
                pageSize: 10,
            },
            // 表单参数
            form: {
                nurseStationClassifyIds: [],
            },
            idd: 1,
            provincelist: [],
            arealist: [],
            citylist: [],
            streetlist: [],
            classifylist: [],

            classifyquery: {
                pageNum: 1,
                pageSize: 10,
                classifyCode: "",
                classifyName: "",
            },
            resid: null,
            // 表单校验
            rules: {

                // morningOpenStartTime: [
                //     { required: true, message: "请选择上午营业时间", trigger: "blur" },
                // ],
                // afternoonOpenStartTimeStr: [
                //     { required: true, message: "请选择下午营业时间", trigger: "blur" },
                // ],
                agencyIntroduce: [
                    { required: true, message: "请输入护理站简介", trigger: "blur" },
                ],
                stationIntroducePcitureUrl: [
                    { required: true, message: "请上传护理站简介头像", trigger: "blur" },
                ],
                stationPictureUrl: [
                    { required: true, message: "请上传护理站头像", trigger: "blur" },
                ],
                nurseStationDescription: [
                    { required: true, message: "护理站总概述不能为空", trigger: "blur" },
                ],
                phone: [{
                    required: true,
                    // validator: checkMobile,
                    trigger: "blur",
                    message: "请输入手机号",
                },],

                dutyPhone: [{
                    // validator: checkMobile2,
                    trigger: "blur",
                    message: "请输入联系电话",
                },],
                sort: [{ required: true, message: "排序不能为空", trigger: "blur" }],
                address: [{ required: true, message: "地址不能为空", trigger: "blur" }],
                longitude: [
                    { required: true, message: "经度不能为空", trigger: "blur" },
                ],
                latitude: [
                    { required: true, message: "纬度不能为空", trigger: "blur" },
                ],
                areaCode: [
                    { required: true, message: "所属区域不能为空", trigger: "blur" },
                ],
                nurseStationName: [
                    { required: true, message: "护理站名称不能为空", trigger: "blur" },
                ],
                nurseStationType: [
                    { required: true, message: "请选择护理站类型", trigger: "blur" },
                ],
            },

            checkedDataList: [],// 选择的护理机构分类
            loadingtext: "加载中"
        };
    },
    created() {
        this.getaddress();
        this.info();
        this.classifylistInfo();
    },
    methods: {
        GenerateQRcode(row) {
            this.loadingtext = "生成中";
            this.loading = true;
            this.nurseStationFriendslist = row;
            nurseStationFriends(row.id).then(res => {
                this.nurseStationFriendslist.img =
                    process.env.VUE_APP_BASE_API + res.msg;
                this.nurseStationFriendsshow = true;
                this.loading = false;
            });
        },
        imgs(item) {
            this.imgsurl.pictureUrlList.push(item);
        },
        imgUrl(imgUrl) {
            this.form.stationPictureUrl = imgUrl;
        },
        imgUrl2(imgUrl) {
            this.form.stationIntroducePcitureUrl = imgUrl;
        },
        delnurseStationLabelList(index, item) {
            // this.looknurseStationLabel.splice(index,1)
            if (this.looknurseStationLabel.length === 1) {
                this.looknurseStationLabel = [{
                    labelDescription: "",
                    sort: "",
                    idd: 1,
                },];
            } else {
                this.looknurseStationLabel.splice(index, 1);
            }
        },
        addnurseStationLabelList() {
            if (this.looknurseStationLabel.length == 5) {
                this.$message.error("最多只能5条");
            } else {
                this.idd++;
                var obj = {
                    labelDescription: "",
                    sort: "",
                    idd: this.idd,
                };
                this.looknurseStationLabel.push(obj);
            }
        },
        //点击街道
        clickstreet(item) {
            this.form.areaCode = item.areaCode;
        },
        //点击区县城
        clickarea(item) {
            this.form.areaCode = "";
            this.form.streetCode = "";
            getSecondaryLevelInfo(item.id).then((res) => {
                this.streetlist = res.data;
            });
        },
        //点击市
        clickcity(item) {
            this.form.regionName = "";
            this.form.areaCode = "";
            this.form.streetCode = "";
            getSecondaryLevelInfo(item.id).then((res) => {
                this.arealist = res.data;
            });
        },
        //点击省
        province(item) {
            this.form.cityName = "";
            this.form.regionName = "";
            this.form.areaCode = "";
            this.form.streetCode = "";
            getSecondaryLevelInfo(item.id).then((res) => {
                this.citylist = res.data;
            });
        },
        /** 获取省列表 */
        getaddress() {
            getFirstLevelInfo().then((res) => {
                this.provincelist = res.data;
            });
        },
        getList() {
            this.info();
        },

        // 取消按钮
        cancel() {
            var obj = { pictureUrlList: [] };
            if (this.imgone != this.form.stationIntroducePcitureUrl) {
                obj.pictureUrlList.push(this.form.stationIntroducePcitureUrl);
            }
            if (this.imgtwo != this.form.stationPictureUrl) {
                obj.pictureUrlList.push(this.form.stationPictureUrl);
            }
            if (obj.pictureUrlList.length > 0) {
                updatePicture(obj).then((res) => { });
            }
            if (this.imgsurl.pictureUrlList.length > 0) {
                updatePicture(this.imgsurl).then((res) => { });
            }
            this.imgsurl = { pictureUrlList: [] };
            this.open = false;
            this.reset();
            this.arealist = []
            this.citylist = []
            this.streetlist = []
        },
        // 表单重置
        reset() {
            this.loadingtext = "加载中";
            this.nurseStationType2 = [];
            this.form = {
                id: null,
                areaCode: null,
                nurseStationCode: null,
                nurseStationName: null,
                nurseStationType: null,
                agencyIntroduce: null,
                nurseStationDescription: null,
                longitude: null,
                latitude: null,
                phone: null,
                address: null,
                dutyPerson: null,
                dutyPhone: null,
                stationPictureUrl: null,
                stationIntroducePcitureUrl: null,
                sort: null,
                nurseStationLabelList: [],
                streetCode: null,
                openingHoursDescribe: null,
                afternoonOpenStartTimeStr: "00:00:00", //下午开始
                afternoonOpenEndTimeStr: "00:00:00", //下午结束
                morningOpenEndTimeStr: "00:00:00", //上午结束
                morningOpenStartTimeStr: "00:00:00", //上午开始
                nurseStationClassifyIds: [],
                classifyNameList: '请选择护理站所属机构分类',
            };
            this.resetForm("form");
        },
        //护理机构分类
        clickinnerVisible() {
            this.classifylistInfo();
            // 回显数据
            this.checkedDataList = JSON.parse(JSON.stringify(this.form.nurseStationClassifyIds));

            this.Classifyshow = true;
        },

        classifylistcancel() {
            this.classifyquery = {
                pageNum: 1,
                pageSize: 10,
                classifyCode: "",
                classifyName: "",
            };
            this.classifylistInfo();
        },
        // 设置已选数据
        setCheckedData(e) {
            // 若已存在id 则为删除
            if (this.checkedDataList.find(el => el == e.id)) {
                this.checkedDataList = this.checkedDataList.filter(ele => ele != e.id)
            } else {
                // 不存在 添加进id
                this.checkedDataList.push(e.id);
            }
        },
        // 完成选择
        choiceclassify() {
            this.form.nurseStationClassifyIds = JSON.parse(JSON.stringify(this.checkedDataList));
            // 根据id获取到所有name
            if (this.form.nurseStationClassifyIds.length == 0) {
                this.form.classifyNameList = '请选择护理站所属机构分类'
            } else {
                this.form.classifyNameList = "";
                this.form.nurseStationClassifyIds.forEach(f => {
                    let classify = this.classifylist.find(d => d.id == f)
                    if (!classify)
                        return;
                    this.form.classifyNameList += classify.classifyName + ","
                })
                this.form.classifyNameList = this.form.classifyNameList.substring(0, this.form.classifyNameList.length - 1)
            }
            this.cancelClassifyshow();
        },
        /** 查询护理机构分类信息列表 */
        classifylistInfo() {
            listStationClassify(this.classifyquery).then((response) => {
                this.classifylist = response.rows;
                this.classifytotal = response.total;
                this.loading = false;
            });
        },
        cancelClassifyshow() {
            // this.classifylistInfo();
            this.Classifyshow = false;

        },
        //护理站列表
        info() {
            this.loading = true
            getListByUser(this.getListByUserquery).then((res) => {
                this.nurseStationlist = res.rows;
                this.total2 = res.total;
                this.loading = false
            });
        },
        handleQuery() {
            this.loading = true;
            this.getListByUserquery.pageNum = 1;
            this.info();
        },
        /** 重置按钮操作 */
        resetQuery() {
            this.getListByUserquery = {
                pageNum: 1,
                pageSize: 10,
                areaCode: null,
                userId: null,
                nurseStationCode: null,
                nurseStationName: null,
                nurseStationType: null,
                agencyIntroduce: null,
                nurseStationDescription: null,
                longitude: null,
                latitude: null,
                phone: null,
                address: null,
                dutyPerson: null,
                dutyPhone: null,
                stationPictureUrl: null,
                sort: null,
            };
            this.resetForm("queryForm");
            this.handleQuery();
        },
        // 多选框选中数据
        handleSelectionChange(selection) {
            this.ids = selection.map((item) => item.id);
            this.single = selection.length !== 1;
            this.multiple = !selection.length;
        },
        /** 新增按钮操作 */
        handleAdd() {
            this.reset();
            this.open = true;
            this.looknurseStationLabel = [{
                labelDescription: "",
                sort: "",
                idd: 1,
            },];
            this.title = "添加护理站信息";
        },
        /** 修改按钮操作 */
        handleUpdate(row) {
            this.reset();
            this.loading = true;
            const id = row.id || this.ids;
            getStation(id).then((response) => {
                if (response.data.nurseClassifyInfoList) {
                    response.data.nurseStationClassifyIds = []
                    response.data.nurseClassifyInfoList.forEach(e => {
                        response.data.nurseStationClassifyIds.push(e.id)
                    })
                }
                this.form = response.data;
                this.form.streetCode = this.form.streetName;
                this.imgone = this.form.stationIntroducePcitureUrl;
                this.imgtwo = this.form.stationPictureUrl;
                this.looknurseStationLabel = response.data.nurseStationLabel;
                this.open = true;
                this.loading = false;
            });
        },
        /** 提交按钮 */
        submitForm() {
            if (this.form.afternoonOpenStartTime) {
                this.form.afternoonOpenStartTimeStr = this.form.afternoonOpenStartTime
            } else {
                this.form.afternoonOpenStartTimeStr = "00:00:00"
            }
            if (!this.form.afternoonOpenEndTime) {
                this.form.afternoonOpenEndTimeStr = "00:00:00"
            } else {
                this.form.afternoonOpenEndTimeStr = this.form.afternoonOpenEndTime
            }
            if (!this.form.morningOpenStartTime) {
                this.form.morningOpenStartTimeStr = "00:00:00"
            } else {
                this.form.morningOpenStartTimeStr = this.form.morningOpenStartTime
            }
            if (!this.form.morningOpenEndTime) {
                this.form.morningOpenEndTimeStr = "00:00:00"
            } else {
                this.form.morningOpenEndTimeStr = this.form.morningOpenEndTime
            }
            this.form.nurseStationLabelList = this.looknurseStationLabel;
            this.form.nurseStationType = this.nurseStationType2;
            this.$refs["form"].validate((valid) => {
                if (valid) {
                    this.form.areaCode = Number(this.form.areaCode);
                    this.form.nurseStationType = this.nurseStationType2.join(",");
                    if (this.form.id != null) {
                        updateStation(this.form).then((response) => {
                            var obj = { pictureUrlList: [] };
                            if (this.imgone != this.form.stationIntroducePcitureUrl) {
                                obj.pictureUrlList.push(this.imgone);
                            }
                            if (this.imgtwo != this.form.stationPictureUrl) {
                                obj.pictureUrlList.push(this.imgtwo);
                            }
                            this.imgsurl = { pictureUrlList: [] };
                            if (obj.pictureUrlList.length > 0) {
                                updatePicture(obj).then((res) => { });
                            }
                            if (response.code == 200) {
                                this.$modal.msgSuccess("修改成功");
                                this.open = false;
                                this.getList();
                            }
                        });
                    } else {
                        addStation(this.form).then((response) => {
                            if (response.code == 200) {
                                this.$modal.msgSuccess("新增成功");
                                this.open = false;
                                this.getList();
                            } else {
                                this.form.nurseStationType = obj;
                            }
                        });
                    }
                }
            });
        },
        /** 删除按钮操作 */
        handleDelete(row) {
            const ids = row.id || this.ids;
            this.$modal
                .confirm("是否确认删除此护理站信息？")
                .then(function () {
                    return delStation(ids);
                })
                .then(() => {
                    var obj = { pictureUrlList: [] };
                    obj.pictureUrlList.push(row.stationIntroducePcitureUrl);
                    obj.pictureUrlList.push(row.stationPictureUrl);
                    if (obj.pictureUrlList.length > 0) {
                        updatePicture(obj).then((res) => { });
                    }
                    this.getList();
                    this.$modal.msgSuccess("删除成功");
                })
                .catch(() => { });
        },
        /** 导出按钮操作 */
        handleExport() {
            this.download(
                "system/station/export", {
                ...this.getListByUserquery,
            },
                `station_${new Date().getTime()}.xlsx`
            );
        },
        /** 导入按钮操作 */
        handledata() {
            this.upload.title = "护理站信息导入";
            this.upload.open = true;
        },
        /** 下载模板操作 */
        importTemplate() {
            this.download(
                "/system/station/downloadTemplate?fileType=nurseStation", {},
                `护理站信息导入模板.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;
        },
    },
};