Vue前端的封装的高级搜索条件,like,=,or,and,not null,in,not in,between..and后端进行统一的接收

1.点击高级搜索按钮出现弹框

     <!-- 操作按钮 -->
      <el-row>
        <el-col :span="24" class="pb15 pt5">
          <el-button
            type="danger"
            size="mini"
            style="margin-left: 10px"
            plain
            @click="addOrUpdateHandle()"
            >新增</el-button
          >
          <el-button
            type="primary"
            size="mini"
            style="margin-left: 10px"
            plain
            @click="search()"
            >高级搜索</el-button
          >
          <el-button
            type="primary"
            size="mini"
            style="margin-left: 10px"
            plain
            @click="sort()"
            >排序</el-button
          >
        </el-col>
      </el-row>

需要在vuer methods方法里面加上:


    // 高级搜索 使弹框置为true
    search() {
      this.dialogFormVisible = true;
    },

2.出现弹框的页面,通过js封装好相关的下拉条的条件

2.1 弹框代码

    <!-- 弹窗, 高级搜索 -->
    <el-dialog
      v-dialogDrag
      title="高级搜索"
      :visible.sync="dialogFormVisible"
      class="dialog"
    >
      <el-form :model="form">
        <!-- 操作按钮 -->
        <el-row>
          <el-col :span="24" class="pb15 pt5">
            <el-button
              @click="searchAdd(form.tableData)"
              type="danger"
              size="mini"
              style="margin-left: 10px"
              plain
              >新增</el-button
            >
          </el-col>
        </el-row>
        <el-table :data="form.tableData" style="width: 100%">
          <el-table-column prop="field" label="栏位" width="180">
            <template slot-scope="scope">
              <el-select v-model="scope.row.field" placeholder="请选择">
                <el-option
                  v-for="item in fields"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </template>
          </el-table-column>

          <el-table-column prop="condition" label="条件" width="180">
            <template slot-scope="scope">
              <el-select v-model="scope.row.condition" placeholder="请选择">
                <el-option
                  v-for="item in conditions"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </template>
          </el-table-column>

          <el-table-column prop="searchValue" label="搜索值">
            <template slot-scope="scope">
              <el-input
                v-model="scope.row.searchValue"
                placeholder="请输入内容"
              ></el-input>
            </template>
          </el-table-column>

          <el-table-column prop="relation" label="关联">
            <template slot-scope="scope">
              <el-select v-model="scope.row.relation" placeholder="请选择"  :disabled="scope.row.relationInputShow">
                <el-option label="" value="and"></el-option>
                <el-option label="" value="or"></el-option>
              </el-select>
            </template>
          </el-table-column>

          <el-table-column align="center" label="操作">
            <template slot-scope="scope">
              <el-button
                type="text"
                size="small"
                @click="deleteData(scope.row.id, scope.$index)"
                >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button plain @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="danger" @click="savebtn">保 存</el-button>
      </div>
    </el-dialog>
2.2 细节 在高级搜索弹框页面点击新增 需要控制高级搜索的首个条例不可以编辑 ,新增按钮方法
   // 高级搜索-新增
    searchAdd(data) {
      let newsearchObject = {
        field: "", //栏位
        condition: "", //条件
        searchValue: "", //搜索值
        relation: "and", //关联
        relationInputShow:true//控制关联不可选择
      };
      this.form.tableData.push(newsearchObject);
      // 新增首条数据,关联不可选择
      if(this.form.tableData.length > 1){
        data.forEach((item,index)=>{
          if(index > 0){
            item.relationInputShow = false
          }
        })
      }

    },
  //高级搜索-删除
    deleteData(id, index) {
      // console.log(index);
      this.form.tableData.splice(index, 1);
    },
    // 高级搜索-保存
    savebtn() {
      this.getDataList("gjcx");
    },



3.条件代码

  1. 在vue的脚手架代码中引入
import maintainCondition from "@/api/maintainCondition";
  1. vue的data数据里面加上
 conditions: maintainCondition.conditions, //搜索条件

高级弹框那边已经遍历这个数组 condtions.

  1. 在 maintainCondition.js中
  conditions: [{
    value: 'like',
    label: '类似 like'
  }, {
    value: 'not like',
    label: '非类似 like'
  }, {
    value: '=',
    label: '等于='
  }, {
    value: '<',
    label: '小于<'
  }, {
    value: '>',
    label: '大于>'
  }, {
    value: '<=',
    label: '小于等于<='
  }, {
    value: '>=',
    label: '大于等于>='
  }, {
    value: '<>',
    label: '不等于<>'
  }, {
    value: 'between',
    label: '介于between'
  }, {
    value: 'not between',
    label: '非介于not between'
  }, {
    value: 'in',
    label: '于范围内in'
  }, {
    value: 'not in',
    label: '非于范围内not in'
  }],


4.高级搜索的保存代码

调用了这个方法

  // 高级搜索-保存
    savebtn() {
      this.getDataList("gjcx");
    },


    // 获取数据列表
    getDataList(query) {
      this.$store.dispatch("loading/CHANGE_LOADING", true);
      let orderList = this.form.sortTableData2;
      if (query === "sort") {
        orderList = this.form.sortTableData;
      }
      let params = {
        pageNum: this.page.pageIndex,
        pageSize: this.page.pageSize,
        orderList,
        searchConditionList: this.form.tableData,
      };
      this.dataList = [];
      pageListApi(params)
        .then((res) => {
          if (query === "sort") {
            // 排序条件保存
            this.form.sortTableData2 = this.form.sortTableData.slice(0);
            (this.fields = [
              {
                label: "处理状态编码",
                value: "invstscde",
              },
              {
                label: "处理状态名称",
                value: "invstsnam",
              },
            ]),
              (this.form.sortTableData = []);
            this.sortDialogFormVisible = false;
          }
          let dataList = res.data.list;
          dataList.forEach((e) => {
            e.disabled = true;
          });
          this.nums = "";
          this.dataList = dataList;
          this.page.totalPage = res.data.total;
          if (query == "gjcx") {
            this.dialogFormVisible = false;
          }
          this.$store.dispatch("loading/CHANGE_LOADING", false);
        })
        .catch(() => {});
    },

后端代码接收

1. controller

package com.citicpru.clmmaint.controller.othermain;

import com.citicpru.clmmaint.biz.AdvancedSearchBiz;
import com.citicpru.clmmaint.biz.SortBiz;
import com.citicpru.clmmaint.biz.othermain.ProcessUpholdBiz;
import com.citicpru.clmwork.dto.othermain.ProcessUpholdDTO;
import com.citicpru.clmwork.entity.ProcessUphold;
import com.citicpru.clmwork.vo.AdvancedSearchVO;
import com.citicpru.clmwork.vo.SearchCondition;
import com.citicpru.clmwork.vo.Sort;
import com.citicpru.clmwork.vo.othermain.ProcessUpholdVO;
import com.github.pagehelper.PageInfo;
import com.sunline.framework.common.constant.RestCodeConstants;
import com.sunline.framework.common.context.BaseContextHandler;
import com.sunline.framework.common.msg.ObjectRestResponse;
import com.sunline.framework.common.rest.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.util.CollectionUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;

/**
 * 处理状态维护表 VO
 *
 * @author
 */
@Slf4j
@RestController
@RequestMapping("/surversUphold/processUphold")
@Api(value = "处理状态维护", tags = "处理状态维护")
public class ProcessUpholdController extends BaseController<ProcessUpholdBiz, ProcessUpholdDTO> {

    @Resource
    private ProcessUpholdBiz processUpholdBiz;
    @Resource
    private AdvancedSearchBiz advancedSearchBiz;
    @Resource
    private SortBiz sortBiz;

    @PostMapping(value = "/findPageList")
    @ApiOperation(value = "查询处理状态维护数据信息", response = ObjectRestResponse.class)
    public PageInfo<ProcessUpholdVO> findDefaultPayOrderList(@ApiParam(value = "处理状态维护") @RequestBody AdvancedSearchVO advancedSearchVO) throws Exception {
        List<SearchCondition> searchConditionList = advancedSearchVO.getSearchConditionList();
        List<Sort> orderList = advancedSearchVO.getOrderList();
        String searchStr = "";
        String orderStr = "";
        if(searchConditionList == null && orderList == null){
            PageInfo<ProcessUpholdVO> defalut = processUpholdBiz.initPageList (advancedSearchVO);
            return defalut;
        }
        if(searchConditionList == null){
        }else {
            searchStr += advancedSearchBiz.searchParamers (searchConditionList).toString ();
        }
        if (orderList == null){
        }else {
            orderStr +=sortBiz.doSort (orderList);
        }
        PageInfo<ProcessUpholdVO> processUpholdVO = processUpholdBiz.findPayOrderList(advancedSearchVO,searchStr,orderStr);
        return processUpholdVO;
    }

    @ApiOperation("添加--处理状态维护")
    @PostMapping(value = "/addOrUpdateBenefitgroup")
    public ObjectRestResponse addOrUpdateBenefitgroup(@RequestBody ProcessUphold dto) {
        ObjectRestResponse restResponse = new ObjectRestResponse();
        try {
            String validate = this.validate(dto);
            if (StringUtils.isNotBlank(validate)) {
                restResponse.setErrorMsg(validate);
                return restResponse;
            }
            String invimtmcde = dto.getInvstscde();
            String invitmnam = dto.getInvstsnam();
            if (StringUtils.isBlank(invimtmcde)) {
                restResponse.setErrorMsg("请检查处理状态编码,必须输入");
                return restResponse;
            }
            if (StringUtils.isBlank(invitmnam)) {
                restResponse.setErrorMsg("请检查处理状态名称,必须输入");
                return restResponse;
            }
            String userID = BaseContextHandler.getUserID();
            int res = 0;
            if (dto.getId() == null) {
                res = processUpholdBiz.insertPayOrder(dto,userID);
                if (res > 0) {
                    restResponse.setSuucessMsg("新增处理状态维护数据成功");
                } else {
                    restResponse.setSuucessMsg("处理状态维护数据不能重复,请重新输入");
                    restResponse.setResultCode(RestCodeConstants.EX_PARAM_VALIDATE_CODE);
                }
            } else {
                res = processUpholdBiz.updatePayOrder(dto,userID);
                if (res > 0) {
                    restResponse.setSuucessMsg("修改处理状态维护数据成功");
                } else {
                    restResponse.setSuucessMsg("修改处理状态维护数据失败");
                }
            }
        } catch (Exception e) {
            restResponse.setErrorMsg("添加或修改操作添加处理状态维护数据时发生异常");
            log.error("执行方法:添加或修改操作添加处理状态维护数据时发生异常:{}", e);
        }
        return restResponse;
    }

    @PostMapping(value = "/deleteById")
    @ApiOperation("删除处理状态维护数据-逻辑删除")
    public ObjectRestResponse deleteById(@ApiParam(value = "删除处理状态维护")@RequestBody ProcessUphold dto) {
        String invstscde = dto.getInvstscde();
        ObjectRestResponse restResponse = new ObjectRestResponse();
        try {
            String userID = BaseContextHandler.getUserID();
            if(invstscde == null){
                restResponse.setSuucessMsg("处理状态维护--删除数据失败,入参不能为空");
                return restResponse;
            }
            if (invstscde != null) {
                int res = 0;
                res = processUpholdBiz.deleteById(invstscde, userID);
                if (res > 0) {
                    restResponse.setSuucessMsg("处理状态维护数据-逻辑删除成功");
                } else {
                    restResponse.setSuucessMsg("处理状态维护数据-逻辑删除失败");
                }
            }
        } catch (Exception e) {
            restResponse.setErrorMsg("删除处理状态维护数据-逻辑删除异常");
            log.error("执行方法:删除处理状态维护数据-逻辑删除:{}", e);
        }
        return restResponse;
    }

    @ApiOperation("处理状态维护-按条件排序")
    @PostMapping(value = "/toOrderByList")
    public PageInfo<ProcessUpholdVO> toOrderByList(@ApiParam(value = "处理状态维护")@RequestBody AdvancedSearchVO advancedSearchVO) throws Exception {
        List<Sort> sortList =  advancedSearchVO.getOrderList();
        if(CollectionUtils.isEmpty(sortList)){
            return null;
        }
        String parStr = sortBiz.doSort(sortList);
        PageInfo<ProcessUpholdVO>  defaultPay =  processUpholdBiz.sortByOrderCondition(advancedSearchVO,parStr);
        return defaultPay;
    }
}



后端对数据进行校验的,sql拼接的工具类

package com.citicpru.clmmaint.biz;

import com.citicpru.clmmaint.utils.CheckUtils;
import com.citicpru.clmmaint.utils.ConvertUtil;
import com.citicpru.clmmaint.utils.SearchConditionUtil;
import com.citicpru.clmwork.vo.SearchCondition;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import org.springframework.util.CollectionUtils;

import java.util.List;

/**
 * 高级搜索 service
 * @author
 */
@Component
public class AdvancedSearchBiz {


    public StringBuffer searchParamers(List<SearchCondition> searchConditionList) throws Exception {
        //select *  from table where 1=1 拼上 条件(关联符号在前)
        StringBuffer searchParamer = new StringBuffer();
        String space = " ";
        for (SearchCondition searchCondition : searchConditionList ) {
            String field = ConvertUtil.doLowerCase(searchCondition.getField());
            String searchValue = searchCondition.getSearchValue();
            String value =ConvertUtil.toConvert(searchValue);
            String searchVal;
            if(CheckUtils.isNumber(value) == false){
                searchVal = "'"+value+"'";
            }else{
                searchVal = value;
            }
            String condition = searchCondition.getCondition();
            String relation = searchCondition.getRelation();
            // = 拼接的情况
            if (condition.equals(SearchConditionUtil.EQUALS)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append(searchVal).
                        append(space);
            }
            // <> 拼接的情况
            if (condition.equals(SearchConditionUtil.NOT_EQUALS)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append(searchVal).
                        append(space);
            }
            //  > 拼接的情况
            if (condition.equals(SearchConditionUtil.GREATER_THAN)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append(searchVal).
                        append(space);
            }
            // < 拼接的情况
            if (condition.equals(SearchConditionUtil.LESS_THAN)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append(searchVal).
                        append(space);
            }
            // >= 拼接的情况
            if (condition.equals(SearchConditionUtil.GREATER_EQUALS)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append(searchVal).
                        append(space);
            }
            // <= 拼接的情况
            if (condition.equals(SearchConditionUtil.LESS_EQUALS)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append(searchVal).
                        append(space);
            }
            // in 拼接的情况
            if (condition.equals(SearchConditionUtil.IN)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append("(")
                        .append(space).append(CheckUtils.appendSymbol(value))
                        .append(space).append(") ");
            }
            // not in  拼接的情况
            if (condition.equals(SearchConditionUtil.NOT_IN)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append("(")
                        .append(space).append(CheckUtils.appendSymbol(value))
                        .append(space).append(") ");
            }
            // like 拼接的情况
            if (condition.equals(SearchConditionUtil.LIKE)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append("'%").append(value).append("%'").
                        append(space);
            }
            // not like  拼接的情况
            if (condition.equals(SearchConditionUtil.NOT_LIKE)) {
                searchParamer.append(space).append(relation)
                        .append(space).append(field)
                        .append(space).append(condition)
                        .append(space).append("'%").append(value).append("%'").
                        append(space);
            }
            // between 拼接的情况  between... and...
            // not between  拼接的情况
            if (condition.equals(SearchConditionUtil.BETWEEN)) {
                String[] contentUnits = value.split(",");
                if (contentUnits.length != 2) {
                    throw new RuntimeException("搜索值栏位必须输入两个参数且用“,”隔开");
                }
                String leftContentUnit = contentUnits[0];
                String rightContentUnit = contentUnits[1];
                if(CheckUtils.isNumber(leftContentUnit) == false){
                    searchParamer.append(space).append(relation)
                            .append(space).append(field)
                            .append(space).append(condition).append(space)
                            .append("'").append(leftContentUnit).append("'")
                            .append(space).append("and").append(space)
                            .append("'").append(rightContentUnit).append("' ");
                }else {
                    searchParamer.append(space).append(relation)
                            .append(space).append(field)
                            .append(space).append(condition)
                            .append(space).append(leftContentUnit)
                            .append(space).append("and")
                            .append(space).append(rightContentUnit).
                            append(space);
                }
            }
            if (condition.equals(SearchConditionUtil.NOT_BETWEEN)) {
                String[] contentUnits = value.split(",");
                if (contentUnits.length != 2) {
                    throw new RuntimeException("搜索值栏位必须输入两个参数且用“,”隔开");
                }
                String leftContentUnit = contentUnits[0];
                String rightContentUnit = contentUnits[1];
                if(CheckUtils.isNumber(leftContentUnit) == false){
                    searchParamer.append(space).append(relation)
                            .append(space).append(field)
                            .append(space).append(condition).append(space)
                            .append("'").append(leftContentUnit).append("'")
                            .append(space).append("and").append(space)
                            .append("'").append(rightContentUnit).append("' ");
                }else {
                    searchParamer.append(space).append(relation)
                            .append(space).append(field)
                            .append(space).append(condition)
                            .append(space).append(leftContentUnit)
                            .append(space).append("and")
                            .append(space).append(rightContentUnit).
                            append(space);
                }
            }
        }
        if(!CollectionUtils.isEmpty(searchConditionList) && StringUtils.isNotBlank(searchParamer)) {
            searchParamer.insert(4, "(");
            searchParamer.append(")");
        }
        return searchParamer;
    }
}










/**
 * 高级搜索--工具类
 * @author
 */
public class SearchConditionUtil {

    /**
     * 操作符 - 类似 like
     *
     */
    public static final String LIKE = "like";

    /**
     * 操作符 - 非类似 like
     *
     */
    public static final String NOT_LIKE = "not like";
    /**
     * 操作符 - 等于=
     *
     */
    public static final String EQUALS = "=";
    /**
     * 操作符 - 小于<
     *
     */
    public static final String LESS_THAN = "<";

    /**
     * 操作符 - 大于>
     *
     */
    public static final String GREATER_THAN = ">";

    /**
     * 操作符 - 小于等于
     *
     */
    public static final String LESS_EQUALS = "<=";

    /**
     * 操作符 - 大于等于
     *
     */
    public static final String GREATER_EQUALS = ">=";

    /**
     * 操作符 - 不等于
     *
     */
    public static final String NOT_EQUALS = "<>";

    /**
     * 操作符 - 介于
     *
     */
    public static final String BETWEEN = "between";

    /**
     * 操作符 - 于范围内
     *
     */
    public static final String IN = "in";

    /**
     * 操作符 - 非介于
     *
     */
    public static final String NOT_BETWEEN = "not between";

    /**
     * 操作符 - 非于范围内
     *
     */
    public static final String NOT_IN = "not in";

    /**
     * 关系符号 - 且
     *
     */
    public static final String RELATION_AND = "and";

    /**
     * 关系符号 - 或
     *
     * @since 1.0
     */
    public static final String RELATION_OR = "or";

}




CheckUtils:

/**
 * @author
 */
public class CheckUtils {

    /**
     * 判断字符串是否为数字
     * @param string
     * @return
     */
    public static boolean isNumber(String string) {
        if (string == null){
            return false;
        }
        Pattern pattern = Pattern.compile("^-?\\d+(\\.\\d+)?$");
        return pattern.matcher(string).matches();
    }

    /**
     * in 或 not in 条件查询时 增加单引号在字符串左右
     */
    public static final String appendSymbol(String str) {
        StringBuffer resStr = new StringBuffer();
        String[] tmps = str.split(",");
        if(tmps.length == 1){
            resStr.append("'").append(str).append("'");
            return resStr.toString();
        }
        for (int i = 0; i < tmps.length; i++) {
            if (tmps.length - i > 1) {
                resStr.append("'").append(tmps[i]).append("',");
            } else {
                resStr.append("'").append(tmps[i]).append("'");
            }
        }
        return resStr.toString();
    }
}



1.1它的封装的搜索的类

import lombok.Data;

import java.io.Serializable;

/**
 *  高级搜索 AdvancedSearch
 * @author
 */
@Data
public class SearchCondition implements Serializable {
    private static final long serialVersionUID = 46545654400288021L;
    /**
     * 栏位
     */
    private String field;

    /**
     * 条件
     */
    private String  condition;

    /**
     * 搜寻值
     */
    private String searchValue;

    /**
     * 关联
     */
    private  String relation;
}








1.2封装的排序的类
package com.citicpru.clmwork.vo;

import lombok.Data;

import java.io.Serializable;

/**
 * 排序-- 条件
 * @author
 */
@Data
public class Sort implements Serializable {
    private static final long serialVersionUID = 44015654400289995L;
    /**
     * 字段名-对应的中文
     *
     */
    public String name;

    /**
     * 字段名--英文
     *
     */
    public String code;

    /**
     * 排序方式--正序或倒序
     *
     */
    public String toOrder;
}







2. serviceimpl 实现层
package com.citicpru.clmmaint.biz.othermain;

import com.citicpru.clmwork.entity.ProcessUphold;
import com.citicpru.clmmaint.feign.ClmBaseFeignService;
import com.citicpru.clmmaint.mapper.mysql.othermain.ProcessUpholdMapper;
import com.citicpru.clmwork.vo.AdvancedSearchVO;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.sunline.framework.common.biz.BaseBiz;
import com.sunline.framework.common.exception.BaseException;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang.StringUtils;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.entity.Example;

import javax.annotation.Resource;
import java.util.Date;
import java.util.List;

/**
 * 调查项目维护
 *
 * @author
 */
@Slf4j
@Service
public class ProcessUpholdBiz extends BaseBiz<ProcessUpholdMapper, ProcessUphold> {
    @Resource
    private ProcessUpholdMapper processUpholdMapper;
    @Resource
    private ClmBaseFeignService clmBaseFeignService;

    /**
     * 初始化页面查询
     *
     * @return
     */
    public PageInfo initPageList(AdvancedSearchVO advancedSearchVO) {
        //分页处理
        PageHelper.startPage(advancedSearchVO.getPageNum(), advancedSearchVO.getPageSize());
        List<ProcessUphold> list = processUpholdMapper.initPageList();
        PageInfo<ProcessUphold> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

    /**
     * 高级搜索查询
     *
     * @return
     */
    public PageInfo findPayOrderList(AdvancedSearchVO advancedSearchVO, String searchStr ,String orderStr) {
        //分页处理
        PageHelper.startPage(advancedSearchVO.getPageNum(), advancedSearchVO.getPageSize());
        List<ProcessUphold> list = processUpholdMapper.findPayOrderList(searchStr,orderStr);
        PageInfo<ProcessUphold> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

    /**
     * 插入数据
     *
     * @param vo
     * @param userID
     * @return
     * @throws BaseException
     */
    @Transactional
    public int insertPayOrder(ProcessUphold vo, String userID) throws BaseException {
        // 新增(自动补充表的基础字段信息:status、createId、createTime)
        int res = 0;
        if (verifyHandler(vo.getInvstscde())) {
            ProcessUphold processUphold = new ProcessUphold();
            processUphold.setInvstscde(StringUtils.trim(vo.getInvstscde().toUpperCase()));
            processUphold.setInvstsnam(StringUtils.trim(vo.getInvstsnam()));
            processUphold.setUsrprf(StringUtils.trim("ASGARD"));
            processUphold.setJobnm(StringUtils.trim("CLM"));
            processUphold.setDatime(new Date());
            processUphold.setCreateId(userID);
            processUphold.setCreateTime(new Date());
            processUphold.setLastUpdateId(userID);
            processUphold.setLastUpdateTime(new Date());
            processUphold.setStatus(1);
            res = processUpholdMapper.insertSelective(processUphold);
            if (res > 0) {
//                处理状态维护远程调用
                clmBaseFeignService.insertLchapf(processUphold);
            }
        }
        return res;
    }

    /**
     * 更新修改
     * @return
     */
    @Transactional
    public int updatePayOrder(ProcessUphold vo, String userID) {
        ProcessUphold processUphold = new ProcessUphold();
        processUphold.setInvstscde(StringUtils.trim(vo.getInvstscde()));
        processUphold.setInvstsnam(StringUtils.trim(vo.getInvstsnam()));
        processUphold.setUsrprf(StringUtils.trim(vo.getUsrprf()));
        processUphold.setJobnm(StringUtils.trim(vo.getJobnm()));
        processUphold.setLastUpdateId(userID);
        processUphold.setLastUpdateTime(new Date());
        Example example = new Example(ProcessUphold.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("id", vo.getId());
        int res = 0;
        res = processUpholdMapper.updateByExampleSelective(processUphold,example);
        if (res > 0) {
            clmBaseFeignService.updateLchapf(vo);
        }
        return res;
    }

    /**
     * 删除数据--逻辑删除
     *
     * @param invstscde
     * @param userID
     * @return
     * @throws BaseException
     */
    @Transactional
    public Integer deleteById(String invstscde, String userID) throws BaseException {

        //逻辑删除
        int res = 0;
        Example example = new Example(ProcessUphold.class);
        ProcessUphold processUphold = new ProcessUphold();

        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("invstscde",invstscde);

        res = processUpholdMapper.deleteByExample(example);


//        删除成功再删除旧系统的数据
        if(res > 0) {
            System.out.println("invstcde"+invstscde);

            clmBaseFeignService.deleteLchapf(invstscde);
        }
        return res;
    }

    /**
     * 排序查询
     *
     * @param advancedSearchVO
     * @param parStr
     * @return
     * @throws BaseException
     */
    public  PageInfo sortByOrderCondition(AdvancedSearchVO advancedSearchVO, String parStr) throws BaseException {
        PageHelper.startPage(advancedSearchVO.getPageNum(), advancedSearchVO.getPageSize());
        List<ProcessUphold> list = processUpholdMapper.findPayOrderList(null,parStr);
        PageInfo<ProcessUphold> pageInfo = new PageInfo<>(list);
        return pageInfo;
    }

    /**
     * 调查项目编码数据校验
     *
     * @return
     */
    private boolean verifyHandler(String invstscde) {
        //设置默认验证为true
        boolean whether = true;
        Example example = new Example(ProcessUphold.class);
        Example.Criteria criteria = example.createCriteria();
        criteria.andEqualTo("invstscde", invstscde);
        criteria.andEqualTo("status", 1);
        ProcessUphold processUphold = processUpholdMapper.selectOneByExample(example);
        if (processUphold != null) {
            whether = false;
        }
        return whether;
    }
}




3.mapper层

package com.citicpru.clmmaint.mapper.mysql.othermain;

import com.citicpru.clmwork.entity.ProcessUphold;
import org.apache.ibatis.annotations.Param;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;

/**
 * 调查项目维护表 VO
 *
 * @author
 */
public interface ProcessUpholdMapper extends Mapper<ProcessUphold> {
    /**
     * 查询调查类型维护数据列表
     * @return
     */
    List<ProcessUphold> initPageList();

    /**
     * 查询调查类型维护数据列表
     * @param searchStr
     * @param orderStr
     * @return
     */
    List<ProcessUphold> findPayOrderList(@Param("searchStr") String searchStr, @Param("orderStr") String orderStr);


    /**
     * 删除数据--逻辑删除单条操作
     * @param id
     * @param userid
     * @return
     */
    int deleteById(@Param("id") Integer id,@Param("userid")String userid);

    /**
     * 更新数据
     * @param ProcessUphold
     * @return
     */
    int updateProcessProject(ProcessUphold ProcessUphold);

    /**
     * 插入数据
     * @param ProcessUphold
     * @return
     */
    int insertProcessProject(ProcessUphold ProcessUphold);
}







4.xml文件


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">

<mapper namespace="com.citicpru.clmmaint.mapper.mysql.othermain.ProcessUpholdMapper">

    <!-- 可根据自己的需求,是否要使用 -->
    <resultMap type="com.citicpru.clmwork.entity.ProcessUphold" id="processUpholdMap">
        <result property="id" column="id"/>
        <result property="invstscde" column="invstscde"/>
        <result property="invstsnam" column="invstsnam"/>
        <result property="usrprf" column="usrprf"/>
        <result property="jobnm" column="jobnm"/>
        <result property="datime" column="datime"/>
        <result property="status" column="status"/>
        <result property="createId" column="create_id"/>
        <result property="createTime" column="create_time"/>
        <result property="lastUpdateId" column="last_update_id"/>
        <result property="lastUpdateTime" column="last_update_time"/>
    </resultMap>

    <sql id="Base_SurveyProject_List_Field" >
        id,invstscde, invstsnam,usrprf,jobnm,datime,
	    status, create_id, create_time, last_update_id, last_update_time
    </sql>

    <!--查询列表所有数据信息-->
    <select id="initPageList" resultMap="processUpholdMap">
        SELECT
        <include refid="Base_SurveyProject_List_Field" />
        FROM clm_invest_lcha
        WHERE 1=1
        AND status = 1
    </select>

    <!--查询列表所有数据信息-->
    <select id="findPayOrderList" resultMap="processUpholdMap" parameterType="String">
        SELECT
        <include refid="Base_SurveyProject_List_Field" />
        FROM clm_invest_lcha
        WHERE  status = 1
        <if test="searchStr != null and searchStr != '' "><![CDATA[  ${searchStr}  ]]></if>
        <if test="orderStr != null and orderStr != '' "><![CDATA[  ${orderStr}  ]]></if>
    </select>

    <!--插入数据-->
    <insert id="insertProcessProject" parameterType="com.citicpru.clmwork.entity.ProcessUphold">
        insert into clm_invest_lcha (
        <if test="invstscde != null and invstscde != '' ">invstscde,</if>
        <if test="invstsnam != null and invstsnam != '' ">invstsnam,</if>
        <if test="status != null and status != '' ">status,</if>
        <if test="createId != null and createId != '' ">create_id,</if>
        <if test="lastUpdateId != null and lastUpdateId != '' ">last_update_id,</if>
        create_time,
        last_update_time
        )values(
        <if test="invstscde != null and invstscde != '' ">#{invstscde},</if>
        <if test="invstsnam != null and invstsnam != '' ">#{invstsnam},</if>
        <if test="status != null and status != '' ">#{status},</if>
        <if test="createId != null and createId != '' ">#{createId},</if>
        <if test="lastUpdateId != null and lastUpdateId != '' ">#{lastUpdateId},</if>
        sysdate(),
        sysdate()
        )
    </insert>

    <!-- 更新数据 -->
    <update id="updateProcessProject" parameterType="com.citicpru.clmwork.entity.ProcessUphold">
        update clm_invest_lcha
        <set>
            <if test="invstscde != null and invstscde != ''">invstscde = #{invstscde},</if>
            <if test="invstsnam != null and invstsnam != ''">invstsnam = #{invstsnam},</if>
            last_update_time = sysdate()
        </set>
        where id  = #{id}
    </update>

    <!--删除单条数据-->
    <delete id="deleteById">
        update clm_invest_lcha
        <set>
            status='0',
            last_update_id = #{userid},
            last_update_time = sysdate()
        </set>
        where  id = #{id}
    </delete>

    <!--批量删除多条数据-->
    <delete id="deleteByIds" parameterType="java.util.Map">
        update clm_invest_lcha
        set status = '0'
        set last_update_id = #{userid}
        set last_update_time = sysdate()
        where id in
        <foreach collection="array" item="id" open="(" separator="," close=")">
            #{id}
        </foreach>
    </delete>
</mapper>







前端的全部代码

<template>
  <!-- 处理状态维护  -->
  <div class="fillcontain">
    <div class="contain">
      <!-- 操作按钮 -->
      <el-row>
        <el-col :span="24" class="pb15 pt5">
          <el-button
            type="danger"
            size="mini"
            style="margin-left: 10px"
            plain
            @click="addOrUpdateHandle()"
            >新增</el-button
          >
          <el-button
            type="primary"
            size="mini"
            style="margin-left: 10px"
            plain
            @click="search()"
            >高级搜索</el-button
          >
          <el-button
            type="primary"
            size="mini"
            style="margin-left: 10px"
            plain
            @click="sort()"
            >排序</el-button
          >
        </el-col>
      </el-row>

      <!-- 查询结果列表 -->
      <div class="table_container">
        <!-- 列表 -->
        <el-table
          ref="multipleTable"
          :data="dataList"
          tooltip-effect="dark"
          style="width: 100%"
          @selection-change="handleSelectionChange"
        >
          <el-table-column prop="invstscde" label="处理状态编码" width="50">
            <template slot-scope="scope">
              <el-input
                v-if="!scope.row.disabled"
                v-model="dataList[scope.$index].invstscde"
                placeholder="请输入内容"
                :disabled="invimtmcdeInputShow"
              ></el-input>
              <span v-else>{{ scope.row.invstscde || "--" }}</span>
            </template>
          </el-table-column>

          <el-table-column prop="invstsnam" label="处理状态名称" width="50">
            <template slot-scope="scope">
              <el-input
                v-if="!scope.row.disabled"
                v-model="dataList[scope.$index].invstsnam"
                placeholder="请输入内容"
              ></el-input>
              <span v-else>{{ scope.row.invstsnam || "--" }}</span>
            </template>
          </el-table-column>
          <!-- 操作 -->
          <el-table-column label="操作" width="20">
            <template slot-scope="scope">
              <el-button
                v-if="scope.row.disabled"
                type="text"
                size="small"
                @click="copyHandle(scope.row)"
                >复制</el-button
              >
              <el-button
                v-if="scope.row.disabled"
                type="text"
                size="small"
                @click="UpdateHandle(scope.row)"
                >修改</el-button
              >
              <el-button
                type="text"
                size="small"
                @click="saveHandle(scope.row, scope.$index, scope.row.id)"
                v-if="!scope.row.disabled"
                >保存</el-button
              >
              <el-button
                type="text"
                size="small"
                @click="deleteHandle(scope.row, scope.$index)"
                >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>

        <!-- show-overflow-tooltip -->

        <!-- 分页 -->
        <el-row>
          <el-col :span="24">
            <div class="pagination">
              <!-- 分页 -->
              <el-pagination
                background
                @size-change="sizeChangeHandle"
                @current-change="currentChangeHandle"
                :current-page="page.pageIndex"
                :page-sizes="[10, 20, 50, 100]"
                :page-size="page.pageSize"
                :total="page.totalPage"
                layout="total, sizes, prev, pager, next, jumper"
              >
              </el-pagination>
            </div>
          </el-col>
        </el-row>
      </div>
    </div>

    <!-- 弹窗, 高级搜索 -->
    <el-dialog
      v-dialogDrag
      title="高级搜索"
      :visible.sync="dialogFormVisible"
      class="dialog"
    >
      <el-form :model="form">
        <!-- 操作按钮 -->
        <el-row>
          <el-col :span="24" class="pb15 pt5">
            <el-button
              @click="searchAdd(form.tableData)"
              type="danger"
              size="mini"
              style="margin-left: 10px"
              plain
              >新增</el-button
            >
          </el-col>
        </el-row>
        <el-table :data="form.tableData" style="width: 100%">
          <el-table-column prop="field" label="栏位" width="180">
            <template slot-scope="scope">
              <el-select v-model="scope.row.field" placeholder="请选择">
                <el-option
                  v-for="item in fields"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </template>
          </el-table-column>

          <el-table-column prop="condition" label="条件" width="180">
            <template slot-scope="scope">
              <el-select v-model="scope.row.condition" placeholder="请选择">
                <el-option
                  v-for="item in conditions"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                >
                </el-option>
              </el-select>
            </template>
          </el-table-column>

          <el-table-column prop="searchValue" label="搜索值">
            <template slot-scope="scope">
              <el-input
                v-model="scope.row.searchValue"
                placeholder="请输入内容"
              ></el-input>
            </template>
          </el-table-column>

          <el-table-column prop="relation" label="关联">
            <template slot-scope="scope">
              <el-select v-model="scope.row.relation" placeholder="请选择"  :disabled="scope.row.relationInputShow">
                <el-option label="" value="and"></el-option>
                <el-option label="" value="or"></el-option>
              </el-select>
            </template>
          </el-table-column>

          <el-table-column align="center" label="操作">
            <template slot-scope="scope">
              <el-button
                type="text"
                size="small"
                @click="deleteData(scope.row.id, scope.$index)"
                >删除</el-button
              >
            </template>
          </el-table-column>
        </el-table>
      </el-form>
      <div slot="footer" class="dialog-footer">
        <el-button plain @click="dialogFormVisible = false">取 消</el-button>
        <el-button type="danger" @click="savebtn">保 存</el-button>
      </div>
    </el-dialog>

    <!-- 弹窗, 排序 -->
    <el-dialog
      v-dialogDrag
      title="排序"
      :visible.sync="sortDialogFormVisible"
      class="dialog"
    >
      <el-row>
        <el-col :span="8">
          <select style="width: 80%" class="checkListBox" multiple>
            <option
              class="option"
              v-for="(item, index) in fields"
              :key="item.index"
              :label="item.label"
              :value="item.value"
              @click="moveOption(item, index)"
            >
              {{ item }}
            </option>
          </select>
        </el-col>

        <el-col :span="16">
          <el-form :model="form">
            <el-table :data="form.sortTableData" style="width: 100%">
              <el-table-column prop="name" label="排序字段">
                <template slot-scope="scope">
                  <el-input
                    v-model="scope.row.name"
                    placeholder="请输入内容"
                  ></el-input>
                </template>
              </el-table-column>
              <el-table-column prop="toOrder" label="排序方式">
                <template slot-scope="scope">
                  <el-select v-model="scope.row.toOrder" placeholder="请选择">
                    <el-option label="正序" value="ASC"></el-option>
                    <el-option label="逆序" value="DESC"></el-option>
                  </el-select>
                </template>
              </el-table-column>
              <el-table-column align="center" label="操作">
                <template slot-scope="scope">
                  <el-button
                    type="text"
                    size="small"
                    @click="sortDel(scope.row, scope.$index)"
                    >删除</el-button
                  >
                </template>
              </el-table-column>
            </el-table>
          </el-form>
        </el-col>
      </el-row>

      <div slot="footer" class="dialog-footer">
        <el-button plain @click="sortDialogFormVisible = false"
          >取 消</el-button
        >
        <el-button type="danger" @click="sortSavebtn">保 存</el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import {
  // pageList,
  // saveOrUpdate,
  // del,
  pageListApi,
  delpageListApi,
  addpageListApi,
  toOrderByListApi,
} from "@/api/sysSetting/othermian/surversUphold/processUphold"; // 掉接口
import maintainCondition from "@/api/maintainCondition";

export default {
  data() {
    return {
      // 列表数据
      dataList: [],

      // 公共数据
      commonData: {
        id: "",
        invstscde: "", // 处理状态编码,
        invstsnam: "", // 处理状态名称
      },

      conditions: maintainCondition.conditions, //搜索条件

      form: {
        tableData: [
          //高级搜索
          {
            field: "", //栏位
            condition: "", //条件
            searchValue: "", //搜索值
            relation: "", //关联
          },
        ],
        //排序
        sortTableData: [],
        // 排序成功后
        sortTableData2: [],
      },

      // checkList: ["排序字段1"],

      // 排序滑动框值
      fields: [
        {
          label: "处理状态编码",
          value: "invstscde",
        },
        {
          label: "处理状态名称",
          value: "invstsnam",
        },
      ],

      dialogFormVisible: false, //高级搜索弹框显示隐藏
      sortDialogFormVisible: false, //排序搜索弹框显示隐藏
      invimtmcdeInputShow: true, //处理状态编码维护编码控制
      nums: "", //控制新增按钮只能新增一个
      page: {
        pageIndex: 1,
        pageSize: 10,
        totalPage: 0,
      },
    };
  },
  components: {},
  //
  created() {
    this.getDataList();
  },

  methods: {
    // 获取数据列表
    getDataList(query) {
      this.$store.dispatch("loading/CHANGE_LOADING", true);
      let orderList = this.form.sortTableData2;
      if (query === "sort") {
        orderList = this.form.sortTableData;
      }
      let params = {
        pageNum: this.page.pageIndex,
        pageSize: this.page.pageSize,
        orderList,
        searchConditionList: this.form.tableData,
      };
      this.dataList = [];
      pageListApi(params)
        .then((res) => {
          if (query === "sort") {
            // 排序条件保存
            this.form.sortTableData2 = this.form.sortTableData.slice(0);
            (this.fields = [
              {
                label: "处理状态编码",
                value: "invstscde",
              },
              {
                label: "处理状态名称",
                value: "invstsnam",
              },
            ]),
              (this.form.sortTableData = []);
            this.sortDialogFormVisible = false;
          }
          let dataList = res.data.list;
          dataList.forEach((e) => {
            e.disabled = true;
          });
          this.nums = "";
          this.dataList = dataList;
          this.page.totalPage = res.data.total;
          if (query == "gjcx") {
            this.dialogFormVisible = false;
          }
          this.$store.dispatch("loading/CHANGE_LOADING", false);
        })
        .catch(() => {});
    },

    // 列表数据选择
    toggleSelection(rows) {
      if (rows) {
        rows.forEach((row) => {
          this.$refs.multipleTable.toggleRowSelection(row);
        });
      } else {
        this.$refs.multipleTable.clearSelection();
      }
    },
    handleSelectionChange(val) {
      this.multipleSelection = val;
    },

    // 每页数
    sizeChangeHandle(val) {
      this.page.pageSize = val;
      this.page.pageIndex = 1;
      this.getDataList();
    },
    // 当前页
    currentChangeHandle(val) {
      this.page.pageIndex = val;
      this.getDataList();
    },

    //  前往末页
    toLastPage() {
      let max = Math.ceil(this.tablePage.totalResult / this.tablePage.pageSize);
      this.handleCurrentChange(max);
    },

    // 高级搜索
    search() {
      this.dialogFormVisible = true;
    },

    // 高级搜索-新增
    searchAdd(data) {
      let newsearchObject = {
        field: "", //栏位
        condition: "", //条件
        searchValue: "", //搜索值
        relation: "and", //关联
        relationInputShow:true//控制关联不可选择
      };
      this.form.tableData.push(newsearchObject);
      // 新增首条数据,关联不可选择
      if(this.form.tableData.length > 1){
        data.forEach((item,index)=>{
          if(index > 0){
            item.relationInputShow = false
          }
        })
      }

    },
    //高级搜索-删除
    deleteData(id, index) {
      // console.log(index);
      this.form.tableData.splice(index, 1);
    },
    // 高级搜索-保存
    savebtn() {
      this.getDataList("gjcx");
    },

    // 排序start-------------
    // 排序弹框显示
    sort() {
      this.sortDialogFormVisible = true;
    },
    // 排序删除
    sortDel(row, i) {
      this.form.sortTableData.splice(i, 1);

      let newSortObj = {
        label: row.name,
        value: row.code,
      };
      this.fields.push(newSortObj);
    },

    //排序-滑动框
    moveOption(val, index) {
      this.fields.splice(index, 1);

      let newSortTable = {
        name: val.label,
        code: val.value,
        toOrder: "ASC", //正序倒序
      };

      this.form.sortTableData.push(newSortTable);
    },

    //排序-保存
    sortSavebtn() {
      // 关闭弹框
      this.getDataList("sort");
    },
    // 排序end-------------

    // 公共处理状态编码段-复制、修改
    commenFn(row) {
      let copyObj = {
        invstscde: row.invstscde, // 处理状态编码,
        invstsnam: row.invstsnam, // 处理状态名称
      };
      this.commonData = copyObj;
      this.dataList.push(this.commonData);
      this.commonData = {};
    },

 
  
    // 复制
    copyHandle(row) {
      // 功能代码
      // this.commenFn(row);
      this.invimtmcdeInputShow=false;
       this.nums++;
      if (this.nums < 5) {
        this.commenFn(row);
      }
    },

    // 修改功能
    UpdateHandle(row) {
      // 功能处理状态编码
      row.disabled = false;
    },

   // 新增按钮
    addOrUpdateHandle() {

      this.invimtmcdeInputShow = false;

        this.dataList.push(this.commonData);
     
    },
    // 保存
    saveHandle(row, index, id) {
      
      let reg = /^[a-zA-Z]/;
      // // 校验处理状态编码首位为字母
     
      if (row.invstscde.trim().length > 1) {
        this.$message({
          message: "请输入一位字母的编码!",
          type: "warning",
          showClose: true,
        });
        return false;
      }

      // 校验处理状态名称不能为空
      if (row.invstsnam.trim() == '') {
        this.$message({
          message: "请输入处理状态名称",
          type: "warning",
          showClose: true,
          duration:3000
        });
        return false;
      }

       if (row.invstsnam.trim().length >3) {
       

        this.$message({
          message: "处理状态名称不可以超过三位",
          type: "warning",
          showClose: true,
           duration: 3000,
        });
        return false;
      }

      // 处理状态名称特殊字符校验
      var patrn =
        /[`~!@#$%^&*()_\-+=<>?:"{}|,.\/;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘',。、]/im;
      if (patrn.test(row.invstsnam.trim())) {
        this.$message({
          message: "输入的处理状态名称含有特殊字符!",
          type: "warning",
          showClose: true,
        });
        return false;
      }

      let newrow = { ...row, disabled: true };
      addpageListApi(newrow).then((res) => {
        if (res.resultCode === 0) {
          this.getDataList();
          this.$message({
            message: res.resultMsg,
            type: "success",
            showClose: true,
          });
        } else {
          this.$message({
            message: res.resultMsg,
            type: "warning",
            showClose: true,
          });
        }
      });
      this.dataList.splice(index, 1);
      this.commonData = {};
      // this.dataList.push(newrow);
      // console.log(this.dataList);
    },

    // 批量导入
    batchImport(id) {
      // 功能处理状态编码
    },

    // 枚举转换
    transformationFun(type, status) {
      return transformation.transformation(type, status);
    },

    // 删除
    deleteHandle(row, index) {
      this.nums = "";
      if (row === undefined) {
        this.dataList.splice(index, 1);
        return;
      }
     let newrow = { ...row, disabled: true };
      this.$confirm(`确定进行删除操作?`, "提示", {
        confirmButtonText: "确定",
        cancelButtonText: "取消",
        type: "warning",
      })
        .then(() => {
          delpageListApi(newrow).then((res) => {
            if (res.resultCode === 0) {
              this.$message({
                message: "删除成功",
                type: "success",
                duration: 2000,
                onClose: () => {
                  this.getDataList();
                },
              });
            } else {
              this.$message.error(res.resultMsg);
            }
          });
        })
        .catch(() => {});
    },
  },
};
</script>
<style lang="less">
.table_container .el-table__body-wrapper {
  overflow-x: auto !important;
}
.dialog .el-dialog__body {
  border-top: 1px solid #eeeeee;
}
.dialog .el-button.is-active,
.dialog .el-button.is-plain:active,
.dialog .el-button.is-plain:hover {
  border-color: #f56c6c !important;
  color: #f56c6c !important;
}

// 排序按钮样式
.checkListBox {
  border: 1px solid #eee;
  padding: 0px;
  margin-right: 30px;
  height: 300px;
  overflow-y: auto;
  text-align: center;

  // .el-checkbox {
  //   display: block;
  //   margin-bottom: 10px;
  //   width: 100%;
  // }
  .option {
    padding-top: 20px;
    line-height: 48px !important;
    height: 38px !important;
    border-bottom: 1px solid #eee;
  }
}

// 列表文字居中
.el-table td,
.el-table th {
  text-align: center;
}

// 消息提示样式
.el-message--success {
  background-color: #f0f9eb !important;
  border-color: #e4ffd6 !important;
}
.el-message__content {
  color: #90c973 !important;
}
.el-icon-success {
  color: #6cad4c !important;
}

// 新增按钮input文字居中
.el-input__inner {
  text-align: center;
}
</style>

注意后端的接收高级搜索的条件

        <if test="searchStr != null and searchStr != '' "><![CDATA[  ${searchStr}  ]]></if>
        <if test="orderStr != null and orderStr != '' "><![CDATA[  ${orderStr}  ]]></if>




  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

有时间指导毕业设计

觉得写的好的话可以给我打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值