cloud-server-management/src/main/webapp/static/modular/system/tSite/tSite.js
@@ -5,26 +5,33 @@
    id: "TSiteTable",   //表格id
    seItem: null,      //选中的条目
    table: null,
    layerIndex: -1
    layerIndex: -1,
    picture:"",
    fileUrl:"",
    img:"",
    plan:"",
    goodsPicArray:[],
    validateFields: {
    }
};
var objectType =$("#objectType").val()
/**
 * 初始化表格的列
 */
TSite.initColumn = function () {
    return [
        {field: 'selectItem', radio: true},
        {field: 'selectItem', checkbox: true},
        {title: '主键ID', field: 'id', visible: false, align: 'center', valign: 'middle'},
        {title: '省', field: 'insertTime', visible: true, align: 'center', valign: 'middle',width:'20%',
        {title: '省', field: 'province', visible: objectType==1?true:false, align: 'center', valign: 'middle',width:'20%',
        },
        {title: '市', field: 'name', visible: true, align: 'center', valign: 'middle',
        {title: '市', field: 'city', visible: objectType==1?true:false, align: 'center', valign: 'middle',
        },
        {title: '门店名称', field: 'insertUserId', visible: false, align: 'center', valign: 'middle'},
        {title: '场地类型', field: 'insertUser', visible: true, align: 'center', valign: 'middle',
        {title: '门店名称', field: 'storeName', visible: true, align: 'center', valign: 'middle'},
        {title: '场地类型', field: 'siteTypeName', visible: true, align: 'center', valign: 'middle',
        },
        {title: '场地名称', field: 'province', visible: true, align: 'center', valign: 'middle',
        {title: '场地名称', field: 'name', visible: true, align: 'center', valign: 'middle',
        },
        {title: '场地责任险有效期', field: 'lineNum', visible: true, align: 'center', valign: 'middle',
        {title: '场地责任险有效期', field: 'insuranceEndTime', visible: true, align: 'center', valign: 'middle',
        },
        {title: '状态', field: 'state', visible: true, align: 'center', valign: 'middle',
            formatter:function (data) {
@@ -47,149 +54,544 @@
        return true;
    }
};
TSite.oneChange = function (e) {
    var oneId=$(e).val();
    var ajax = new $ax(Feng.ctxPath + "/tCity/onChange", function(data){
        if(data!=null){
            if(language==1){
                var content='<option value="">选择市</option>';
            }else if(language==2){
                var content='<option value="">Choose your franchisee</option>';
            }else {
                var content='<option value="">Pilih franchisee Anda</option>';
/**
 * 上架
 */
TSite.onShelf = function () {
    if (this.check()){
        var selected = $('#' + this.id).bootstrapTable('getSelections');
        const data1 = {
            siteIds:[],
            type:null
        };
        selected.forEach(function(obj) {
            var id = obj.id;
            data1.siteIds.push(id);
        });
        data1.type = 1;
        $.ajax({
            url: Feng.ctxPath + "/tSite/changeState",
            type: "POST",
            contentType: "application/json", // 设置请求头的 Content-Type
            data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
            success: function(response) {
                Feng.success("上架成功!");
                TSite.search();
            },
            error: function(xhr, status, error) {
                var errorMessage = xhr.responseText ? xhr.responseText : "上架失败!";
                Feng.error("您的网络异常!");
            }
        });
    }
};
/**
 * 下架
 */
TSite.offShelf = function () {
    if (this.check()){
        var selected = $('#' + this.id).bootstrapTable('getSelections');
        const data1 = {
            siteIds:[],
            type:null
        };
        selected.forEach(function(obj) {
            var id = obj.id;
            data1.siteIds.push(id);
        });
        data1.type = 2;
        $.ajax({
            url: Feng.ctxPath + "/tSite/changeState",
            type: "POST",
            contentType: "application/json", // 设置请求头的 Content-Type
            data: JSON.stringify(data1), // 将数据转换为 JSON 字符串
            success: function(response) {
                Feng.success("下架成功!");
                TSite.search();
            },
            error: function(xhr, status, error) {
                var errorMessage = xhr.responseText ? xhr.responseText : "下架失败!";
                Feng.error("您的网络异常!");
            }
        });
    }
};
TSite.uploadFile = function(){
    var elementById = document.getElementById("uploadFile");
    var file = elementById.files[0];
    var formData = new FormData();
    formData.append('file',file);
        $.ajax({
            url: Feng.ctxPath + "/tCouponManage/uploadPic" ,
            type: "POST",
            data: formData,
            contentType: false, // 设置为false,让浏览器自动识别并设置请求头
            processData: false, // 设置为false,不处理发送的数据(因为FormData对象已经包含了文件数据)
            success: function (response) {
                TSite.fileUrl = response;
                console.log(TSite.fileUrl);
                Feng.success("文件上传成功");
            },
            error: function (xhr, status, error) {
                Feng.error("文件上传失败!" + error);
            }
        });
};
TSite.getChange = function(e){
    var oneId=$(e).val();
    var selectedValue = e.value;
    var citySelect = document.getElementById("cCode");
    var ajax = new $ax(Feng.ctxPath + "/tSite/getChange", function(data){
        if(data!=null){
            var content='<option value="">选择市</option>';
            $.each(data, function(k,v) {
                content += "<option value='"+v.code+"'>"+v.name+"</option>";
                content += "<option value='"+v.name+"'>"+v.name+"</option>";
            });
            $("#cCode").empty().append(content);
        }
    });
    if (selectedValue === ""){
        citySelect.innerHTML = '<option value="">请先选择省</option>';
    }
    ajax.set("province",oneId);
    ajax.start();
};
// 场地管理首页 选择对应的省市
// 传1是场地管理首页 传2是场地管理添加页面
TSite.oneChange = function (e) {
    var selectElement = document.getElementById('store');
    var startTime = document.getElementById('start-time');
    var endTime = document.getElementById('end-time');
    if (startTime!==null){
        startTime.disabled = true;
        endTime.disabled = true;
        selectElement.addEventListener('change',function () {
            if (selectElement.value !== ''){
                startTime.disabled = false;
                endTime.disabled = false;
            }else{
                startTime.disabled = true;
                endTime.disabled = true;
            }
        });
    }
    var province = $('#pCode option:selected').text();
    var val = $('#pCode option:selected').val();
    var citySelect = document.getElementById("cCode");
    var accountSelect = document.getElementById("account");
    var storeSelect = document.getElementById("store");
    var ajax = new $ax(Feng.ctxPath + "/tSite/getCity", function(data){
        if(data!=null){
                var content='<option value="">选择市</option>';
            $.each(data, function(k,v) {
                content += "<option value='"+v.city+"'>"+v.city+"</option>";
            });
            $("#cCode").empty().append(content);
        }
    });
    if (val === ""){
        citySelect.innerHTML = '<option value="">请先选择省</option>';
    }
    if (e===2){
        accountSelect.innerHTML = '<option value="">请先选择省/市</option>';
        storeSelect.innerHTML = '<option value="">请先选择省/市</option>';
    }
    if (val === ""){
        startTime.disabled = true;
        endTime.disabled = true;
    }
    ajax.set("province",province);
    ajax.start();
};
TSite.oneChangeNext = function (e) {
    var startTime = document.getElementById('start-time');
    var endTime = document.getElementById('end-time');
    var oneId=$(e).val();
    var citySelect = document.getElementById("account");
    var storeSelect = document.getElementById("store");
    var ajax = new $ax(Feng.ctxPath + "/tSite/accountChangeNext", function(data){
        if(data!=null){
            var content='<option value="">选择账号</option>';
            $.each(data, function(k,v) {
                content += "<option style='width: 300px' value='"+v.id+"'>"+v.name+"</option>";
            });
            $("#account").empty().append(content);
        }
    });
    if (oneId === ""){
        citySelect.innerHTML = '<option style="width: 300px" value="">请先选择省/市</option>';
        storeSelect.innerHTML = '<option style="width: 300px" value="">请先选择省/市</option>';
        startTime.disabled = true;
        endTime.disabled = true;
    }
    ajax.set("oneId",oneId);
    ajax.start();
    var ajax1 = new $ax(Feng.ctxPath + "/tSite/storeChangeNext", function(data){
        if(data!=null && data.length !== 0){
            var content='<option value="">选择门店</option>';
            $.each(data, function(k,v) {
                content += "<option style='width: 300px' value='"+v.id+"'>"+v.name+"</option>";
            });
            $("#store").empty().append(content);
        }else {
            storeSelect.innerHTML = '<option value="">当前所选市没有门店</option>';
}
    });
    ajax1.set("oneId",oneId);
    ajax1.start();
};
/**
 * 点击添加跨城站点管理
 * 跳转添加场地页面
 */
TSite.openAddTSite = function () {
    var index = layer.open({
        type: 2,
        title: language==1?'添加':(language==2?'Add':'Tambahkan'),
        title: "添加场地",
        area: ['100%', '100%'], //宽高
        fix: false, //不固定
        maxmin: true,
        content: Feng.ctxPath + '/tSite/tSite_add'
        content: Feng.ctxPath + '/tSite/add'
    });
    this.layerIndex = index;
};
/**
 * 打开查看跨城站点管理详情
 * 跳转锁定场地页面
 */
TSite.openTSiteDetail = function () {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: language==1?'编辑':(language==2?'Edit':'Edit'),
            area: ['100%', '100%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tSite/tSite_update/' + TSite.seItem.id
        });
        this.layerIndex = index;
    }
};
/**
 * 操作跨城站点管理
 */
TSite.opt = function (type) {
    if (this.check()) {
        var name = TSite.seItem.name;
        if (name == "" || name == null || name == undefined) {
            name = "该站点";
TSite.lock = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length >1 ){
        Feng.info("只能选择一个场地进行锁定!");
        } else {
            name = "【" + name + "】";
        }
        var str = "";
        var text = "请谨慎操作!";
        var title = "请谨慎操作!";
        if (1 == type){
            str = "删除";
            title = "您是否确认删除"+name+"?";
            text = "请谨慎操作,删除后数据无法恢复!";
        } else if (2 == type){
            str = "冻结";
            title = "您是否确认冻结"+name+"?";
        } else if (3 == type){
            str = "解冻";
            title = "您是否确认解冻"+name+"?";
        }
        if (1 == type){
            if (TSite.seItem.lineNum != "" && TSite.seItem.lineNum != null && TSite.seItem.lineNum > 0) {
                swal("删除失败", "该站点还有关联线路!", "warning");
                return;
            }
        }
        if(2 == type){
            if (TSite.seItem.state != 1) {
                swal("冻结失败", "【正常】状态下才能执行此操作!", "warning");
                return;
            }
        }
        if (3 == type){
            if (TSite.seItem.state != 2){
                swal("解冻失败", "【冻结】状态下才能执行此操作!", "warning");
                return;
            }
        }
        swal({
            title: title,
            text: text,
            type: "warning",
            showCancelButton: true,
            confirmButtonColor: "#DD6B55",
            confirmButtonText: str,
            closeOnConfirm: true
        }, function () {
            var ajax = new $ax(Feng.ctxPath + "/tSite/opt", function (data) {
                swal(str+"成功", "您已经"+str+"了" + name + "。", "success");
                TSite.table.refresh();
            }, function (data) {
                swal(str+"失败", data.responseJSON.message + "!", "warning");
        if (this.check()) {
            var index = layer.open({
                type: 2,
                title: "锁定场地",
                area: ['100%', '100%'], //宽高
                fix: false, //不固定
                maxmin: true,
                content: Feng.ctxPath + '/tSite/lockSite/' + TSite.seItem.id
            });
            ajax.set("tSiteId",TSite.seItem.id);
            ajax.set("optType", type);
            ajax.start();
        });
            this.layerIndex = index;
        }
    }
};
/**
 * 查询跨城站点管理列表
 * 打开场地管理查看详情
 */
TSite.openInfo = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length >1 ){
        Feng.info("只能选择一个问题进行编辑!");
    }else {
        if (this.check()) {
            var index = layer.open({
                type: 2,
                title: "查看详情",
                area: ['100%', '100%'], //宽高
                fix: false, //不固定
                maxmin: true,
                content: Feng.ctxPath + '/tSite/openInfoTSite/' + TSite.seItem.id
            });
            this.layerIndex = index;
        }
    }
};
/**
 * 打开场地管理编辑
 */
TSite.openEditTSite = function () {
    var selected = $('#' + this.id).bootstrapTable('getSelections');
    if(selected.length >1 ){
        Feng.info("只能选择一个问题进行编辑!");
    }else {
    if (this.check()) {
        var index = layer.open({
            type: 2,
            title: "编辑场地",
            area: ['100%', '100%'], //宽高
            fix: false, //不固定
            maxmin: true,
            content: Feng.ctxPath + '/tSite/openEditTSite/' + TSite.seItem.id
        });
        this.layerIndex = index;
    }
    }
};
/**
 * 关闭此对话框
 */
TSite.close = function() {
    parent.layer.close(window.parent.TSite.layerIndex);
}
var sh = ""; // 门店经营开始时间:小时
var sm = "";// 门店经营开始时间:分钟
var eh = "";// 门店经营结束时间:小时
var em = "";// 门店经营结束时间:分钟
TSite.addSubmit = function(){
    var data = {
        province:"",
        city:"",
        cityManagerId:"",
        storeId:"",
        siteTypeId:null,
        appointmentStartTime:"",
        appointmentEndTime:"",
        cashPrice:null,
        playPaiCoin:null,
        insuranceEndTime:"",
        name:"",
        insuranceImg:"",
        managementPlan:""
    };
    data.province            = $("#pCode").val()
    data.city                = $("#cCode").val()
    data.cityManagerId       = $("#account").val()
    data.storeId             = $("#store").val()
    data.siteTypeId          = $("#siteTypeId").val()
    data.appointmentStartTime= $("#start-time").val()
    data.appointmentEndTime  = $("#end-time").val()
    data.cashPrice           = $("#cashPrice").val()
    data.playPaiCoin         = $("#playPaiCoin").val()
    data.insuranceEndTime    = $("#insuranceEndTime").val()
    data.name                = $("#name").val()
    data.insuranceImg        = $("#img").val()
    data.managementPlan      = $('#courseVideo').val()
    var sh =data.appointmentStartTime.split(':')[0];
    var sm =data.appointmentStartTime.split(':')[1];
    var eh =data.appointmentEndTime.split(':')[0];
    var em =data.appointmentEndTime.split(':')[1];
    if($("#pCode").val()==''){
        Feng.info("请选择省")
        return;
    }
    if($("#cCode").val()==''){
        Feng.info("请选择市")
        return;
    }
    if($("#account").val()=='' ){
        Feng.info("请选择账号")
        return;
    }
    if($("#store").val()=='' ){
        Feng.info("请选择门店")
        return;
    }
    if($("#siteTypeId").val()=='' ){
        Feng.info("请选择场地类型")
        return;
    }
    if($("#name").val()==''){
        Feng.info("请输入场地名称")
        return;
    }
    if($("#start-time").val()=='' ){
        Feng.info("请输入可预约时间段 开始时间")
        return;
    }
    if($("#end-time").val()==''){
        Feng.info("请输入可预约时间段 结束时间")
        return;
    }
    if($("#cashPrice").val()==''){
        Feng.info("请输入现金价格")
        return;
    }
    if($("#playPaiCoin").val()==''){
        Feng.info("请输入玩湃币价格")
        return;
    }
    if($("#insuranceEndTime").val()==''){
        Feng.info("请输入场地责任险有效期")
        return;
    }
    if($("#img").val()==''){
        Feng.info("请上传场地责任有效期图片")
        return;
    }
    if($('#courseVideo').val()==''){
        Feng.info("请上传消防及应急管理方案")
        return;
    }
    var sTime = document.getElementById("start-time"); //获取输入的开始时间
    var eTime  = document.getElementById("end-time"); // 获取输入的结束时间
    var rStime = ""; //门店的经营开始时间
    var rEtime = ""; //门店的经营结束时间
    var selectedText = $('#store option:selected').text();
    $.ajax({
        url: Feng.ctxPath + "/tSite/getTime/" + selectedText,
        type: "GET",
        contentType: "application/json", // 设置请求头的 Content-Type
        success: function (response) {
            rStime = response.startTime;
            sh = rStime.split(':')[0];// 门店经营开始时间:小时
            sm = rStime.split(':')[1];// 门店经营开始时间:分钟
            rEtime = response.endTime;
            eh = rEtime.split(':')[0];// 门店经营结束时间:小时
            em = rEtime.split(':')[1];// 门店经营结束时间:分钟
            var start = sTime.value;
            var startHour = start.split(':')[0];  // 输入的可预约开始时间:小时
            var startMinute = start.split(':')[1];// 输入的可预约开始时间:分钟
            if (Number(sh)>Number(startHour)){
                Feng.error("预约的开始时间不应小于营业开始时间!")
                return false;
            }else if(Number(sh) === Number(startHour) ){
                if (Number(sm)>Number(startMinute)){
                    Feng.error("预约的开始时间不应大于营业开始时间!")
                    return false;
                }
            }else if (Number(eh)<Number(startHour)){
                Feng.error("预约的开始时间不应大于营业结束时间!")
                return false;
            }else if(Number(eh)===Number(startHour)){
                Feng.error("预约的开始时间不应大于等于营业结束时间!")
                return false;
            }
            var end = eTime.value;
            var endHour = end.split(':')[0];  // 输入的可预约结束时间:小时
            var endMinute = end.split(':')[1];// 输入的可预约结束时间:分钟
            if (Number(eh)<Number(endHour)){
                Feng.error("预约的结束时间不应大于营业结束时间!")
                return ;
            }else if(Number(eh) === Number(endHour) ){
                if (Number(em)<Number(endMinute)){
                    Feng.error("预约的开始时间不应大于开始营业时间!")
                    return ;
                }
            }else if(Number(sh)>Number(endHour)){
                Feng.error("预约的结束时间不应小于营业开始时间!")
                return ;
            }
            if (Number(endHour)===Number(sh)){
                if(Number(endMinute) < Number(sm)){
                    Feng.error("预约结束时间不应小于营业开始时间");
                    return;
                }
            }
            if (Number(startHour)===Number(endHour) && Number(startMinute)===Number(endMinute)){
                Feng.error("至少预约半个小时");
                return;
            }
            $.ajax({
                url: Feng.ctxPath + "/tSite/addSite" ,
                type: "POST",
                data: JSON.stringify(data),
                contentType: "application/json",
                success: function (response) {
                    Feng.success("添加成功");
                    TSite.search();
                },
                error: function (xhr, status, error) {
                    Feng.error("添加失败!" + error);
                }
            });
        },
        error: function (xhr, status, error) {
            var errorMessage = xhr.responseText ? xhr.responseText : "上架失败!";
            Feng.error("您的网络异常!");
            return false;
        }
    });
};
TSite.search = function () {
    var queryData = {};
    queryData['insertTime'] = $("#insertTime").val();
    queryData['province'] = $("#pCode").val();
    queryData['city'] = $("#cCode").val();
    queryData['siteTypeId'] = $("#sCode").val();
    // 场地名称
    queryData['name'] = $("#name").val();
    queryData['insertUser'] = $("#insertUser").val();
    queryData['city'] = $("#city").val();
    queryData['state'] = $("#state").val();
    // 门店名称
    queryData['storeName'] = $("#storeName").val();
    TSite.table.refresh({query: queryData});
};
TSite.resetSearch = function () {
    $("#insertTime").val("");
    $("#pCode").val("");
    $("#cCode").val("");
    $("#store").val("");
    $("#sCode").val("");
    $("#storeName").val("");
    $("#siteTypeId").val("");
    $("#name").val("");
    $("#insertUser").val("");
    $("#city").val("");
    $("#state").val("");
    $("#insuranceEndTime").val("");
    TSite.search();
};
function UploadFileFn(){
    $('#upFile').click();
}
$(function () {
    // 限制分钟选项为 0 和 30
    var timeInputs = document.querySelectorAll('input[type="time"]');
    timeInputs.forEach(function(input) {
        input.addEventListener('change', function() {
            var selectedTime = input.value;
            var hour = selectedTime.split(':')[0];
            var minute = selectedTime.split(':')[1];
            if (minute < 30 &&minute>0) {
                minute = '30';
            } else if (minute >30) {
                hour++;
                minute = '00';
                if (hour<10){
                    hour = '0'+hour;
                }
            }
                input.value = hour + ':' + minute;
        });
    });
    var defaultColunms = TSite.initColumn();
    var table = new BSTable(TSite.id, "/tSite/list", defaultColunms);
    table.setPaginationType("server");
    var type =$("#type").val();
    if (type !== 1){
        var table1 = new BSTable(TSite.id, "/tSite/listExipre", defaultColunms);
        table1.setPaginationType("client");
        TSite.table = table1.init();
    }
    var table = new BSTable(TSite.id, "/tSite/listAll", defaultColunms);
    table.setPaginationType("client");
    TSite.table = table.init();
    Feng.initValidator("carInfoForm", TSite.validateFields);
    var carPhoto = new $WebUpload("img");
    carPhoto.setUploadBarId("progressBar");
    carPhoto.init();
    $('#upFile').on('change', function () {
        var formData = new FormData()  //创建一个forData
        formData.append('file', $('#upFile')[0].files[0]) //把file添加进去  name命名为img
        layer.load(); //上传loading
        $.ajax({
            url: Feng.ctxPath + '/mgr/uploadFile',
            data: formData,
            type: "POST",
            async: true,
            cache: false,
            contentType: false,
            processData: false,
            success: function(res) {
                layer.closeAll('loading'); //关闭loading
                $('#upFile').val('');
                $('#courseVideo').val(res);
            }
        })
    });
});