Administrator
2025-05-23 8027634ef66360e745df4f496d4bc4cf227d59c7
feat(mall): 新增自提点功能

- 新增自提点列表页面和相关接口
- 实现自提点信息展示、新增自提点等功能
- 优化订单相关逻辑,支持自提点配送方式
3 files renamed
10 files modified
2 files added
304 ■■■■ changed files
src/main/java/cc/mrbird/febs/mall/controller/teamLeader/AdminMallTeamLeaderController.java 17 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/teamLeader/ApiMallTeamLeaderController.java 18 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/teamLeader/ViewMallTeamLeaderController.java 25 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java 6 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java 3 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java 2 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java 24 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java 32 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java 38 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/AdminLeaderVo.java 11 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/ApiHappyLeaderInfoVo.java 36 ●●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java 4 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/leader/addLeader.html 48 ●●●● patch | view | raw | blame | history
src/main/resources/templates/febs/views/modules/leader/leaderList.html 34 ●●●●● patch | view | raw | blame | history
src/main/resources/templates/index.html 6 ●●●● patch | view | raw | blame | history
src/main/java/cc/mrbird/febs/mall/controller/teamLeader/AdminMallTeamLeaderController.java
File was renamed from src/main/java/cc/mrbird/febs/mall/controller/AdminMallTeamLeaderController.java
@@ -1,4 +1,4 @@
package cc.mrbird.febs.mall.controller;
package cc.mrbird.febs.mall.controller.teamLeader;
import cc.mrbird.febs.common.annotation.ControllerEndpoint;
import cc.mrbird.febs.common.controller.BaseController;
@@ -7,13 +7,11 @@
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
import cc.mrbird.febs.mall.dto.AdminLeaderAddDto;
import cc.mrbird.febs.mall.dto.AdminLeaderAddFenceDto;
import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto;
import cc.mrbird.febs.mall.dto.ApiApplayLeaderDto;
import cc.mrbird.febs.mall.entity.*;
import cc.mrbird.febs.mall.mapper.DataDictionaryCustomMapper;
import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService;
import cc.mrbird.febs.mall.vo.AdminLeaderBonusSettingVo;
import cc.mrbird.febs.mall.vo.AdminRangeSettingVo;
import cc.mrbird.febs.mall.vo.AdminLeaderVo;
import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@@ -36,6 +34,17 @@
    private final IAdminMallTeamLeaderService iAdminMallTeamLeaderService;
    private final DataDictionaryCustomMapper dataDictionaryCustomMapper;
    /**
     * 团长下拉列表
     */
    @GetMapping("leader/tree")
    @ControllerEndpoint(exceptionMessage = "获取失败")
    public List<AdminLeaderVo> getLeaderTree(){
        return iAdminMallTeamLeaderService.getLeaderTree();
    }
    /**
     * 团长信息--列表
     */
src/main/java/cc/mrbird/febs/mall/controller/teamLeader/ApiMallTeamLeaderController.java
File was renamed from src/main/java/cc/mrbird/febs/mall/controller/ApiMallTeamLeaderController.java
@@ -1,4 +1,4 @@
package cc.mrbird.febs.mall.controller;
package cc.mrbird.febs.mall.controller.teamLeader;
import cc.mrbird.febs.common.annotation.ControllerEndpoint;
import cc.mrbird.febs.common.entity.FebsResponse;
@@ -21,11 +21,25 @@
@RestController
@RequiredArgsConstructor
@RequestMapping(value = "/api/leader")
@Api(value = "ApiMallTeamLeaderController", tags = "团长接口类")
@Api(value = "ApiMallTeamLeaderController", tags = "365自提点")
public class ApiMallTeamLeaderController {
    private final IApiMallTeamLeaderService iApiMallTeamLeaderService;
    /**
     * 自提点列表
     */
    @ApiOperation(value = "自提点列表", notes = "自提点列表")
    @ApiResponses({
            @ApiResponse(code = 200, message = "success", response = ApiHappyLeaderInfoVo.class)
    })
    @PostMapping(value = "/happyLeaderList")
    public FebsResponse happyLeaderList() {
        return iApiMallTeamLeaderService.happyLeaderList();
    }
    /**
     * 申请团长
     */
src/main/java/cc/mrbird/febs/mall/controller/teamLeader/ViewMallTeamLeaderController.java
File was renamed from src/main/java/cc/mrbird/febs/mall/controller/ViewMallTeamLeaderController.java
@@ -1,5 +1,6 @@
package cc.mrbird.febs.mall.controller;
package cc.mrbird.febs.mall.controller.teamLeader;
import cc.mrbird.febs.common.annotation.ControllerEndpoint;
import cc.mrbird.febs.common.controller.BaseController;
import cc.mrbird.febs.common.entity.FebsConstant;
import cc.mrbird.febs.common.enumerates.DataDictionaryEnum;
@@ -10,6 +11,8 @@
import cc.mrbird.febs.mall.mapper.MallMemberMapper;
import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService;
import cc.mrbird.febs.mall.vo.AdminLeaderBonusSettingVo;
import cc.mrbird.febs.mall.vo.AdminLeaderVo;
import cc.mrbird.febs.mall.vo.AdminMallGoodsCategoryTreeVo;
import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo;
import cn.hutool.core.util.ObjectUtil;
import lombok.RequiredArgsConstructor;
@@ -19,6 +22,8 @@
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.List;
@Controller("leaderView")
@RequestMapping(FebsConstant.VIEW_PREFIX + "modules/leader")
@@ -60,10 +65,20 @@
        return FebsUtil.view("modules/leader/leaderGoodsUpdate");
    }
    @GetMapping("addLeader/{id}")
    public String addLeader(@PathVariable long id, Model model) {
        MallMember mallMember = mallMemberMapper.selectById(id);
        model.addAttribute("mallMember", mallMember);
//    @GetMapping("addLeader/{id}")
//    public String addLeader(@PathVariable long id, Model model) {
//        MallMember mallMember = mallMemberMapper.selectById(id);
//        model.addAttribute("mallMember", mallMember);
//        return FebsUtil.view("modules/leader/addLeader");
//    }
    /**
     * 新增
     * @return
     */
    @GetMapping(value = "/addLeader")
    @RequiresPermissions("addLeader:add")
    public String leaderAdd() {
        return FebsUtil.view("modules/leader/addLeader");
    }
src/main/java/cc/mrbird/febs/mall/entity/MallOrderInfo.java
@@ -109,12 +109,6 @@
    @TableField(exist = false)
    private String addressPic;
    @TableField(exist = false)
    private String province;
    @TableField(exist = false)
    private String city;
    @TableField(exist = false)
    private String township;
    @TableField(exist = false)
    private String addressArea;
    @TableField(exist = false)
    private String detailAddress;
src/main/java/cc/mrbird/febs/mall/service/IAdminMallTeamLeaderService.java
@@ -7,6 +7,7 @@
import cc.mrbird.febs.mall.dto.AdminLeaderUpdateDto;
import cc.mrbird.febs.mall.entity.MallLeaderStock;
import cc.mrbird.febs.mall.entity.MallTeamLeader;
import cc.mrbird.febs.mall.vo.AdminLeaderVo;
import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo;
import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo;
import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -39,4 +40,6 @@
    FebsResponse startOnline(Long id);
    FebsResponse closeOnline(Long id);
    List<AdminLeaderVo> getLeaderTree();
}
src/main/java/cc/mrbird/febs/mall/service/IApiMallTeamLeaderService.java
@@ -39,4 +39,6 @@
    FebsResponse findSomeLeaderListInPage(ApiLeaderListDto apiLeaderListDto);
    FebsResponse noLoginLeaderTitle(ApiLeaderTitleDto apiLeaderTitleDto);
    FebsResponse happyLeaderList();
}
src/main/java/cc/mrbird/febs/mall/service/impl/AdminMallTeamLeaderServiceImpl.java
@@ -17,6 +17,7 @@
import cc.mrbird.febs.mall.mapper.*;
import cc.mrbird.febs.mall.service.IAdminMallTeamLeaderService;
import cc.mrbird.febs.mall.service.IMallElectronicFenceService;
import cc.mrbird.febs.mall.vo.AdminLeaderVo;
import cc.mrbird.febs.mall.vo.AdminMallActSetVo;
import cc.mrbird.febs.mall.vo.AdminMallTeamLeaderVo;
import cc.mrbird.febs.mall.vo.AdminSelectListLeaderVo;
@@ -27,6 +28,7 @@
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSON;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
@@ -42,6 +44,7 @@
import org.apache.http.entity.ContentType;
import org.apache.http.message.BasicNameValuePair;
import org.apache.poi.ss.formula.functions.T;
import org.checkerframework.checker.units.qual.A;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
@@ -389,4 +392,25 @@
        return new FebsResponse().success();
    }
    @Override
    public List<AdminLeaderVo> getLeaderTree() {
        ArrayList<AdminLeaderVo> adminLeaderVos = new ArrayList<>();
        List<MallMember> mallMembers = mallMemberMapper.selectList(
                new LambdaQueryWrapper<MallMember>()
                        .select(MallMember::getId, MallMember::getName,  MallMember::getInviteId)
                        .ne(MallMember::getStoreMaster, 0)
        );
        if(CollUtil.isNotEmpty(mallMembers)){
            for(MallMember mallMember : mallMembers){
                AdminLeaderVo adminLeaderVo = new AdminLeaderVo();
                adminLeaderVo.setId(mallMember.getId());
                adminLeaderVo.setName(mallMember.getName());
                adminLeaderVo.setUniqueCode(mallMember.getInviteId());
                adminLeaderVos.add(adminLeaderVo);
            }
        }
        return adminLeaderVos;
    }
}
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallOrderInfoServiceImpl.java
@@ -281,10 +281,21 @@
        mallMemberCoupon.setState(2);
        mallMemberCouponMapper.updateById(mallMemberCoupon);
        //运费
        BigDecimal delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
        orderInfo.setCarriage(delivaryAmount);
        BigDecimal delivaryAmount = BigDecimal.ZERO;
        if(StrUtil.isEmpty(addOrderDto.getTakeUniqueCode())){
            delivaryAmount = addOrderDto.getDeliveryAmount() == null ? BigDecimal.ZERO : addOrderDto.getDeliveryAmount();
            orderInfo.setCarriage(delivaryAmount);
        }else{
            MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode());
            if(mallTeamLeader!=null){
                throw new FebsException("自提点信息异常");
            }
            orderInfo.setCarriage(delivaryAmount);
            orderInfo.setTakeCode(ShareCodeUtil.toSerialCode(orderInfo.getId()) + MallUtils.getRandomNum(10));
            orderInfo.setTakeUniqueCode(mallTeamLeader.getUniqueCode());
            orderInfo.setDeliveryType(1);
        }
        total = total.add(delivaryAmount);
        orderInfo.setAmount(total);
        orderInfo.setScoreAmount(totalScoreAmount);
@@ -300,6 +311,7 @@
        orderInfo.setLatitude(address.getLatitude());
        orderInfo.setLongitude(address.getLongitude());
        this.baseMapper.updateById(orderInfo);
        //过期时间修改成24小时
        agentProducer.sendOrderCancelDelayMsg(orderInfo.getId(),  24 * 60 * 60 * 1000L);
        return orderInfo.getId();
@@ -843,7 +855,21 @@
//            }
//        }
        OrderDetailVo orderDetailVo = MallOrderInfoConversion.INSTANCE.entityToDetailVo(orderInfo);
        if(StrUtil.isNotEmpty(orderInfo.getTakeUniqueCode())){
            MallTeamLeader mallTeamLeader = mallTeamLeaderMapper.selectLeaderByUniqueCode(orderInfo.getTakeUniqueCode());
            if(ObjectUtil.isNotEmpty(mallTeamLeader)){
                orderDetailVo.setLeaderName(mallTeamLeader.getName());
                orderDetailVo.setLeaderPhone(mallTeamLeader.getPhone());
                orderDetailVo.setAddressPic(mallTeamLeader.getAddressPic());
                orderDetailVo.setAddressArea(mallTeamLeader.getAddressArea());
                orderDetailVo.setDetailAddress(mallTeamLeader.getDetailAddress());
                orderDetailVo.setLeaderLongitude(mallTeamLeader.getLongitude());
                orderDetailVo.setLeaderLatitude(mallTeamLeader.getLatitude());
            }
        }
        MallExpressInfo expressInfo = expressInfoMapper.selectByOrderId(orderInfo.getId());
        if(ObjectUtil.isNotEmpty(expressInfo)){
src/main/java/cc/mrbird/febs/mall/service/impl/ApiMallTeamLeaderServiceImpl.java
@@ -26,6 +26,7 @@
import cn.hutool.json.JSONArray;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
@@ -658,4 +659,41 @@
        return new FebsResponse().success().data(apiLeaderInfoVo);
    }
    @Override
    public FebsResponse happyLeaderList() {
        ArrayList<ApiHappyLeaderInfoVo> apiHappyLeaderInfoVos = new ArrayList<>();
        List<MallTeamLeader> mallTeamLeaders = this.baseMapper.selectList(
                new LambdaQueryWrapper<MallTeamLeader>()
                        .select(
                                MallTeamLeader::getId,
                                MallTeamLeader::getName,
                                MallTeamLeader::getPhone,
                                MallTeamLeader::getUniqueCode,
                                MallTeamLeader::getAddressPic,
                                MallTeamLeader::getAddressArea,
                                MallTeamLeader::getDetailAddress,
                                MallTeamLeader::getLongitude,
                                MallTeamLeader::getLatitude)
                        .eq(MallTeamLeader::getState, 1)
        );
        if(CollUtil.isNotEmpty(mallTeamLeaders)){
            for (MallTeamLeader mallTeamLeader : mallTeamLeaders){
                ApiHappyLeaderInfoVo apiHappyLeaderInfoVo = new ApiHappyLeaderInfoVo();
                apiHappyLeaderInfoVo.setId(mallTeamLeader.getId());
                apiHappyLeaderInfoVo.setName(mallTeamLeader.getName());
                apiHappyLeaderInfoVo.setPhone(mallTeamLeader.getPhone());
                apiHappyLeaderInfoVo.setTakeUniqueCode(mallTeamLeader.getUniqueCode());
                apiHappyLeaderInfoVo.setAddressPic(mallTeamLeader.getAddressPic());
                apiHappyLeaderInfoVo.setAddressArea(mallTeamLeader.getAddressArea());
                apiHappyLeaderInfoVo.setDetailAddress(mallTeamLeader.getDetailAddress());
                apiHappyLeaderInfoVo.setLongitude(mallTeamLeader.getLongitude());
                apiHappyLeaderInfoVo.setLatitude(mallTeamLeader.getLatitude());
                apiHappyLeaderInfoVos.add(apiHappyLeaderInfoVo);
            }
        }
        return new FebsResponse().success().data(apiHappyLeaderInfoVos);
    }
}
src/main/java/cc/mrbird/febs/mall/vo/AdminLeaderVo.java
New file
@@ -0,0 +1,11 @@
package cc.mrbird.febs.mall.vo;
import lombok.Data;
@Data
public class AdminLeaderVo {
    private Long id;
    private String name;
    private String uniqueCode;
}
src/main/java/cc/mrbird/febs/mall/vo/ApiHappyLeaderInfoVo.java
New file
@@ -0,0 +1,36 @@
package cc.mrbird.febs.mall.vo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
@Data
@ApiModel(value = "ApiHappyLeaderInfoVo", description = "信息返回类")
public class ApiHappyLeaderInfoVo {
    private Long id;
    @ApiModelProperty(value = "联系人")
    private String name;
    @ApiModelProperty(value = "联系电话")
    private String phone;
    @ApiModelProperty(value = "特征码", example = "1")
    private String takeUniqueCode;
    @ApiModelProperty(value = "自提点照片")
    private String addressPic;
    @ApiModelProperty(value = "自提点名称")
    private String addressArea;
    @ApiModelProperty(value = "详细地址")
    private String detailAddress;
    @ApiModelProperty(value = "经度")
    private Double longitude;
    @ApiModelProperty(value = "纬度")
    private Double latitude;
}
src/main/java/cc/mrbird/febs/mall/vo/OrderDetailVo.java
@@ -103,9 +103,9 @@
    /**
     * 自提点信息
     */
    @ApiModelProperty(value = "团长姓名")
    @ApiModelProperty(value = "自提点联系人姓名")
    private String leaderName;
    @ApiModelProperty(value = "团长电话")
    @ApiModelProperty(value = "自提点联系人电话")
    private String leaderPhone;
    @ApiModelProperty(value = "自提点图片")
    private String addressPic;
src/main/resources/templates/febs/views/modules/leader/addLeader.html
@@ -22,28 +22,30 @@
</style>
<div class="layui-fluid" id="user-addLeader">
    <form class="layui-form" action="" lay-filter="user-addLeader-form">
        <div class="layui-form-item febs-hide">
            <label class="layui-form-label">memberId:</label>
            <div class="layui-input-block">
                <input type="text" name="memberId">
        <div class="layui-form-item">
            <label class="layui-form-label">用户选择:</label>
            <div class="layui-input-inline">
                <select name="memberId" class="leader-add-memberId">
                    <option value="">请选择</option>
                </select>
            </div>
        </div>
<!--        <div class="layui-form-item">-->
<!--            <label class="layui-form-label febs-form-item-require">自提点标识:</label>-->
<!--            <div class="layui-input-block">-->
<!--                <input type="text" name="uniqueCode" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>-->
<!--            </div>-->
<!--        </div>-->
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">姓名:</label>
            <div class="layui-input-block">
                <input type="text" name="name" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
                <input type="text" name="name" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">手机号码:</label>
            <div class="layui-input-block">
                <input type="text" name="phone" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
            </div>
        </div>
        <div class="layui-form-item">
            <label class="layui-form-label febs-form-item-require">团长码:</label>
            <div class="layui-input-block">
                <input type="text" name="uniqueCode" lay-verify="required" placeholder="" autocomplete="off" class="layui-input" readonly>
                <input type="text" name="phone" lay-verify="required" placeholder="" autocomplete="off" class="layui-input">
            </div>
        </div>
<!--        <div class="layui-form-item">-->
@@ -120,7 +122,6 @@
            febs = layui.febs,
            layer = layui.layer,
            form = layui.form,
            mallMember = [[${mallMember}]],
            upload = layui.upload,
            $view = $('#user-addLeader'),
            $viewMap = $('#febs-map-demo-add'),
@@ -176,22 +177,23 @@
            }
        });
        initUserValue();
        function initUserValue() {
            form.val("user-addLeader-form", {
                "memberId": mallMember.id,
                "name": mallMember.name,
                "phone": mallMember.phone,
                "uniqueCode": mallMember.inviteId,
        //(下拉框)
        $.get(ctx + 'admin/leader/leader/tree', function (data) {
            for (var k in data)
            {
                $(".leader-add-memberId").append("<option value='" + data[k].id + "'>" + data[k].name + "</option>");
            }
            layui.use('form', function () {
                var form = layui.form;
                form.render();
            });
        }
        });
        form.on('submit(user-addLeader-submit)', function (data) {
            febs.post(ctx + 'admin/leader/addLeader', data.field, function () {
                layer.closeAll();
                febs.alert.success('操作成功');
                $('#febs-member-list').find('#reset').click();
                $('#febs-leader').find('#query').click();
            });
            return false;
        });
src/main/resources/templates/febs/views/modules/leader/leaderList.html
@@ -1,4 +1,4 @@
<div class="layui-fluid layui-anim febs-anim" id="febs-leader" lay-title="团长列表">
<div class="layui-fluid layui-anim febs-anim" id="febs-leader" lay-title="自提点列表">
    <div class="layui-row febs-container">
        <div class="layui-col-md12">
            <div class="layui-card">
@@ -76,6 +76,11 @@
    <input type="checkbox" value={{d.id}} lay-text="开启|关闭" lay-skin="switch" lay-filter="profitSwitch">
    {{# } }}
</script>
<script type="text/html" id="leaderToolbar">
    <div class="layui-btn-container">
        <button class="layui-btn layui-btn-normal layui-btn-xs" type="button" shiro:hasPermission="addLeader:add" lay-event="leaderAdd">新增自提点</button>
    </div>
</script>
<!-- 表格操作栏 end -->
<script data-th-inline="none" type="text/javascript">
    // 引入组件并初始化
@@ -94,7 +99,7 @@
        form.render();
        // 表格初始化
        initTable();
        initLeaderTable();
        // 初始化表格操作栏各个按钮功能
        table.on('tool(leaderTable)', function (obj) {
@@ -158,6 +163,25 @@
            }
        });
        table.on('toolbar(leaderTable)', function(obj){
            var data = obj.data,
                layEvent = obj.event;
            if (layEvent === 'leaderAdd') {
                febs.modal.open( '新增', 'modules/leader/addLeader/', {
                    btn: ['提交', '取消'],
                    area:['100%','100%'],
                    yes: function (index, layero) {
                        $('#user-addLeader').find('#submit').trigger('click');
                    },
                    btn2: function () {
                        layer.closeAll();
                    }
                });
            }
        });
        function leaderCancel(id) {
            febs.get(ctx + 'admin/leader/leaderCancel/' + id, null, function () {
                febs.alert.success('操作成功');
@@ -179,11 +203,13 @@
        });
        function initTable() {
        function initLeaderTable() {
            tableIns = febs.table.init({
                elem: $view.find('table'),
                id: 'leaderTable',
                url: ctx + 'admin/leader/leaderList',
                toolbar:"#leaderToolbar",
                defaultToolbar:[],
                cols: [[
                    {field: 'name', title: '姓名', minWidth: 150,align:'left'},
                    {field: 'phone', title: '电话', minWidth: 150,align:'left'},
@@ -231,6 +257,8 @@
            });
        }
        form.on('switch(onlineStateSwitch)', function (data) {
            if (data.elem.checked) {
                startOnline(data.value);
src/main/resources/templates/index.html
@@ -20,9 +20,9 @@
            securityJsCode:'50d73a585f300cccf7fc2bf31d0c38c8',
        }
    </script>
<!--    <script src="https://webapi.amap.com/maps?v=1.4.15&key=e32064fc8a9dfe7af7d2d0a947b8df32&plugin=AMap.Autocomplete,AMap.PolyEditor,AMap.Geocoder,AMap.PolylineEditor"></script>-->
<!--    <link href="https://unpkg.com/@wangeditor/editor@5.0.1/dist/css/style.css" rel="stylesheet">-->
<!--    <script src="https://unpkg.com/@wangeditor/editor@latest/dist/index.js"></script>-->
    <script src="https://webapi.amap.com/maps?v=1.4.15&key=e32064fc8a9dfe7af7d2d0a947b8df32&plugin=AMap.Autocomplete,AMap.PolyEditor,AMap.Geocoder,AMap.PolylineEditor"></script>
    <link href="https://unpkg.com/@wangeditor/editor@5.0.1/dist/css/style.css" rel="stylesheet">
    <script src="https://unpkg.com/@wangeditor/editor@latest/dist/index.js"></script>
    <script src="http://gosspublic.alicdn.com/aliyun-oss-sdk-6.17.0.min.js"></script>
    <script type="text/javascript" src="https://cdn.jsdelivr.net/npm/wangeditor@latest/dist/wangEditor.min.js" ></script>
    <link rel="icon" th:href="@{febs/images/favicon.ico}" type="image/x-icon"/>