mitao
2025-03-31 ce396f73fa41c66cbdb02c61cafa90b08f41ab48
惠民卡协议管理保存
7个文件已修改
3个文件已添加
414 ■■■■■ 已修改文件
cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminAgreementController.java 107 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/THuiminAgreement.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/entity/THuiminAgreementSetting.java 4 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/model/HuiminAgreementQuery.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/HuiminAgreementClient.java 20 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/HuiminAgreementQuery.java 22 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/THuiminAgreement.java 12 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/THuiminAgreementSetting.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminAgreementController.java 50 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminAgreement/tHuiminAgreement_add.html 162 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
cloud-server-activity/src/main/java/com/dsh/activity/controller/HuiminAgreementController.java
New file
@@ -0,0 +1,107 @@
package com.dsh.activity.controller;
import cn.hutool.core.collection.CollUtil;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.dsh.activity.entity.THuiminAgreement;
import com.dsh.activity.entity.THuiminAgreementSetting;
import com.dsh.activity.model.HuiminAgreementQuery;
import com.dsh.activity.service.HuiminAgreementService;
import com.dsh.activity.service.HuiminAgreementSettingService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
import java.util.Objects;
/**
 * @author zhibing.pu
 * @date 2023/6/24 11:27
 */
@RestController
@RequestMapping("")
public class HuiminAgreementController {
    @Autowired
    private HuiminAgreementService huiminAgreementService;
    @Autowired
    private HuiminAgreementSettingService huiminAgreementSettingService;
    /**
     * 根据当前用户类型查询惠民卡协议
     * @param objectType
     * @param operatorId
     * @return
     */
    @ResponseBody
    @PostMapping("/base/tHuiminAgreement/selectByObjectType")
    public THuiminAgreement selectByObjectType(@RequestBody HuiminAgreementQuery query) {
        THuiminAgreement huiminAgreement = null;
        if (query.getObjectType().equals(1)) {
            //平台
            huiminAgreement = huiminAgreementService.getOne(new LambdaQueryWrapper<THuiminAgreement>()
                    .isNull(THuiminAgreement::getOperatorId));
        }else if (query.getObjectType().equals(2)) {
            //运营商
            huiminAgreement = huiminAgreementService.getOne(new LambdaQueryWrapper<THuiminAgreement>()
                    .eq(THuiminAgreement::getOperatorId,query.getOperatorId()));
        }
        if (Objects.nonNull(huiminAgreement)) {
            //查询协议配置
            List<THuiminAgreementSetting> tHuiminAgreementSettingList = huiminAgreementSettingService.list(new LambdaQueryWrapper<THuiminAgreementSetting>()
                    .eq(THuiminAgreementSetting::getAgreementId, huiminAgreement.getId()));
            huiminAgreement.setTHuiminAgreementSettingList(tHuiminAgreementSettingList);
        }
        return huiminAgreement;
    }
    /**
     * 保存惠民卡协议
     * @param tHuiminAgreement
     */
    @PostMapping("/base/tHuiminAgreement/save")
    @Transactional(rollbackFor = Exception.class)
    public void insert(@RequestBody THuiminAgreement tHuiminAgreement){
        Integer operatorId = tHuiminAgreement.getOperatorId();
        if (tHuiminAgreement.getObjectType().equals(1)) {
            tHuiminAgreement.setOperatorId(null);
        }
        huiminAgreementService.saveOrUpdate(tHuiminAgreement);
        List<THuiminAgreementSetting> tHuiminAgreementSettingList = tHuiminAgreement.getTHuiminAgreementSettingList();
        if (CollUtil.isNotEmpty(tHuiminAgreementSettingList)) {
            if (tHuiminAgreement.getObjectType().equals(2) || tHuiminAgreement.getObjectType().equals(1) && Objects.isNull(operatorId)) {
                //删除之前的协议配置
                huiminAgreementSettingService.remove(new LambdaQueryWrapper<THuiminAgreementSetting>().eq(THuiminAgreementSetting::getAgreementId, tHuiminAgreement.getId()));
                //保存协议配置
                tHuiminAgreementSettingList.forEach(t -> {
                    t.setAgreementId(tHuiminAgreement.getId());
                });
                huiminAgreementSettingService.saveBatch(tHuiminAgreementSettingList);
            } else {
                THuiminAgreement agreement = huiminAgreementService.lambdaQuery()
                        .eq(THuiminAgreement::getOperatorId, operatorId)
                        .last("LIMIT 1").one();
                if (Objects.isNull(agreement)) {
                    agreement = new THuiminAgreement();
                    agreement.setOperatorId(operatorId);
                    huiminAgreementService.save(agreement);
                }
                //删除之前的协议配置
                huiminAgreementSettingService.remove(new LambdaQueryWrapper<THuiminAgreementSetting>()
                        .eq(THuiminAgreementSetting::getAgreementId, agreement.getId()));
                //保存协议配置
                THuiminAgreement finalAgreement = agreement;
                tHuiminAgreementSettingList.forEach(t -> {
                    t.setAgreementId(finalAgreement.getId());
                });
                huiminAgreementSettingService.saveBatch(tHuiminAgreementSettingList);
            }
        }
    }
}
cloud-server-activity/src/main/java/com/dsh/activity/entity/THuiminAgreement.java
@@ -10,6 +10,7 @@
import lombok.experimental.Accessors;
import java.io.Serializable;
import java.util.List;
/**
 * <p>
@@ -44,6 +45,17 @@
     */
    @TableField("selectUserRemark")
    private String selectUserRemark;
    /**
     * 门店无惠民卡介绍页
     */
    @TableField("storeNoHuiminCardIntro")
    private String storeNoHuiminCardIntro;
    @TableField(exist = false)
    private Integer objectType;
    @TableField(exist = false)
    private List<THuiminAgreementSetting> tHuiminAgreementSettingList;
    @Override
    protected Serializable pkVal() {
        return this.id;
cloud-server-activity/src/main/java/com/dsh/activity/entity/THuiminAgreementSetting.java
@@ -22,7 +22,7 @@
@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@TableName("t_points_merchandise_city")
@TableName("t_huimin_agreement_setting")
public class THuiminAgreementSetting extends Model<THuiminAgreementSetting> {
    private static final long serialVersionUID = 1L;
@@ -32,6 +32,8 @@
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    @TableField("agreementId")
    private Integer agreementId;
    /**
     * 协议名称
     */
cloud-server-activity/src/main/java/com/dsh/activity/model/HuiminAgreementQuery.java
New file
@@ -0,0 +1,22 @@
package com.dsh.activity.model;
import lombok.Data;
/**
 * <p>
 * 惠民卡协议查询
 * </p>
 *
 * @since 2023-07-12
 */
@Data
public class HuiminAgreementQuery {
    /**
     * 运营商id 选择默认传null
     */
    private Integer operatorId;
    /**
     *账号类型
     */
    private Integer objectType;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/HuiminAgreementClient.java
@@ -1,8 +1,10 @@
package com.dsh.course.feignClient.activity;
import com.dsh.course.feignClient.activity.model.HuiminAgreementQuery;
import com.dsh.course.feignClient.activity.model.THuiminAgreement;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
/**
 * @author mitao
@@ -10,6 +12,20 @@
 */
@FeignClient(value = "mb-cloud-activity")
public interface HuiminAgreementClient {
    @PostMapping("/tHuiminAgreement/save")
    void insert(THuiminAgreement tHuiminAgreement);
    /**
     * 根据当前用户类型查询惠民卡协议
     * @param objectType
     * @param operatorId
     * @return
     */
    @PostMapping("/base/tHuiminAgreement/selectByObjectType")
    THuiminAgreement selectByObjectType(@RequestBody HuiminAgreementQuery query);
    /**
     * 保存惠民卡协议
     * @param tHuiminAgreement
     */
    @PostMapping("/base/tHuiminAgreement/save")
    void insert(@RequestBody THuiminAgreement tHuiminAgreement);
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/HuiminAgreementQuery.java
New file
@@ -0,0 +1,22 @@
package com.dsh.course.feignClient.activity.model;
import lombok.Data;
/**
 * <p>
 * 惠民卡协议查询
 * </p>
 *
 * @since 2023-07-12
 */
@Data
public class HuiminAgreementQuery {
    /**
     * 运营商id 选择默认传null
     */
    private Integer operatorId;
    /**
     *账号类型
     */
    private Integer objectType;
}
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/THuiminAgreement.java
@@ -1,8 +1,5 @@
package com.dsh.course.feignClient.activity.model;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import lombok.Data;
@@ -28,27 +25,28 @@
    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 运营商id 选择默认传null
     */
    @TableField("operatorId")
    private Integer operatorId;
    /**
     *添加人员说明文案
     */
    @TableField("addUserRemark")
    private String addUserRemark;
    /**
     *选择人员说明文案
     */
    @TableField("selectUserRemark")
    private String selectUserRemark;
    /**
     * 门店无惠民卡介绍页
     */
    private String storeNoHuiminCardIntro;
    private String agreementSettings;
    private List<THuiminAgreementSetting> tHuiminAgreementSettingList;
    private Integer objectType;
    @Override
    protected Serializable pkVal() {
        return this.id;
cloud-server-management/src/main/java/com/dsh/course/feignClient/activity/model/THuiminAgreementSetting.java
@@ -1,5 +1,6 @@
package com.dsh.course.feignClient.activity.model;
import com.alibaba.fastjson.annotation.JSONField;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
@@ -36,11 +37,13 @@
     * 协议名称
     */
    @TableField("agreementName")
    @JSONField(name = "title")
    private String agreementName;
    /**
     *协议内容
     */
    @TableField("agreementContent")
    @JSONField(name = "content")
    private String agreementContent;
    @Override
cloud-server-management/src/main/java/com/dsh/guns/modular/system/controller/code/THuiminAgreementController.java
@@ -1,14 +1,24 @@
package com.dsh.guns.modular.system.controller.code;
import com.alibaba.fastjson.JSONArray;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.dsh.course.feignClient.activity.HuiminAgreementClient;
import com.dsh.course.feignClient.activity.model.HuiminAgreementQuery;
import com.dsh.course.feignClient.activity.model.THuiminAgreement;
import com.dsh.course.feignClient.activity.model.THuiminAgreementSetting;
import com.dsh.guns.config.UserExt;
import com.dsh.guns.core.base.controller.BaseController;
import com.dsh.guns.modular.system.model.TOperator;
import com.dsh.guns.modular.system.service.TOperatorService;
import com.dsh.guns.modular.system.util.ResultUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
import java.util.Objects;
/**
 * 惠民卡控制器
@@ -24,6 +34,8 @@
    @Autowired
    private HuiminAgreementClient huiminAgreementClient;
    @Autowired
    private TOperatorService operatorService;
    /**
     * 跳转到惠民卡首页
@@ -31,15 +43,53 @@
    @RequestMapping("")
    public String index(Model model) {
        Integer objectType = UserExt.getUser().getObjectType();
        Integer operatorId = null;
       if (objectType.equals(2)){
            //查询运营商
            TOperator operator = operatorService.getOne(new QueryWrapper<TOperator>()
                    .eq("userId", UserExt.getUser().getId())
                    .ne("state", 3)
                    .last("LIMIT 1"));
            if (Objects.nonNull(operator)) {
                operatorId = operator.getId();
            }
        }
        HuiminAgreementQuery huiminAgreementQuery = new HuiminAgreementQuery();
        huiminAgreementQuery.setOperatorId(operatorId);
        huiminAgreementQuery.setObjectType(objectType);
        THuiminAgreement huiminAgreement = huiminAgreementClient.selectByObjectType(huiminAgreementQuery);
        model.addAttribute("objectType", objectType);
        model.addAttribute("item", huiminAgreement);
        model.addAttribute("tHuiminAgreementSettingList", Objects.nonNull(huiminAgreement) ? JSONArray.toJSONString(huiminAgreement.getTHuiminAgreementSettingList()) : "");
        //查询运营商列表
        model.addAttribute("operatorList", operatorService.list(new QueryWrapper<TOperator>().eq("state", 1)));
        model.addAttribute("operatorId", operatorId);
        return PREFIX + "tHuiminAgreement_add.html";
    }
    @RequestMapping(value = "/save")
    @ResponseBody
    public Object save(THuiminAgreement tHuiminAgreement) {
        tHuiminAgreement.setObjectType(UserExt.getUser().getObjectType());
        String agreementSettings = tHuiminAgreement.getAgreementSettings();
        List<THuiminAgreementSetting> tHuiminAgreementSettings = JSONArray.parseArray(agreementSettings, THuiminAgreementSetting.class);
        tHuiminAgreement.setTHuiminAgreementSettingList(tHuiminAgreementSettings);
        huiminAgreementClient.insert(tHuiminAgreement);
        return SUCCESS_TIP;
    }
    @RequestMapping(value = "/selectAgreementByOperationId")
    @ResponseBody
    public ResultUtil<String> selectAgreementByOperationId(Integer operatorId) {
        String tHuiminAgreementSettings = "";
        HuiminAgreementQuery huiminAgreementQuery = new HuiminAgreementQuery();
        huiminAgreementQuery.setOperatorId(operatorId);
        huiminAgreementQuery.setObjectType(Objects.isNull(operatorId) ? 1 : 2);
        THuiminAgreement huiminAgreement = huiminAgreementClient.selectByObjectType(huiminAgreementQuery);
        if (Objects.nonNull(huiminAgreement)) {
            //查询协议配置
            tHuiminAgreementSettings = JSONArray.toJSONString(huiminAgreement.getTHuiminAgreementSettingList());
        }
        return ResultUtil.success(tHuiminAgreementSettings);
    }
/*
    *//**
     * 跳转到修改惠民卡
cloud-server-management/src/main/webapp/WEB-INF/view/system/tHuiminAgreement/tHuiminAgreement_add.html
@@ -13,7 +13,7 @@
                        <div class="tab-content">
                            <div id="tab-1" class="tab-pane active">
                                <div class="panel-body">
                                    <textarea id="editor_1" type="text/plain" style="width:1200px;height:400px;"></textarea>
                                    <textarea id="editor_1" type="text/plain" style="width:1200px;height:400px;">${item.addUserRemark!}</textarea>
                                    <!--<div class="row btn-group-m-t">
                                        <div class="col-sm-10 col-sm-offset-5">
                                            <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun=""/>
@@ -23,7 +23,7 @@
                            </div>
                            <div id="tab-2" class="tab-pane">
                                <div class="panel-body">
                                    <textarea type="text/plain" id="editor_2" style="width:1200px;height:400px;"></textarea>
                                    <textarea type="text/plain" id="editor_2" style="width:1200px;height:400px;"${item.selectUserRemark!}</textarea>
                                    <!--<div class="row btn-group-m-t">
                                        <div class="col-sm-10">
                                            <#button btnCss="info" name="保存" id="ensure" icon="fa-check" clickFun=""/>
@@ -37,12 +37,16 @@
                @}
                <div class="form-group">
                    <label class="col-sm-1 control-label" for="operator">所属运营商:</label>
                    <div class="col-sm-9">
                    <div class="col-sm-3">
                        <select id="operator" class="form-control">
                            <option value="" selected>默认</option>
                            <option value="">默认</option>
                            @if(isNotEmpty(operatorList)){
                            @for(item in operatorList){
                            <option value="${item.id}">${item.name}</option>
                                @if(objectType == 2){
                                    <option value="${item.id}" ${operatorId == item.id ? 'selected disabled' : ''}>${item.name}</option>
                                @}else{
                                    <option value="${item.id}">${item.name}</option>
                                @}
                            @}
                            @}
                        </select>
@@ -50,10 +54,14 @@
                </div>
                <div class="form-group">
                    <label class="col-sm-1 control-label">门店无惠民卡介绍页</label>
                    <div class="col-sm-9">
                        <textarea id="editor_3" type="text/plain" style="width:1200px;height:400px;">${item.storeNoHuiminCardIntro!}</textarea>
                    </div>
                </div>
                </div>
                <div class="form-group">
                    <label class="col-sm-1 control-label" for="agreement">协议配置:</label>
                    <div class="col-sm-9">
                    <div class="col-sm-3">
                        <div class="input-group">
                            <input type="text" id="agreement" name="agreement" class="form-control" placeholder="请输入协议配置标题">
                            <span class="input-group-btn">
@@ -90,6 +98,7 @@
<script>
    var editor_1 = null;
    var editor_2 = null;
    var editor_3 = null;
    var dynamicEditors = []; // 存储动态创建的编辑器实例
    var editorCounter = 0; // 用于生成唯一ID
@@ -97,7 +106,8 @@
        //初始化编辑器
        editor_1 = UE.getEditor('editor_1');
        editor_2 = UE.getEditor('editor_2');
        editor_3 = UE.getEditor('editor_3');
        // 绑定添加按钮的点击事件
        $("#agreementAdd").click(function() {
            var title = $("#agreement").val().trim();
@@ -107,15 +117,76 @@
            }
            
            // 创建新的编辑器区域
            addNewEditor(title);
            addNewEditor(title,"");
            
            // 清空输入框
            $("#agreement").val("");
        });
        //协议配置回显
        let settingList = '${tHuiminAgreementSettingList}';
        if (settingList != "" && typeof settingList != "undefined"){
            let settingArr = JSON.parse(settingList);
            review(settingArr);
        }
        //经营商切换事件
        $("#operator").change(function() {
            //清空协议配置
            removeAll()
            //调用接口获取协议配置数据
            //提交信息
            var ajax = new $ax(Feng.ctxPath + "/tHuiminAgreement/selectAgreementByOperationId", function(data){
                if (data.data != "" && data.data != null){
                    console.log("协议配置数据:"+data.data);
                    let settingArr = JSON.parse(data.data);
                    review(settingArr);
                }
            },function(data){
            });
            ajax.set("operatorId",$("#operator").val());
            ajax.start();
        });
    });
    // 添加新的编辑器函数
    function addNewEditor(title) {
    // 清空所有编辑器实例和UI元素
    function removeAll(){
        console.log("清空协议配置");
        $("#dynamic-tabs-container").hide();
        // 彻底清空容器内容,确保没有残留
        $("#agreement-tabs").empty();
        $("#agreement-content").empty();
        // 销毁所有编辑器实例
        for(var i = 0; i < dynamicEditors.length; i++) {
            try {
                if(dynamicEditors[i].editor) {
                    dynamicEditors[i].editor.destroy();
                    dynamicEditors[i].editor = null;
                }
            } catch(e) {
                console.error("销毁编辑器出错:", e);
            }
        }
        editorCounter = 0;
        //清空动态创建的编辑器实例
        dynamicEditors=[];
        console.log("dynamicEditors",dynamicEditors)
    }
    // 协议配置回显
    function review(settingArr){
        if (typeof settingArr !== 'undefined' && settingArr.length > 0) {
            settingArr.forEach(function(item) {
                addNewEditor(item.title, item.content || "");
            });
        }
    }
    // 添加新的编辑器函数 - 修改为接受内容参数
    function addNewEditor(title, content) {
        editorCounter++;
        var editorId = "dynamic-editor-" + editorCounter;
        var tabId = "agreement-tab-" + editorCounter;
@@ -157,24 +228,41 @@
        
        // 确保编辑器已准备好
        editor.ready(function() {
            // 初始化为空内容
            editor.setContent("");
            // 存储编辑器实例和标题信息
            dynamicEditors.push({
                id: editorId,
                tabId: tabId,
                counter: editorCounter,
                title: title,
                editor: editor
            });
            // 绑定删除按钮事件
            $(".delete-tab[data-editor-id='" + editorId + "']").click(function(e) {
                e.preventDefault();
                e.stopPropagation();
                deleteEditor($(this).data("counter"));
            });
            try {
                // 检查编辑器是否已准备好接收内容
                if(editor.body) {
                    // 初始化内容
                    editor.setContent(content || "");
                } else {
                    // 如果编辑器body未准备好,延迟设置内容
                    setTimeout(function() {
                        try {
                            editor.setContent(content || "");
                        } catch(e) {
                            console.error("延迟设置编辑器内容出错:", e);
                        }
                    }, 500);
                }
                // 存储编辑器实例和标题信息
                dynamicEditors.push({
                    id: editorId,
                    tabId: tabId,
                    counter: editorCounter,
                    title: title,
                    editor: editor,
                    content: content || ""
                });
                // 绑定删除按钮事件
                $(".delete-tab[data-editor-id='" + editorId + "']").click(function(e) {
                    e.preventDefault();
                    e.stopPropagation();
                    deleteEditor($(this).data("counter"));
                });
            } catch(e) {
                console.error("编辑器初始化出错:", e);
            }
        });
        
        // 手动激活新添加的标签页
@@ -239,9 +327,22 @@
    collectDynamicEditors = function() {
        var agreements = [];
        for(var i = 0; i < dynamicEditors.length; i++) {
            var content = "";
            try {
                // 确保编辑器实例存在且可用
                if(dynamicEditors[i].editor && dynamicEditors[i].editor.isReady) {
                    content = dynamicEditors[i].editor.getContent();
                } else {
                    content = dynamicEditors[i].content || "";
                }
            } catch(e) {
                console.error("获取编辑器内容出错:", e);
                content = dynamicEditors[i].content || "";
            }
            agreements.push({
                title: dynamicEditors[i].title,
                content: dynamicEditors[i].editor.getContent()
                content: content
            });
        }
        return agreements;
@@ -256,6 +357,7 @@
        });
        ajax.set("addUserRemark", editor_1.getContent());
        ajax.set("selectUserRemark", editor_2.getContent());
        ajax.set("storeNoHuiminCardIntro", editor_3.getContent());
        ajax.set("operatorId", $("#operator").val());
        ajax.set("agreementSettings", JSON.stringify(collectDynamicEditors()));
        ajax.set("id", $("#id").val());