合并分支 'dev_third_stage' 到 'master'
Dev third stage 查看合并请求 laws-nio/laws-weilai!166
This commit is contained in:
@@ -1089,3 +1089,15 @@ INSERT INTO `laws_weilai`.`country_national_flag` (`id`, `create_by`, `create_ti
|
||||
-- 增加 中国台湾 数据字典数据 2022-09-06
|
||||
INSERT INTO `laws_weilai`.`sys_dict_item` (`id`, `dict_id`, `item_text`, `item_value`, `description`, `sort_order`, `status`, `create_by`, `create_time`, `update_by`, `update_time`, `is_tag_dict`, `is_read_only`, `attribute_type`, `del_flag`, `en_name`) VALUES ('1567085557701386242', '1493782108399820801', '中国台湾', '96d49ba5797d4791906ce2baee87d4bc', '中国台湾', 1, 1, 'admin', '2022-09-06 17:41:27', 'admin', '2022-09-06 17:41:35', 1, NULL, NULL, '0', 'Tai Wan China');
|
||||
|
||||
-- 问题知识库-评论回复表。 2022-09-07
|
||||
CREATE TABLE `laws_weilai`.`problem_knowledge_base_reply` (
|
||||
`id` varchar(36) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
|
||||
`create_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建人',
|
||||
`create_time` datetime NULL DEFAULT NULL COMMENT '创建日期',
|
||||
`update_by` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '更新人',
|
||||
`update_time` datetime NULL DEFAULT NULL COMMENT '更新日期',
|
||||
`sys_org_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '所属部门',
|
||||
`comment_id` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '问题知识库-评论表id',
|
||||
`reply_content` varchar(2000) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '回复内容',
|
||||
PRIMARY KEY (`id`) USING BTREE
|
||||
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '问题知识库-评论回复表' ROW_FORMAT = Dynamic;
|
||||
|
||||
+4
-4
@@ -1434,8 +1434,8 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
|
||||
String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
|
||||
String href = "<a href='/ParameterItemCollection" + urlParamsStr + "'" + " target='_blank'>the link</a>,";
|
||||
String content = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " and other parameter items, please enter the link to handle it.";
|
||||
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " please enter " + href + " to handle it.";
|
||||
String msgTitle = "You have a homo parameter task to complete";
|
||||
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length()-1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
|
||||
String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
|
||||
|
||||
// 发送系统消息
|
||||
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
||||
@@ -1563,7 +1563,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
|
||||
String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
|
||||
String href = "<a href='/ParameterItemCollection" + urlParamsStr + "'" + " target='_blank'>the link</a>,";
|
||||
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
|
||||
String msgTitle = "You have a homo parameter task to complete";
|
||||
String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
|
||||
|
||||
// 发送系统消息
|
||||
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
||||
@@ -1697,7 +1697,7 @@ public class ParamsCollectManifestEOServiceImpl extends ServiceImpl<ParamsCollec
|
||||
String hrefFeishu = backUrl + "/ParameterItemCollection" + urlParamsStr;
|
||||
String href = "<a href='/ParameterItemCollection" + urlParamsStr + "'" + " target='_blank'>the link</a>,";
|
||||
String contentInfo = connectBuilder.substring(0, connectBuilder.toString().length() - 1) + " and other parameter items, please enter " + href + " and fill in the relevant information.";
|
||||
String msgTitle = "You have a homo parameter task to complete";
|
||||
String msgTitle = projectInfo.getProjectName() + ": You have a homo parameter task to complete";
|
||||
|
||||
// 发送系统消息
|
||||
SysAnnouncement sysAnnouncement = new SysAnnouncement();
|
||||
|
||||
@@ -70,6 +70,11 @@
|
||||
<groupId>org.springframework.cloud</groupId>
|
||||
<artifactId>spring-cloud-openfeign-core</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.itextpdf</groupId>
|
||||
<artifactId>itext-asian</artifactId>
|
||||
<version>5.2.0</version>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.lowagie</groupId>
|
||||
<artifactId>itext</artifactId>
|
||||
|
||||
+117
-14
@@ -1,26 +1,24 @@
|
||||
package com.jero.modules.system.util;
|
||||
|
||||
import com.itextpdf.text.BaseColor;
|
||||
import com.itextpdf.text.DocumentException;
|
||||
import com.itextpdf.text.Element;
|
||||
import com.itextpdf.text.pdf.*;
|
||||
import com.spire.pdf.PdfDocument;
|
||||
import com.spire.pdf.PdfPageBase;
|
||||
import com.spire.pdf.graphics.PdfBrushes;
|
||||
import com.spire.pdf.graphics.PdfFont;
|
||||
import com.spire.pdf.graphics.PdfFontFamily;
|
||||
import com.spire.pdf.graphics.PdfStringFormat;
|
||||
import com.spire.pdf.graphics.PdfTextAlignment;
|
||||
import com.spire.pdf.graphics.PdfTilingBrush;
|
||||
import com.spire.pdf.graphics.*;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.io.IOUtils;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.awt.geom.Dimension2D;
|
||||
import java.awt.geom.Point2D;
|
||||
import java.awt.geom.Rectangle2D;
|
||||
import java.io.File;
|
||||
import java.io.FileInputStream;
|
||||
import java.io.FileNotFoundException;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.OutputStream;
|
||||
import java.io.*;
|
||||
|
||||
@Slf4j
|
||||
public class PDFUtils {
|
||||
public static void main(String[] args) throws IOException {
|
||||
File file = new File("E:\\DeskTop\\动态资料\\加入IEEE会员 - 副本 - 副本.pdf");
|
||||
@@ -75,7 +73,7 @@ public class PDFUtils {
|
||||
brush.getGraphics().save();
|
||||
brush.getGraphics().translateTransform((float) brush.getSize().getWidth() / 1.5, (float) brush.getSize().getHeight() / 3);
|
||||
brush.getGraphics().rotateTransform(-45);
|
||||
brush.getGraphics().drawString(watermark, new PdfFont(PdfFontFamily.Helvetica, 10),
|
||||
brush.getGraphics().drawString(watermark, new PdfFont(PdfFontFamily.Times_Roman, 10),
|
||||
PdfBrushes.getViolet(), 0 , 0 , new PdfStringFormat(PdfTextAlignment.Center));
|
||||
brush.getGraphics().restore();
|
||||
brush.getGraphics().setTransparency(1);
|
||||
@@ -84,7 +82,7 @@ public class PDFUtils {
|
||||
page.getCanvas().drawRectangle(brush, loRect);
|
||||
}
|
||||
|
||||
public static File PDFWatermark(InputStream in,String uploadpath, String fileName,String waterMark) throws FileNotFoundException {
|
||||
public static File PDFWatermarkInvalid(InputStream in,String uploadpath, String fileName,String waterMark) throws FileNotFoundException {
|
||||
//创建PdfDocument类的对象
|
||||
PdfDocument pdf = new PdfDocument();
|
||||
//加载测试文档
|
||||
@@ -203,4 +201,109 @@ public class PDFUtils {
|
||||
// }
|
||||
// return buffer;
|
||||
// }
|
||||
|
||||
public static File PDFWatermark(InputStream in,String uploadpath, String fileName,String waterMark) {
|
||||
|
||||
String newFilePath = "";
|
||||
// 待加水印的文件
|
||||
PdfReader reader = null;
|
||||
PdfStamper stamper = null;
|
||||
FileOutputStream os = null;
|
||||
|
||||
try {
|
||||
byte[] byes = IOUtils.toByteArray(in);
|
||||
|
||||
//生成临时文件 , 读取完删除
|
||||
String path = uploadpath + File.separator + fileName;
|
||||
newFilePath = path.replace(fileName, "transformation" + fileName);
|
||||
reader = new PdfReader(byes);
|
||||
|
||||
// 加完水印的文件
|
||||
os = new FileOutputStream(newFilePath);
|
||||
stamper = new PdfStamper(reader, os);
|
||||
|
||||
int total = reader.getNumberOfPages() + 1;
|
||||
BaseFont basefont = BaseFont.createFont("/static/times.ttf", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
|
||||
// 方法二:这里的字体设置比较关键,这个设置是支持中文的写法
|
||||
// BaseFont basefont = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);// 使用系统字体
|
||||
|
||||
PdfContentByte under;
|
||||
com.itextpdf.text.Rectangle pageRect = null;
|
||||
|
||||
//水印倾斜角度(0-360)
|
||||
int angle = 45;
|
||||
//数值越大每页竖向水印越少
|
||||
int heightDensity = 10;
|
||||
//数值越大每页横向水印越少
|
||||
int widthDensity = 1;
|
||||
int textH = 0;
|
||||
int textW = 0;
|
||||
JLabel label = new JLabel();
|
||||
FontMetrics metrics;
|
||||
label.setText(waterMark);
|
||||
metrics = label.getFontMetrics(label.getFont());
|
||||
//字符串的高, 只和字体有关
|
||||
textH = metrics.getHeight();
|
||||
//字符串的宽
|
||||
textW = metrics.stringWidth(label.getText());
|
||||
|
||||
// 循环对每页插入水印
|
||||
for (int i = 1; i < total; i++) {
|
||||
pageRect = stamper.getReader().getPageSizeWithRotation(i);
|
||||
|
||||
// 获得PDF最顶层
|
||||
under = stamper.getOverContent(i);
|
||||
under.saveState();
|
||||
// set Transparency
|
||||
PdfGState gs = new PdfGState();
|
||||
// 设置透明度
|
||||
gs.setFillOpacity(0.5f);
|
||||
under.setGState(gs);
|
||||
under.restoreState();
|
||||
under.beginText();
|
||||
under.setFontAndSize(basefont, pageRect.getHeight() / 100);
|
||||
under.setColorFill(BaseColor.PINK);
|
||||
|
||||
// 水印文字成45度角倾斜
|
||||
for (int height = textH; height < pageRect.getHeight() * 3; height = height + textH * heightDensity) {
|
||||
for (int width = textW; width < pageRect.getWidth() * 1.5 + textW; width = width + textW * widthDensity) {
|
||||
// rotation:倾斜角度
|
||||
under.showTextAligned(Element.ALIGN_CENTER, waterMark, width - textW, height - textH, angle);
|
||||
}
|
||||
}
|
||||
|
||||
// 添加水印文字
|
||||
under.endText();
|
||||
under.setLineWidth(1f);
|
||||
under.stroke();
|
||||
}
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
log.error(e.getMessage());
|
||||
|
||||
} catch (DocumentException e) {
|
||||
e.printStackTrace();
|
||||
log.error(e.getMessage());
|
||||
|
||||
} finally {
|
||||
try {
|
||||
stamper.close();
|
||||
if (os != null) {
|
||||
os.close();
|
||||
}
|
||||
if (reader != null) {
|
||||
reader.close();
|
||||
}
|
||||
} catch (DocumentException e) {
|
||||
e.printStackTrace();
|
||||
log.error(e.getMessage());
|
||||
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
log.error(e.getMessage());
|
||||
}
|
||||
}
|
||||
return new File(newFilePath);
|
||||
}
|
||||
}
|
||||
|
||||
+12
@@ -167,4 +167,16 @@ public class SarFileCompareItemController extends JeroController<SarFileCompareI
|
||||
return super.importExcel(request, response, SarFileCompareItem.class);
|
||||
}
|
||||
|
||||
/**
|
||||
* 条款对比高亮
|
||||
*/
|
||||
@AutoLog(value = "文档对比信息条款表-条款对比高亮")
|
||||
@ApiOperation(value="文档对比信息条款表-条款对比高亮", notes="文档对比信息条款表-条款对比高亮")
|
||||
@GetMapping(value = "/clauseComparison")
|
||||
public Result<?> clauseComparison(@RequestParam(name="leftId",required=true) String leftId,
|
||||
@RequestParam(name="rightId",required=true) String rightId) {
|
||||
List<String> res = sarFileCompareItemService.clauseComparison(leftId,rightId);
|
||||
return Result.OK(res);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
+6
-1
@@ -1,5 +1,7 @@
|
||||
package com.jero.modules.compare.entity;
|
||||
|
||||
import com.jero.modules.system.util.StringUtils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
@@ -25,7 +27,10 @@ public class SarFileCompareMenuVo extends SarFileCompareMenu {
|
||||
this.setLeftOrRight(menu.getLeftOrRight());
|
||||
this.setItemName(menu.getItemName());
|
||||
this.setKey(menu.getId());
|
||||
this.setTitle(menu.getName() + menu.getItemName());
|
||||
this.setTitle(menu.getName());
|
||||
if(StringUtils.isNoneBlank(menu.getItemName())){
|
||||
this.setTitle(menu.getName() + menu.getItemName());
|
||||
}
|
||||
this.setRemarks(menu.getRemarks());
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -72,4 +72,6 @@ public interface ISarFileCompareItemService extends IService<SarFileCompareItem>
|
||||
List<SarFileCompareItem> queryListByInfoId(String infoId);
|
||||
|
||||
Map<String, SarFileCompareItem> queryMapByInfoId(String infoId);
|
||||
|
||||
List<String> clauseComparison(String lid,String rid);
|
||||
}
|
||||
|
||||
+10
@@ -6,6 +6,7 @@ import com.jero.modules.compare.entity.SarFileCompareItem;
|
||||
import com.jero.modules.compare.mapper.SarFileCompareItemMapper;
|
||||
import com.jero.modules.compare.service.ISarFileCompareItemService;
|
||||
import com.jero.modules.compare.utils.CompareConst;
|
||||
import com.jero.modules.compare.utils.DiffUtils;
|
||||
import com.jero.modules.system.util.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
@@ -122,4 +123,13 @@ public class SarFileCompareItemServiceImpl extends ServiceImpl<SarFileCompareIte
|
||||
}
|
||||
return resMap;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<String> clauseComparison(String lid, String rid) {
|
||||
SarFileCompareItem leftItem = this.queryById(lid);
|
||||
SarFileCompareItem rightItem = this.queryById(rid);
|
||||
DiffUtils dmp = new DiffUtils();
|
||||
List<String> htmlDiffStr = dmp.getHtmlDiffStr(leftItem.getItemsText(), rightItem.getItemsText());
|
||||
return htmlDiffStr;
|
||||
}
|
||||
}
|
||||
|
||||
+2312
File diff suppressed because it is too large
Load Diff
+1
@@ -81,6 +81,7 @@ public class ExtRepoDataServiceImpl extends ServiceImpl<ExtRepoDataMapper, ExtRe
|
||||
public void editById(ExtRepoData extRepoData) {
|
||||
Date now = new Date();
|
||||
extRepoData.setUpdateTime(now);
|
||||
extRepoData.setCreateTime(null);
|
||||
saveOrUpdate(extRepoData);
|
||||
}
|
||||
|
||||
|
||||
+56
-2
@@ -45,6 +45,9 @@ import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.io.*;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
@@ -298,10 +301,12 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
|
||||
cell.setCellValue(titleArr[i]);
|
||||
}
|
||||
|
||||
List<FileSplitValImgExportDto> allImgList = new ArrayList<>(); // 存储文件数据
|
||||
|
||||
//设置导出数据
|
||||
if(CollectionUtils.isNotEmpty(exportData)) {
|
||||
List<FileSpiltValTableExportDto> allTableList = new ArrayList<>(); // 存储表格数据
|
||||
List<FileSplitValImgExportDto> allImgList = new ArrayList<>(); // 存储文件数据
|
||||
|
||||
SarFileSplitItemsEOPage page = new SarFileSplitItemsEOPage();
|
||||
|
||||
for (int dataIndex = 0; dataIndex < exportData.size(); dataIndex++) {
|
||||
@@ -318,7 +323,11 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
|
||||
List<SarFileSplitItemsValEO> getValList = this.sarFileSplitItemsValEOService.queryByList(valEOPage);
|
||||
List<FileSplitValExportDto> valContentList = this.fileSplitItemsEOService.combineItemValInfo(getValList,allTableList,allImgList,page); //TODO
|
||||
if(CollectionUtils.isNotEmpty(valContentList)){
|
||||
itemContent = valContentList.get(0).getValContent();
|
||||
String contents = "";
|
||||
for (FileSplitValExportDto fileSplitValExportDto : valContentList) {
|
||||
contents += fileSplitValExportDto.getValContent() + "\n";
|
||||
}
|
||||
itemContent = contents;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -341,6 +350,12 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
|
||||
fileTemp.delete();
|
||||
}
|
||||
fileTemp.mkdirs();
|
||||
|
||||
//下载图片内容到导出的压缩包中
|
||||
if (allImgList != null && !allImgList.isEmpty()) {
|
||||
downLoadImgList(allImgList,path);
|
||||
}
|
||||
|
||||
//excel
|
||||
OutputStream excelOS = new FileOutputStream(path + File.separator + fileName);
|
||||
workbook.write(excelOS);
|
||||
@@ -434,4 +449,43 @@ public class LawsTechnologyEvaluationItemResultEOServiceImpl extends ServiceImpl
|
||||
}
|
||||
return evaluationMethodsName;
|
||||
}
|
||||
|
||||
public void downLoadImgList(List<FileSplitValImgExportDto> allImgList, String fileNowPath) {
|
||||
for(FileSplitValImgExportDto imgExportDto : allImgList){
|
||||
String oldPath = imgExportDto.getImgPath();
|
||||
String newPath = fileNowPath + File.separator + imgExportDto.getImgName();
|
||||
if (CosBootUtil.doesObjectExist(oldPath)){
|
||||
try (InputStream in = CosBootUtil.download(oldPath);) {
|
||||
copyFile1(in, newPath);
|
||||
} catch (IOException e) {
|
||||
e.printStackTrace();
|
||||
log.error(e.getMessage(), e);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void copyFile1(InputStream in, String destPath) throws IOException {
|
||||
BufferedInputStream bis = new BufferedInputStream(in);
|
||||
BufferedOutputStream bos =
|
||||
new BufferedOutputStream(Files.newOutputStream(Paths.get(destPath),
|
||||
StandardOpenOption.CREATE,
|
||||
StandardOpenOption.TRUNCATE_EXISTING,
|
||||
StandardOpenOption.WRITE));
|
||||
// 打开输入流
|
||||
// FileInputStream fis = new FileInputStream(srcPath);
|
||||
// 打开输出流
|
||||
// FileOutputStream fos = new FileOutputStream(destPath);
|
||||
// 读取和写入信息
|
||||
byte[] bytes = new byte[1024 * 1024];
|
||||
int len;
|
||||
while ((len = bis.read(bytes)) > 0) {
|
||||
bos.write(bytes, 0, len);
|
||||
}
|
||||
// 关闭流 先开后关 后开先关
|
||||
// 先开后关,先开的输入流,再开的输出流,那么应该先关输出流,再关输入流
|
||||
// 先关外层,再关内层。如BufferedInputStream包装了一个FileInputStream,那么先关BufferedInputStream,再关FileInputStream。
|
||||
bos.close(); // 后开先关
|
||||
bis.close(); // 先开后关
|
||||
}
|
||||
}
|
||||
|
||||
+3
-2
@@ -11,6 +11,7 @@ import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseCommen
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import com.jero.modules.problemKnowledgeBase.vo.ProblemKnowledgeBaseCommentVO;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -67,8 +68,8 @@ public class ProblemKnowledgeBaseCommentEOController extends JeroController<Prob
|
||||
@AutoLog(value = "问题知识库评论表-列表查询")
|
||||
@ApiOperation(value="问题知识库评论表-列表查询", notes="问题知识库评论表-列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<ProblemKnowledgeBaseCommentEO>> queryList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO,HttpServletRequest req) {
|
||||
List<ProblemKnowledgeBaseCommentEO> list = problemKnowledgeBaseCommentEOService.queryList(problemKnowledgeBaseCommentEO,req);
|
||||
public Result<List<ProblemKnowledgeBaseCommentVO>> queryList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO, HttpServletRequest req) {
|
||||
List<ProblemKnowledgeBaseCommentVO> list = this.problemKnowledgeBaseCommentEOService.getInfoList(problemKnowledgeBaseCommentEO,req);
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -2,6 +2,7 @@ package com.jero.modules.problemKnowledgeBase.service;
|
||||
|
||||
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseCommentEO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.jero.modules.problemKnowledgeBase.vo.ProblemKnowledgeBaseCommentVO;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.util.List;
|
||||
@@ -60,4 +61,6 @@ public interface IProblemKnowledgeBaseCommentEOService extends IService<ProblemK
|
||||
* @return
|
||||
*/
|
||||
List<ProblemKnowledgeBaseCommentEO> queryList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO, HttpServletRequest req);
|
||||
|
||||
List<ProblemKnowledgeBaseCommentVO> getInfoList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO, HttpServletRequest req);
|
||||
}
|
||||
|
||||
+45
@@ -5,9 +5,20 @@ import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.modules.problemKnowledgeBase.entity.ProblemKnowledgeBaseCommentEO;
|
||||
import com.jero.modules.problemKnowledgeBase.mapper.ProblemKnowledgeBaseCommentEOMapper;
|
||||
import com.jero.modules.problemKnowledgeBase.service.IProblemKnowledgeBaseCommentEOService;
|
||||
import com.jero.modules.problemKnowledgeBase.vo.ProblemKnowledgeBaseCommentVO;
|
||||
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||
import com.jero.modules.project.service.IProblemKnowledgeBaseReplyEOService;
|
||||
import org.apache.commons.collections4.CollectionUtils;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.beans.BeanUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Service;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
import org.springframework.transaction.annotation.Propagation;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
@@ -24,6 +35,8 @@ import javax.servlet.http.HttpServletRequest;
|
||||
@Transactional(value = "transactionManager", readOnly = false, propagation = Propagation.REQUIRED, rollbackFor = Throwable.class)
|
||||
public class ProblemKnowledgeBaseCommentEOServiceImpl extends ServiceImpl<ProblemKnowledgeBaseCommentEOMapper, ProblemKnowledgeBaseCommentEO> implements IProblemKnowledgeBaseCommentEOService {
|
||||
|
||||
@Autowired
|
||||
private IProblemKnowledgeBaseReplyEOService problemKnowledgeBaseReplyEOService;
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
@@ -96,4 +109,36 @@ public class ProblemKnowledgeBaseCommentEOServiceImpl extends ServiceImpl<Proble
|
||||
List<ProblemKnowledgeBaseCommentEO> result = this.list(queryWrapper);
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ProblemKnowledgeBaseCommentVO> getInfoList(ProblemKnowledgeBaseCommentEO problemKnowledgeBaseCommentEO, HttpServletRequest req) {
|
||||
List<ProblemKnowledgeBaseCommentVO> result = new ArrayList<>();
|
||||
List<ProblemKnowledgeBaseCommentEO> problemKnowledgeBaseCommentEOList = this.queryList(problemKnowledgeBaseCommentEO, req);
|
||||
|
||||
if(CollectionUtils.isNotEmpty(problemKnowledgeBaseCommentEOList)){
|
||||
List<String> commentIdList = problemKnowledgeBaseCommentEOList.stream().map(ProblemKnowledgeBaseCommentEO::getId).distinct().collect(Collectors.toList());
|
||||
QueryWrapper<ProblemKnowledgeBaseReplyEO> replyQueryWrapper = new QueryWrapper<>();
|
||||
replyQueryWrapper.lambda().in(ProblemKnowledgeBaseReplyEO::getCommentId,commentIdList);
|
||||
List<ProblemKnowledgeBaseReplyEO> problemKnowledgeBaseReplyEOList = this.problemKnowledgeBaseReplyEOService.list(replyQueryWrapper);
|
||||
|
||||
problemKnowledgeBaseCommentEOList.forEach(commentEO -> {
|
||||
List<ProblemKnowledgeBaseCommentVO> commentVOList = new ArrayList<>();
|
||||
|
||||
problemKnowledgeBaseReplyEOList.forEach(replyEO -> {
|
||||
if(StringUtils.equals(commentEO.getId(),replyEO.getCommentId())){
|
||||
ProblemKnowledgeBaseCommentVO commentVO = new ProblemKnowledgeBaseCommentVO();
|
||||
BeanUtils.copyProperties(replyEO, commentVO);
|
||||
commentVO.setCommentContent(replyEO.getReplyContent());
|
||||
commentVOList.add(commentVO);
|
||||
}
|
||||
});
|
||||
|
||||
ProblemKnowledgeBaseCommentVO commentVO = new ProblemKnowledgeBaseCommentVO();
|
||||
BeanUtils.copyProperties(commentEO, commentVO);
|
||||
commentVO.setProblemKnowledgeBaseCommentVOList(commentVOList);
|
||||
result.add(commentVO);
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
+62
@@ -0,0 +1,62 @@
|
||||
package com.jero.modules.problemKnowledgeBase.vo;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.List;
|
||||
|
||||
@Data
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="problem_knowledge_base_comment对象", description="问题知识库评论表")
|
||||
public class ProblemKnowledgeBaseCommentVO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**主键*/
|
||||
@ApiModelProperty(value = "主键")
|
||||
private java.lang.String id;
|
||||
|
||||
/**创建人*/
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private java.lang.String createBy;
|
||||
|
||||
/**创建日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private java.util.Date createTime;
|
||||
|
||||
/**更新人*/
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private java.lang.String updateBy;
|
||||
|
||||
/**更新日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新日期")
|
||||
private java.util.Date updateTime;
|
||||
|
||||
/**所属部门*/
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private java.lang.String sysOrgCode;
|
||||
|
||||
/**问题知识库id*/
|
||||
@ApiModelProperty(value = "问题知识库id")
|
||||
private java.lang.String problemKnowledgeBaseId;
|
||||
|
||||
/**评论内容*/
|
||||
@ApiModelProperty(value = "评论内容")
|
||||
private java.lang.String commentContent;
|
||||
|
||||
/**评论用户id*/
|
||||
@ApiModelProperty(value = "评论用户id")
|
||||
private java.lang.String commentUserId;
|
||||
|
||||
private List<ProblemKnowledgeBaseCommentVO> problemKnowledgeBaseCommentVOList;
|
||||
}
|
||||
+170
@@ -0,0 +1,170 @@
|
||||
package com.jero.modules.project.controller;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import com.jero.common.api.vo.Result;
|
||||
import com.jero.common.system.query.QueryGenerator;
|
||||
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||
import com.jero.modules.project.service.IProblemKnowledgeBaseReplyEOService;
|
||||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
import com.baomidou.mybatisplus.core.metadata.IPage;
|
||||
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import com.jero.common.system.base.controller.JeroController;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
import org.springframework.web.servlet.ModelAndView;
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import com.jero.common.aspect.annotation.AutoLog;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 问题知识库-评论回复表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-09-07
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Api(tags="问题知识库-评论回复表")
|
||||
@RestController
|
||||
@RequestMapping("/project/problemKnowledgeBaseReplyEO")
|
||||
@Slf4j
|
||||
public class ProblemKnowledgeBaseReplyEOController extends JeroController<ProblemKnowledgeBaseReplyEO, IProblemKnowledgeBaseReplyEOService> {
|
||||
@Autowired
|
||||
private IProblemKnowledgeBaseReplyEOService problemKnowledgeBaseReplyEOService;
|
||||
|
||||
/**
|
||||
* 分页列表查询
|
||||
*
|
||||
* @param problemKnowledgeBaseReplyEO
|
||||
* @param pageNo
|
||||
* @param pageSize
|
||||
* @param req
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "问题知识库-评论回复表-分页列表查询")
|
||||
@ApiOperation(value="问题知识库-评论回复表-分页列表查询", notes="问题知识库-评论回复表-分页列表查询")
|
||||
@GetMapping(value = "/page")
|
||||
public Result<?> queryPageList(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO,
|
||||
@RequestParam(name="pageNo", defaultValue="1") Integer pageNo,
|
||||
@RequestParam(name="pageSize", defaultValue="10") Integer pageSize,
|
||||
HttpServletRequest req) {
|
||||
QueryWrapper<ProblemKnowledgeBaseReplyEO> queryWrapper = QueryGenerator.initQueryWrapper(problemKnowledgeBaseReplyEO, req.getParameterMap());
|
||||
Page<ProblemKnowledgeBaseReplyEO> page = new Page<ProblemKnowledgeBaseReplyEO>(pageNo, pageSize);
|
||||
IPage<ProblemKnowledgeBaseReplyEO> pageList = problemKnowledgeBaseReplyEOService.page(page, queryWrapper);
|
||||
return Result.OK(pageList);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "问题知识库-评论回复表-列表查询")
|
||||
@ApiOperation(value="问题知识库-评论回复表-列表查询", notes="问题知识库-评论回复表-列表查询")
|
||||
@GetMapping(value = "/list")
|
||||
public Result<List<ProblemKnowledgeBaseReplyEO>> queryList() {
|
||||
List<ProblemKnowledgeBaseReplyEO> list = problemKnowledgeBaseReplyEOService.queryList();
|
||||
return Result.OK(list);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加
|
||||
*
|
||||
* @param problemKnowledgeBaseReplyEO
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "问题知识库-评论回复表-添加")
|
||||
@ApiOperation(value="问题知识库-评论回复表-添加", notes="问题知识库-评论回复表-添加")
|
||||
@PostMapping(value = "/add")
|
||||
public Result<?> add(@Validated @RequestBody ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||
problemKnowledgeBaseReplyEOService.add(problemKnowledgeBaseReplyEO);
|
||||
return Result.OK("添加成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑
|
||||
*
|
||||
* @param problemKnowledgeBaseReplyEO
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "问题知识库-评论回复表-编辑")
|
||||
@ApiOperation(value="问题知识库-评论回复表-编辑", notes="问题知识库-评论回复表-编辑")
|
||||
@PutMapping(value = "/edit")
|
||||
public Result<?> edit(@Validated @RequestBody ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||
problemKnowledgeBaseReplyEOService.editById(problemKnowledgeBaseReplyEO);
|
||||
return Result.OK("编辑成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "问题知识库-评论回复表-通过id删除")
|
||||
@ApiOperation(value="问题知识库-评论回复表-通过id删除", notes="问题知识库-评论回复表-通过id删除")
|
||||
@DeleteMapping(value = "/delete")
|
||||
public Result<?> delete(@RequestParam(name="id",required=true) String id) {
|
||||
problemKnowledgeBaseReplyEOService.deleteById(id);
|
||||
return Result.OK("删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "问题知识库-评论回复表-批量删除")
|
||||
@ApiOperation(value="问题知识库-评论回复表-批量删除", notes="问题知识库-评论回复表-批量删除")
|
||||
@DeleteMapping(value = "/deleteBatch")
|
||||
public Result<?> deleteBatch(@RequestParam(name="ids",required=true) String ids) {
|
||||
this.problemKnowledgeBaseReplyEOService.deleteByIds(Arrays.asList(ids.split(",")));
|
||||
return Result.OK("批量删除成功!");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@AutoLog(value = "问题知识库-评论回复表-通过id查询")
|
||||
@ApiOperation(value="问题知识库-评论回复表-通过id查询", notes="问题知识库-评论回复表-通过id查询")
|
||||
@GetMapping(value = "/queryById")
|
||||
public Result<?> queryById(@RequestParam(name="id",required=true) String id) {
|
||||
ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO = problemKnowledgeBaseReplyEOService.queryById(id);
|
||||
if(problemKnowledgeBaseReplyEO==null) {
|
||||
return Result.error("未找到对应数据");
|
||||
}
|
||||
return Result.OK(problemKnowledgeBaseReplyEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 导出excel
|
||||
*
|
||||
* @param request
|
||||
* @param problemKnowledgeBaseReplyEO
|
||||
*/
|
||||
@RequestMapping(value = "/exportXls")
|
||||
public ModelAndView exportXls(HttpServletRequest request, ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||
return super.exportXls(request, problemKnowledgeBaseReplyEO, ProblemKnowledgeBaseReplyEO.class, "问题知识库-评论回复表");
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过excel导入数据
|
||||
*
|
||||
* @param request
|
||||
* @param response
|
||||
* @return
|
||||
*/
|
||||
@RequestMapping(value = "/importExcel", method = RequestMethod.POST)
|
||||
public Result<?> importExcel(HttpServletRequest request, HttpServletResponse response) {
|
||||
return super.importExcel(request, response, ProblemKnowledgeBaseReplyEO.class);
|
||||
}
|
||||
|
||||
}
|
||||
+74
@@ -0,0 +1,74 @@
|
||||
package com.jero.modules.project.entity;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.math.BigDecimal;
|
||||
import com.baomidou.mybatisplus.annotation.IdType;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.Data;
|
||||
import com.fasterxml.jackson.annotation.JsonFormat;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
import org.jeecgframework.poi.excel.annotation.Excel;
|
||||
import com.jero.common.aspect.annotation.Dict;
|
||||
import io.swagger.annotations.ApiModel;
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.experimental.Accessors;
|
||||
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
|
||||
|
||||
|
||||
/**
|
||||
* @Description: 问题知识库-评论回复表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-09-07
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Data
|
||||
@TableName("problem_knowledge_base_reply")
|
||||
@Accessors(chain = true)
|
||||
@EqualsAndHashCode(callSuper = false)
|
||||
@ApiModel(value="problem_knowledge_base_reply对象", description="问题知识库-评论回复表")
|
||||
public class ProblemKnowledgeBaseReplyEO implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
/**主键*/
|
||||
@TableId(type = IdType.ASSIGN_ID)
|
||||
@ApiModelProperty(value = "主键")
|
||||
private java.lang.String id;
|
||||
|
||||
/**创建人*/
|
||||
@ApiModelProperty(value = "创建人")
|
||||
private java.lang.String createBy;
|
||||
|
||||
/**创建日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "创建日期")
|
||||
private java.util.Date createTime;
|
||||
|
||||
/**更新人*/
|
||||
@ApiModelProperty(value = "更新人")
|
||||
private java.lang.String updateBy;
|
||||
|
||||
/**更新日期*/
|
||||
@JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
|
||||
@DateTimeFormat(pattern="yyyy-MM-dd HH:mm:ss")
|
||||
@ApiModelProperty(value = "更新日期")
|
||||
private java.util.Date updateTime;
|
||||
|
||||
/**所属部门*/
|
||||
@ApiModelProperty(value = "所属部门")
|
||||
private java.lang.String sysOrgCode;
|
||||
|
||||
/**问题知识库-评论表id*/
|
||||
@Excel(name = "问题知识库-评论表id", width = 15)
|
||||
@ApiModelProperty(value = "问题知识库-评论表id")
|
||||
private java.lang.String commentId;
|
||||
|
||||
/**回复内容*/
|
||||
@Excel(name = "回复内容", width = 15)
|
||||
@ApiModelProperty(value = "回复内容")
|
||||
private java.lang.String replyContent;
|
||||
|
||||
}
|
||||
+17
@@ -0,0 +1,17 @@
|
||||
package com.jero.modules.project.mapper;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
|
||||
|
||||
/**
|
||||
* @Description: 问题知识库-评论回复表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-09-07
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface ProblemKnowledgeBaseReplyEOMapper extends BaseMapper<ProblemKnowledgeBaseReplyEO> {
|
||||
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
<?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.jero.modules.project.mapper.ProblemKnowledgeBaseReplyEOMapper">
|
||||
<resultMap id="ProblemKnowledgeBaseReplyEOResultMap" type="com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO">
|
||||
<id column="id" property="id" />
|
||||
<result column="create_by" property="createBy" />
|
||||
<result column="create_time" property="createTime" />
|
||||
<result column="update_by" property="updateBy" />
|
||||
<result column="update_time" property="updateTime" />
|
||||
<result column="sys_org_code" property="sysOrgCode" />
|
||||
<result column="comment_id" property="commentId" />
|
||||
<result column="reply_content" property="replyContent" />
|
||||
</resultMap>
|
||||
</mapper>
|
||||
+61
@@ -0,0 +1,61 @@
|
||||
package com.jero.modules.project.service;
|
||||
|
||||
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @Description: 问题知识库-评论回复表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-09-07
|
||||
* @Version: V1.0
|
||||
*/
|
||||
public interface IProblemKnowledgeBaseReplyEOService extends IService<ProblemKnowledgeBaseReplyEO> {
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param problemKnowledgeBaseReplyEO
|
||||
* @return
|
||||
*/
|
||||
void add(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO);
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param problemKnowledgeBaseReplyEO
|
||||
* @return
|
||||
*/
|
||||
void editById(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO);
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
void deleteById(String id);
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
void deleteByIds(List<String> ids);
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
ProblemKnowledgeBaseReplyEO queryById(String id);
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
List<ProblemKnowledgeBaseReplyEO> queryList();
|
||||
}
|
||||
+89
@@ -0,0 +1,89 @@
|
||||
package com.jero.modules.project.service.impl;
|
||||
|
||||
import com.jero.modules.project.entity.ProblemKnowledgeBaseReplyEO;
|
||||
import com.jero.modules.project.mapper.ProblemKnowledgeBaseReplyEOMapper;
|
||||
import com.jero.modules.project.service.IProblemKnowledgeBaseReplyEOService;
|
||||
import org.springframework.stereotype.Service;
|
||||
import java.util.List;
|
||||
import java.util.Date;
|
||||
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
||||
|
||||
/**
|
||||
* @Description: 问题知识库-评论回复表
|
||||
* @Author: jero-boot
|
||||
* @Date: 2022-09-07
|
||||
* @Version: V1.0
|
||||
*/
|
||||
@Service
|
||||
public class ProblemKnowledgeBaseReplyEOServiceImpl extends ServiceImpl<ProblemKnowledgeBaseReplyEOMapper, ProblemKnowledgeBaseReplyEO> implements IProblemKnowledgeBaseReplyEOService {
|
||||
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
* @param problemKnowledgeBaseReplyEO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void add(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||
Date now = new Date();
|
||||
problemKnowledgeBaseReplyEO.setCreateTime(now);
|
||||
problemKnowledgeBaseReplyEO.setUpdateTime(now);
|
||||
save(problemKnowledgeBaseReplyEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新
|
||||
*
|
||||
* @param problemKnowledgeBaseReplyEO
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void editById(ProblemKnowledgeBaseReplyEO problemKnowledgeBaseReplyEO) {
|
||||
Date now = new Date();
|
||||
problemKnowledgeBaseReplyEO.setUpdateTime(now);
|
||||
saveOrUpdate(problemKnowledgeBaseReplyEO);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id删除
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteById(String id) {
|
||||
removeById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 批量删除
|
||||
*
|
||||
* @param ids
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public void deleteByIds(List<String> ids) {
|
||||
removeByIds(ids);
|
||||
}
|
||||
|
||||
/**
|
||||
* 通过id查询
|
||||
*
|
||||
* @param id
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public ProblemKnowledgeBaseReplyEO queryById(String id) {
|
||||
return getById(id);
|
||||
}
|
||||
|
||||
/**
|
||||
* 列表查询
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
@Override
|
||||
public List<ProblemKnowledgeBaseReplyEO> queryList() {
|
||||
return list();
|
||||
}
|
||||
}
|
||||
+40
-12
@@ -216,6 +216,8 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
||||
@Autowired
|
||||
ProjectRelatedPersonnelServiceImpl projectRelatedPersonnelService;
|
||||
|
||||
@Autowired
|
||||
private IProjectLawsInventoryRejectCauseEOService projectLawsInventoryRejectCauseEOService;
|
||||
/**
|
||||
* 保存
|
||||
*
|
||||
@@ -597,9 +599,14 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
||||
removeById(id);
|
||||
this.projectTaskInventoryEOService.deleteByProjectLawsInventoryIds(Arrays.asList(id.split(",")));
|
||||
|
||||
QueryWrapper<ConditionAssessmentEO> removeWrapper = new QueryWrapper<>();
|
||||
removeWrapper.lambda().eq(ConditionAssessmentEO::getProjectLawsInventoryId,id);
|
||||
this.conditionAssessmentEOService.remove(removeWrapper);
|
||||
//删除该条法规清单数据的 项目当前状态数据
|
||||
QueryWrapper<ConditionAssessmentEO> conditionAssessmentRemoveWrapper = new QueryWrapper<>();
|
||||
conditionAssessmentRemoveWrapper.lambda().eq(ConditionAssessmentEO::getProjectLawsInventoryId,id);
|
||||
this.conditionAssessmentEOService.remove(conditionAssessmentRemoveWrapper);
|
||||
//删除该条法规清单数据的拒绝原因。
|
||||
QueryWrapper<ProjectLawsInventoryRejectCauseEO> rejectCauseRemoveWrapper = new QueryWrapper<>();
|
||||
rejectCauseRemoveWrapper.lambda().eq(ProjectLawsInventoryRejectCauseEO::getProjectLawsInventoryId,id);
|
||||
this.projectLawsInventoryRejectCauseEOService.remove(rejectCauseRemoveWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -635,9 +642,15 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
||||
removeByIds(ids);
|
||||
this.projectTaskInventoryEOService.deleteByProjectLawsInventoryIds(ids);
|
||||
|
||||
QueryWrapper<ConditionAssessmentEO> removeWrapper = new QueryWrapper<>();
|
||||
removeWrapper.lambda().in(ConditionAssessmentEO::getProjectLawsInventoryId,ids);
|
||||
this.conditionAssessmentEOService.remove(removeWrapper);
|
||||
//删除该条法规清单数据的 项目当前状态数据
|
||||
QueryWrapper<ConditionAssessmentEO> conditionAssessmentRemoveWrapper = new QueryWrapper<>();
|
||||
conditionAssessmentRemoveWrapper.lambda().in(ConditionAssessmentEO::getProjectLawsInventoryId,ids);
|
||||
this.conditionAssessmentEOService.remove(conditionAssessmentRemoveWrapper);
|
||||
|
||||
//删除该条法规清单数据的拒绝原因。
|
||||
QueryWrapper<ProjectLawsInventoryRejectCauseEO> rejectCauseRemoveWrapper = new QueryWrapper<>();
|
||||
rejectCauseRemoveWrapper.lambda().in(ProjectLawsInventoryRejectCauseEO::getProjectLawsInventoryId,ids);
|
||||
this.projectLawsInventoryRejectCauseEOService.remove(rejectCauseRemoveWrapper);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1385,14 +1398,29 @@ public class ProjectLawsInventoryEOServiceImpl extends ServiceImpl<ProjectLawsIn
|
||||
projectLawsInventoryEO.setInventoryAffirmStatus(InventoryAffirmStatusEnum.LIST_TO_CONFIRM.getValue());
|
||||
projectLawsInventoryEO.setInventoryAffirmDueDate(sdf.parse(inventoryAffirmDueDate));
|
||||
LambdaUpdateWrapper<ProjectLawsInventoryEO> updateWrapper = new LambdaUpdateWrapper<>();
|
||||
updateWrapper.set(ProjectLawsInventoryEO::getRegulationOwnerSubmitStatus,null);
|
||||
updateWrapper.set(ProjectLawsInventoryEO::getHomologationEngineerSubmitStatus,null);
|
||||
updateWrapper.eq(ProjectLawsInventoryEO::getId,projectLawsInventoryEO.getId());
|
||||
super.update(projectLawsInventoryEO, updateWrapper);
|
||||
|
||||
userIdList.add(projectLawsInventoryEO.getHomologationEngineerId());
|
||||
userIdList.add(projectLawsInventoryEO.getRegulationOwnerId());
|
||||
//认证工程师标识 如果认证工程师提交状态为空, 或认证工程师拒绝过,给认证工程师任务,让他处理
|
||||
boolean homologationEngineerFlag = (
|
||||
StringUtils.isEmpty(projectLawsInventoryEO.getHomologationEngineerSubmitStatus())
|
||||
|| StringUtils.equals(projectLawsInventoryEO.getHomologationEngineerSubmitStatus(),"1")
|
||||
);
|
||||
//法规工程师标识 如果法规工程师提交状态为空, 或法规工程师拒绝过,给法规工程师任务,让他处理
|
||||
boolean regulationOwnerFlag = (
|
||||
StringUtils.isEmpty(projectLawsInventoryEO.getRegulationOwnerSubmitStatus())
|
||||
|| StringUtils.equals(projectLawsInventoryEO.getRegulationOwnerSubmitStatus(),"1")
|
||||
);
|
||||
if(homologationEngineerFlag){
|
||||
updateWrapper.set(ProjectLawsInventoryEO::getHomologationEngineerSubmitStatus,null);
|
||||
userIdList.add(projectLawsInventoryEO.getHomologationEngineerId());
|
||||
}
|
||||
if(regulationOwnerFlag){
|
||||
updateWrapper.set(ProjectLawsInventoryEO::getRegulationOwnerSubmitStatus,null);
|
||||
userIdList.add(projectLawsInventoryEO.getRegulationOwnerId());
|
||||
}
|
||||
|
||||
if(homologationEngineerFlag || regulationOwnerFlag){
|
||||
super.update(projectLawsInventoryEO, updateWrapper);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -494,7 +494,7 @@ public class LawsMonthlyReportWriteEOServiceImpl extends ServiceImpl<LawsMonthly
|
||||
os.close();
|
||||
fis.close();
|
||||
} catch (Exception e) {
|
||||
|
||||
e.printStackTrace();
|
||||
}finally {
|
||||
IOUtils.closeQuietly(os);
|
||||
File file = new File(uploadpath + "/tempZip"+l);
|
||||
|
||||
+92
-54
@@ -28,17 +28,22 @@ import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTFldChar;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTJc;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTPageMar;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTSectPr;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblLayoutType;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblPr;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTTblWidth;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.CTText;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STFldCharType;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STJc;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblLayoutType;
|
||||
import org.openxmlformats.schemas.wordprocessingml.x2006.main.STTblWidth;
|
||||
|
||||
import java.io.InputStream;
|
||||
import java.math.BigInteger;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
public class WordUtil {
|
||||
@@ -410,11 +415,12 @@ public class WordUtil {
|
||||
String stateName = dictItem(sysDictItems, state,cut, DictCodeReportEnum.STATE.getValue());
|
||||
String useMethodName = dictItem(sysDictItems, useMethod,cut, DictCodeReportEnum.USEMETHOD.getValue());
|
||||
|
||||
|
||||
XWPFTable table = document.createTable(12, 2);
|
||||
|
||||
//表格属性
|
||||
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
||||
//固定列宽(英文和数字的时候自动换行)
|
||||
CTTblLayoutType ctTblLayoutType = tablePr.isSetTblLayout() ? tablePr.getTblLayout() : tablePr.addNewTblLayout();
|
||||
ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||
//表格宽度
|
||||
CTJc cTJc = tablePr.addNewJc();
|
||||
//居中
|
||||
@@ -478,57 +484,62 @@ public class WordUtil {
|
||||
//第12行
|
||||
setCell(table, 11,"Link",link);
|
||||
}
|
||||
// if(CutEnum.CN.getValue().equals(cut)){
|
||||
// //第1行
|
||||
// setCell(table.getRow(0), "相关领域",technologyTerritoryName);
|
||||
// //第2行
|
||||
// setCell(table.getRow(1), "适用车型",applyCarName);
|
||||
// //第3行
|
||||
// setCell(table.getRow(2), "适用范围",applyScopeName);
|
||||
// //第4行
|
||||
// setCell(table.getRow(3), "状态",stateName);
|
||||
// //第5行
|
||||
// setCell(table.getRow(4), "用法",useMethodName);
|
||||
// //第6行
|
||||
// setCell(table.getRow(5), "实施车型",implementCar);
|
||||
// //第7行
|
||||
// setCell(table.getRow(6), "新车型实施日期",newCarImplementTime);
|
||||
// //第8行
|
||||
// setCell(table.getRow(7), "在产车实施日期",productionCarImplementTime);
|
||||
// //第9行
|
||||
// setCell(table.getRow(8), "主要内容",contentCn);
|
||||
// //第10行
|
||||
// setCell(table.getRow(9), "NIO工作进展",workProgressCn);
|
||||
// //第11行
|
||||
// setCell(table.getRow(10), "法规联系人",lawsContact);
|
||||
// //第12行
|
||||
// setCell(table.getRow(11), "链接",link);
|
||||
// }else{
|
||||
// //第1行
|
||||
// setCell(table.getRow(0), "Related Areas",technologyTerritoryName);
|
||||
// //第2行
|
||||
// setCell(table.getRow(1), "Vehicle Type",applyCarName);
|
||||
// //第3行
|
||||
// setCell(table.getRow(2), "Scope",applyScopeName);
|
||||
// //第4行
|
||||
// setCell(table.getRow(3), "Status",stateName);
|
||||
// //第5行
|
||||
// setCell(table.getRow(4), "usage",useMethodName);
|
||||
// //第6行
|
||||
// setCell(table.getRow(5), "Implementation Model",implementCar);
|
||||
// //第7行
|
||||
// setCell(table.getRow(6), "New Type Execution Date",newCarImplementTime);
|
||||
// //第8行
|
||||
// setCell(table.getRow(7), "New Vehicle Execution Date",productionCarImplementTime);
|
||||
// //第9行
|
||||
// setCell(table.getRow(8), "Main Content",contentEn);
|
||||
// //第10行
|
||||
// setCell(table.getRow(9), "NIO Work Progress",workProgressEn);
|
||||
// //第11行
|
||||
// setCell(table.getRow(10), "Regulatory Contact",lawsContact);
|
||||
// //第12行
|
||||
// setCell(table.getRow(11), "Link",link);
|
||||
// }
|
||||
// ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 已固定长度分隔字符串
|
||||
* @param str
|
||||
* @return
|
||||
*/
|
||||
public List<String> splitStr(String str){
|
||||
//检查参数是否合法
|
||||
if (null == str || str.equals("")) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
int length = 3;
|
||||
int n = (str.length() + length - 1) / length; //获取整个字符串可以被切割成字符子串的个数
|
||||
List<String> list = new ArrayList<>();
|
||||
for (int i = 0; i < n; i++) {
|
||||
if (i < (n - 1)) {
|
||||
list.add(str.substring(i * length, (i + 1) * length)) ;
|
||||
} else {
|
||||
list.add(str.substring(i * length));
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断字符串是否完全由数字组成
|
||||
* @param str
|
||||
* @return
|
||||
*/
|
||||
public boolean verifyFigure(String str){
|
||||
Pattern p = Pattern.compile("[0-9]*");
|
||||
Matcher m = p.matcher(str);
|
||||
return m.matches();
|
||||
}
|
||||
/**
|
||||
* 判断字符串是否完全由字母组成
|
||||
* @param str
|
||||
* @return
|
||||
*/
|
||||
public boolean verifyEn(String str){
|
||||
Pattern enPatten = Pattern.compile("^[a-zA-Z]*");
|
||||
Matcher enMatch = enPatten.matcher(str);
|
||||
return enMatch.matches();
|
||||
}
|
||||
/**
|
||||
* 判断字符串是否完全由数字和字母组成
|
||||
* @param str
|
||||
* @return
|
||||
*/
|
||||
public boolean verifyFigureAndEn(String str){
|
||||
Pattern figureAndEnPattern = Pattern.compile("[0-9a-zA-Z]{1,}");
|
||||
Matcher figureAndEnMatcher = figureAndEnPattern.matcher(str);
|
||||
return figureAndEnMatcher.matches();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -553,6 +564,9 @@ public class WordUtil {
|
||||
|
||||
//表格属性
|
||||
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
||||
//固定列宽(英文和数字的时候自动换行)
|
||||
CTTblLayoutType ctTblLayoutType = tablePr.isSetTblLayout() ? tablePr.getTblLayout() : tablePr.addNewTblLayout();
|
||||
ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||
//表格宽度
|
||||
CTJc cTJc = tablePr.addNewJc();
|
||||
//居中
|
||||
@@ -597,6 +611,9 @@ public class WordUtil {
|
||||
XWPFTable table = document.createTable(newOpinionTemplateEOList.size()+1, 4);
|
||||
//表格属性
|
||||
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
||||
//固定列宽(英文和数字的时候自动换行)
|
||||
CTTblLayoutType ctTblLayoutType = tablePr.isSetTblLayout() ? tablePr.getTblLayout() : tablePr.addNewTblLayout();
|
||||
ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||
//表格宽度
|
||||
CTJc cTJc = tablePr.addNewJc();
|
||||
//居中
|
||||
@@ -632,6 +649,9 @@ public class WordUtil {
|
||||
XWPFTable table = document.createTable(newStandardTemplateEOList.size()+1, 5);
|
||||
//表格属性
|
||||
CTTblPr tablePr = table.getCTTbl().addNewTblPr();
|
||||
//固定列宽(英文和数字的时候自动换行)
|
||||
CTTblLayoutType ctTblLayoutType = tablePr.isSetTblLayout() ? tablePr.getTblLayout() : tablePr.addNewTblLayout();
|
||||
ctTblLayoutType.setType(STTblLayoutType.FIXED);
|
||||
//表格宽度
|
||||
CTJc cTJc = tablePr.addNewJc();
|
||||
//居中
|
||||
@@ -809,11 +829,29 @@ public class WordUtil {
|
||||
ctTblWidth0.setW(BigInteger.valueOf(2000));
|
||||
CTTblWidth ctTblWidth1 = table.getRow(number).getCell(1).getCTTc().addNewTcPr().addNewTcW();
|
||||
ctTblWidth1.setType(STTblWidth.DXA);
|
||||
ctTblWidth1.setW(BigInteger.valueOf(5000));
|
||||
ctTblWidth1.setW(BigInteger.valueOf(6000));
|
||||
|
||||
// XWPFParagraph para = table.getRow(number).getCell(1).getParagraphs().get(0);
|
||||
// XWPFRun run = para.createRun();//对某个段落设置格式
|
||||
// run.addBreak();//换行
|
||||
|
||||
table.getRow(number).getCell(0).setText(fieldName);
|
||||
table.getRow(number).getCell(1).setText(technologyTerritory);
|
||||
|
||||
}
|
||||
// private static void setCell(XWPFTable table, int number, String fieldName,String technologyTerritory) {
|
||||
//
|
||||
// table.getRow(number).setHeight(500);
|
||||
// CTTblWidth ctTblWidth0 = table.getRow(number).getCell(0).getCTTc().addNewTcPr().addNewTcW();
|
||||
// ctTblWidth0.setType(STTblWidth.DXA);
|
||||
// ctTblWidth0.setW(BigInteger.valueOf(2000));
|
||||
// CTTblWidth ctTblWidth1 = table.getRow(number).getCell(1).getCTTc().addNewTcPr().addNewTcW();
|
||||
// ctTblWidth1.setType(STTblWidth.DXA);
|
||||
// ctTblWidth1.setW(BigInteger.valueOf(5000));
|
||||
//
|
||||
// table.getRow(number).getCell(0).setText(fieldName);
|
||||
// table.getRow(number).getCell(1).setText(technologyTerritory);
|
||||
// }
|
||||
// private static void setCell(XWPFTableRow tableRow, String fieldName,String technologyTerritory) {
|
||||
//
|
||||
// tableRow.setHeight(500);
|
||||
|
||||
+1
-1
@@ -1519,7 +1519,7 @@ public class DocumentSearchServiceImpl implements IDocumentSearchService {
|
||||
list1.add("</text>");
|
||||
mapTemp.put("pre_tags", list);
|
||||
mapTemp.put("post_tags", list1);
|
||||
mapTemp.put("fragment_size", 500);//高亮字段内容长度,去除html样式标签,统计字数,设置为200
|
||||
mapTemp.put("fragment_size", 320);//高亮字段内容长度,去除html样式标签,统计字数,设置为200
|
||||
mapTemp.put("number_of_fragments", 1);//高亮内容默认分为5段, 此处设置为一段
|
||||
mapTemp.put("type", "plain");
|
||||
mapHighlight.put(key, mapTemp);
|
||||
|
||||
+1
-1
@@ -3209,7 +3209,7 @@ public class FileSplitItemsEOServiceImpl extends ServiceImpl<FileSplitItemsEOMap
|
||||
}
|
||||
|
||||
} else if ("TEXT".equals(type)) {
|
||||
lastOne.setValContent(lastOne.getValContent()+itemsValEO.getItemContent() + "\n");
|
||||
lastOne.setValContent(StringUtils.isNotEmpty(lastOne.getValContent())? lastOne.getValContent() : "" + itemsValEO.getItemContent() + "\n");
|
||||
valContent.add(lastOne);
|
||||
|
||||
//第一次
|
||||
|
||||
Binary file not shown.
@@ -180,6 +180,7 @@ export default {
|
||||
},
|
||||
mounted() {
|
||||
this.getSeach()
|
||||
this.queryParam = {...this.queryParam}
|
||||
},
|
||||
methods: {
|
||||
searchQuery() {
|
||||
@@ -199,6 +200,7 @@ export default {
|
||||
this.searchList.forEach((item, index) => {
|
||||
if(item.db_field_name === 'serialNumber') {
|
||||
this.queryParam[item.db_field_name] = this.searchalonesplit
|
||||
this.queryParam = {...this.queryParam}
|
||||
}
|
||||
})
|
||||
}
|
||||
@@ -209,6 +211,7 @@ export default {
|
||||
// },
|
||||
dateChange(item) {
|
||||
this.queryParam[item] = moment(this.queryParam[item]).format('YYYY-MM-DD')
|
||||
|
||||
},
|
||||
onChange(item) {
|
||||
if (this.queryParam[item] && this.queryParam[item].length > 0) {
|
||||
|
||||
@@ -856,7 +856,37 @@
|
||||
.table .ant-table-column-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
<style scoped lang="less">
|
||||
.box {
|
||||
width: 100%;
|
||||
height: calc(100% - 100px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-tbody .yellow {
|
||||
background-color: #ffff001f !important;
|
||||
height: 40px !important;
|
||||
border: none !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
::v-deep .ant-table-row:first-child {
|
||||
background: #fff!important;
|
||||
/*opacity: 0.9;*/
|
||||
}
|
||||
|
||||
::v-deep .ant-table-body {
|
||||
background: transparent!important;
|
||||
}
|
||||
.content-text {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -891,37 +921,6 @@
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style scoped>
|
||||
.box {
|
||||
width: 100%;
|
||||
height: calc(100% - 100px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-tbody .yellow {
|
||||
background-color: #ffff001f !important;
|
||||
height: 40px !important;
|
||||
border: none !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
::v-deep .ant-table-row:first-child {
|
||||
background: #fff!important;
|
||||
/*opacity: 0.9;*/
|
||||
}
|
||||
|
||||
::v-deep .ant-table-body {
|
||||
background: transparent!important;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.resize-table-th {
|
||||
position: relative;
|
||||
|
||||
@@ -222,7 +222,7 @@
|
||||
dataSource: [],
|
||||
pageNo: 1,
|
||||
pageSize: 10,
|
||||
pageSizeOptions: ['10', '20','30', '50'],
|
||||
pageSizeOptions: ['100', '200'],
|
||||
total: 0,
|
||||
searchParmes: {},
|
||||
loading: false,
|
||||
@@ -672,7 +672,37 @@
|
||||
.table .ant-table-column-title {
|
||||
font-weight: bold;
|
||||
}
|
||||
</style>
|
||||
<style scoped lang="less">
|
||||
.box {
|
||||
width: 100%;
|
||||
height: calc(100% - 100px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-tbody .yellow {
|
||||
background-color: #ffff001f !important;
|
||||
height: 40px !important;
|
||||
border: none !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
::v-deep .ant-table-row:first-child {
|
||||
background: #fff!important;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
::v-deep .ant-table-body {
|
||||
background: transparent!important;
|
||||
}
|
||||
.content-text {
|
||||
width: 100%;
|
||||
display: flex;
|
||||
@@ -706,37 +736,6 @@
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<style scoped>
|
||||
.box {
|
||||
width: 100%;
|
||||
height: calc(100% - 100px);
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.text {
|
||||
margin-right: 10px;
|
||||
}
|
||||
|
||||
.page {
|
||||
text-align: right;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
/deep/ .ant-table-tbody .yellow {
|
||||
background-color: #ffff001f !important;
|
||||
height: 40px !important;
|
||||
border: none !important;
|
||||
padding: 0 !important;
|
||||
}
|
||||
::v-deep .ant-table-row:first-child {
|
||||
background: #fff!important;
|
||||
opacity: 0.9;
|
||||
}
|
||||
|
||||
::v-deep .ant-table-body {
|
||||
background: transparent!important;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.resize-table-th {
|
||||
position: relative;
|
||||
|
||||
+3
-3
@@ -41,9 +41,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>
|
||||
</div>
|
||||
<!-- <div class="drawer-bootom-button">-->
|
||||
<!-- <a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>-->
|
||||
<!-- </div>-->
|
||||
</a-drawer>
|
||||
<classificationMaintenanceAdd ref="classificationMaintenanceAddRef"
|
||||
@classificationMaintenanceAddForm="classificationMaintenanceAddForm"/>
|
||||
|
||||
+3
-3
@@ -46,9 +46,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>
|
||||
</div>
|
||||
<!-- <div class="drawer-bootom-button">-->
|
||||
<!-- <a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>-->
|
||||
<!-- </div>-->
|
||||
</a-drawer>
|
||||
<countryCardReleaseModelAdd ref="countryCardReleaseModelAddRef"
|
||||
@countryCardReleaseModelAddForm="countryCardReleaseModelAddForm"/>
|
||||
|
||||
+13
-9
@@ -3,9 +3,9 @@
|
||||
<div class="doc-detail-wrap">
|
||||
<div class="doc-detail-header" style="position: fixed;top: 0">
|
||||
<div class="doc-detail-title">
|
||||
<!-- <span style="line-height: 66px;display: inline-block;float: left">-->
|
||||
<!-- <a-icon type="arrow-left" style="margin-right: 6px;"/>-->
|
||||
<!-- </span>-->
|
||||
<!-- <span style="line-height: 66px;display: inline-block;float: left">-->
|
||||
<!-- <a-icon type="arrow-left" style="margin-right: 6px;"/>-->
|
||||
<!-- </span>-->
|
||||
{{header_text}}
|
||||
</div>
|
||||
</div>
|
||||
@@ -35,7 +35,7 @@
|
||||
</div>
|
||||
|
||||
</div>
|
||||
<div class="content-box-box" v-else>
|
||||
<div class="content-box-box" :class="{'content-box-box-color':index % 2 == 1 ? true : false}" v-else>
|
||||
<a v-if="index2 == 0 && item2.relevantUrl"
|
||||
style="color: rgb(33, 201, 204)"
|
||||
:class="{'content-box-box-text-admin':!item2.lableName || item2.lableName == 'null' || item2.lableName == 'undefined'? true : false}"
|
||||
@@ -116,7 +116,7 @@
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
document.title = 'Country Card'+ '-' + this.$t('details')
|
||||
document.title = 'Country Card' + '-' + this.$t('details')
|
||||
this.queryCountry(() => {
|
||||
this.replacePage()
|
||||
})
|
||||
@@ -385,8 +385,8 @@
|
||||
.content-box-box {
|
||||
width: 340px;
|
||||
display: inline-block;
|
||||
height: 80px;
|
||||
line-height: 80px;
|
||||
height: 60px;
|
||||
line-height: 60px;
|
||||
text-align: center;
|
||||
background: #fff;
|
||||
border-right: 1px #d9d9d9 solid;
|
||||
@@ -421,7 +421,7 @@
|
||||
}
|
||||
|
||||
.content-box-top {
|
||||
height: 80px;
|
||||
height: 60px;
|
||||
}
|
||||
|
||||
.content-box-top:first-child {
|
||||
@@ -442,6 +442,10 @@
|
||||
}
|
||||
|
||||
.content-box-box-text-admin {
|
||||
height: 80px !important;
|
||||
height: 60px !important;
|
||||
}
|
||||
|
||||
.content-box-box-color {
|
||||
background: #f2f2f2;
|
||||
}
|
||||
</style>
|
||||
+3
-3
@@ -41,9 +41,9 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="drawer-bootom-button">
|
||||
<a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>
|
||||
</div>
|
||||
<!-- <div class="drawer-bootom-button">-->
|
||||
<!-- <a-button @click="handleCancel" type="danger">{{$t('cancel')}}</a-button>-->
|
||||
<!-- </div>-->
|
||||
</a-drawer>
|
||||
<optionMaintenanceAdd ref="optionMaintenanceAddRef"
|
||||
@optionMaintenanceAddForm="optionMaintenanceAddForm"/>
|
||||
|
||||
+247
-61
@@ -2,7 +2,7 @@
|
||||
<div class="doc-detail">
|
||||
<div class="doc-detail-wrap">
|
||||
<div class="doc-detail-header" style="position: fixed;top: 0">
|
||||
<div class="doc-detail-title">
|
||||
<div class="doc-detail-title" :title="queryForm.title">
|
||||
<!-- <span style="line-height: 66px;display: inline-block;float: left">-->
|
||||
<!-- <a-icon type="arrow-left" @click="back" style="margin-right: 6px;"/>-->
|
||||
<!-- </span>-->
|
||||
@@ -15,76 +15,99 @@
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="padding-top: 68px;background: #fff">
|
||||
<div class="detail-content" style="padding: 24px">
|
||||
<div class="content-text-top">
|
||||
<span style="margin-right: 10px">
|
||||
{{$t('issuedBy')}}:{{this.queryForm.createBy}}
|
||||
</span>
|
||||
<span>
|
||||
{{$t('releaseDate')}}:{{this.queryForm.createTime?this.queryForm.createTime.slice(0,11):''}}
|
||||
</span>
|
||||
</div>
|
||||
<div class="content-text">
|
||||
<div class="text-field" v-for="(item,index) in standardContentList" :key="index">
|
||||
<span class="text-field-left" :title="item.title">{{item.title}}</span>
|
||||
<span class="text-field-right text-field-right-url"
|
||||
@click="clickButtonToUpload(queryForm[item.value])"
|
||||
v-if="item.type == 2 && queryForm[item.value]"
|
||||
>{{ $t('viewFile') }}</span>
|
||||
<div class="doc-detail-box">
|
||||
<div style="padding-top: 68px;" class="doc-detail-box-text">
|
||||
<div class="detail-content" style="padding: 24px">
|
||||
<!-- <div class="content-text-top">-->
|
||||
<!-- <span style="margin-right: 10px">-->
|
||||
<!-- {{$t('issuedBy')}}:{{this.queryForm.createBy}}-->
|
||||
<!-- </span>-->
|
||||
<!-- <span>-->
|
||||
<!-- {{$t('releaseDate')}}:{{this.queryForm.createTime?this.queryForm.createTime.slice(0,11):''}}-->
|
||||
<!-- </span>-->
|
||||
<!-- </div>-->
|
||||
<div class="content-text">
|
||||
<div class="text-field" v-for="(item,index) in standardContentList" :key="index">
|
||||
<span class="text-field-left" :title="item.title">{{item.title}}</span>
|
||||
<span class="text-field-right text-field-right-url"
|
||||
@click="clickButtonToUpload(queryForm[item.value])"
|
||||
v-if="item.type == 2 && queryForm[item.value]"
|
||||
>{{ $t('viewFile') }}</span>
|
||||
|
||||
<span class="text-field-right"
|
||||
:title="queryForm[item.value]" v-else>
|
||||
<span class="text-field-right"
|
||||
:title="queryForm[item.value]" v-else>
|
||||
{{queryForm[item.value]}}
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content" v-html="queryForm.content"></div>
|
||||
<div class="content-icon">
|
||||
<div class="division"></div>
|
||||
<div class="content ql-editor" v-html="queryForm.content"></div>
|
||||
<div class="content-icon">
|
||||
<span class="content-icon-text">
|
||||
<a-icon class="icon" type="eye"/>
|
||||
<span>{{this.queryForm.browsingHistoryCount}}</span>
|
||||
</span>
|
||||
<span class="content-icon-text" @click="likeClick()">
|
||||
<span class="content-icon-text" @click="likeClick()">
|
||||
<a-icon class="icon" :class="{'icon-active':this.isPraise}" type="like"/>
|
||||
<span>{{this.queryForm.praiseCount}}</span>
|
||||
</span>
|
||||
<span class="content-icon-text" @click="starClick()">
|
||||
<span class="content-icon-text" @click="starClick()">
|
||||
<a-icon class="icon" :class="{'icon-active':this.isCollect}" type="star"/>
|
||||
<span>{{this.queryForm.collectCount}}</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="box-text">
|
||||
<div class="header-text">
|
||||
{{$t('comment')}}
|
||||
</div>
|
||||
</div>
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<a-form-model-item class="itemModel" prop="commentContent">
|
||||
<a-textarea :placeholder="$t('pleaseEnter')+$t('comment')"
|
||||
v-model.trim="formInline.commentContent"
|
||||
:rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
<div class="content-button">
|
||||
<a-button class="header-btn submit" :loading="loading" @click="release" type="primary">{{$t('release')}}
|
||||
</a-button>
|
||||
</div>
|
||||
<div v-for="(item,index) in releaseList">
|
||||
<div class="box-text">
|
||||
<div class="division"></div>
|
||||
<div class="box-text" style="margin-top: 24px">
|
||||
<div class="header-text">
|
||||
<span style="margin-right: 20px">{{item.createBy}}</span>
|
||||
{{item.createTime}}
|
||||
{{$t('comment')}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
{{item.commentContent}}
|
||||
<a-form-model :model="formInline" class="formAdd" :rules="rules" ref="ruleForm">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<a-form-model-item class="itemModel" prop="commentContent">
|
||||
<a-textarea :placeholder="$t('pleaseEnter')+$t('comment')"
|
||||
v-model.trim="formInline.commentContent"
|
||||
:rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
<div class="content-button">
|
||||
<a-button class="header-btn submit" :loading="loading" @click="release" type="primary">{{$t('release')}}
|
||||
</a-button>
|
||||
</div>
|
||||
<div v-for="(item,index) in releaseList" style="margin-bottom: 30px">
|
||||
<div class="box-text-index">
|
||||
<div class="header-text-index">
|
||||
<span style="margin-right: 20px" class="header-text-index-left">{{item.createBy}}</span>
|
||||
<span class="header-text-index-text">{{item.createTime}}</span>
|
||||
<span class="box-icon" @click="messageClick(item)">
|
||||
<a-icon type="message"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-index">
|
||||
{{item.commentContent}}
|
||||
</div>
|
||||
<div class="box-comment"
|
||||
v-for="(val,index1) in item.problemKnowledgeBaseCommentVOList"
|
||||
v-if="item.problemKnowledgeBaseCommentVOList && item.problemKnowledgeBaseCommentVOList.length > 0">
|
||||
<div class="box-text-index">
|
||||
<div class="header-text-index">
|
||||
<span style="margin-right: 20px" class="header-text-index-left">{{val.createBy}}</span>
|
||||
<span class="header-text-index-text">{{val.createTime}}</span>
|
||||
<span class="box-icon" @click="messageClick(item)">
|
||||
<a-icon type="message"/>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-index">
|
||||
{{val.commentContent}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -92,6 +115,34 @@
|
||||
</div>
|
||||
<viewFileModel ref="viewFileModelRef"/>
|
||||
<SelectedBy ref="SelectedByRef" :title="$t('forward')" @SelectedByForm="SelectedByForm"></SelectedBy>
|
||||
<a-modal
|
||||
:title="$t('replyToComments')"
|
||||
:width="700"
|
||||
:visible="visibleComment"
|
||||
:confirm-loading="confirmLoading"
|
||||
:maskClosable="false"
|
||||
@ok="handleOkComment"
|
||||
@cancel="handleCancelComment"
|
||||
>
|
||||
<a-form-model :model="formInlineComment" class="formAdd" :rules="rulesComment" ref="ruleFormComment">
|
||||
<a-row :gutter="24">
|
||||
<a-col :span="24">
|
||||
<div class="box-title-text">
|
||||
<div class="title-text">
|
||||
<span class="Required">*</span>
|
||||
<span class="title-text-text" :title="$t('replyToComments')">{{$t('replyToComments')}}</span>
|
||||
</div>
|
||||
<a-form-model-item class="itemModel" :prop="'replyContent'">
|
||||
<a-textarea
|
||||
:placeholder="$t('PleaseEnter')+$t('replyToComments')"
|
||||
:disabled="false"
|
||||
v-model="formInlineComment.replyContent" :rows="4"/>
|
||||
</a-form-model-item>
|
||||
</div>
|
||||
</a-col>
|
||||
</a-row>
|
||||
</a-form-model>
|
||||
</a-modal>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
@@ -100,6 +151,10 @@
|
||||
import SelectedBy from '@/components/SelectedBy/index'
|
||||
import { getAction, postAction, downloadFile, putAction } from '@/api/manage'
|
||||
import { mapGetters } from 'vuex'
|
||||
import 'quill/dist/quill.core.css'
|
||||
import 'quill/dist/quill.snow.css'
|
||||
import 'quill/dist/quill.bubble.css'
|
||||
import { quillEditor } from 'vue-quill-editor'
|
||||
|
||||
export default {
|
||||
name: 'problemKnowledgeBaseView',
|
||||
@@ -109,6 +164,10 @@
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
visibleComment: false,
|
||||
confirmLoading: false,
|
||||
CommentQuery: {},
|
||||
formInlineComment: {},
|
||||
standardContentList: [
|
||||
{
|
||||
title: this.$t('problemClassification'),
|
||||
@@ -122,9 +181,17 @@
|
||||
title: this.$t('standardNo'),
|
||||
value: 'standNumber'
|
||||
},
|
||||
// {
|
||||
// title: this.$t('title'),
|
||||
// value: 'title'
|
||||
// },
|
||||
{
|
||||
title: this.$t('title'),
|
||||
value: 'title'
|
||||
title:this.$t('issuedBy'),
|
||||
value: 'createBy'
|
||||
},
|
||||
{
|
||||
title:this.$t('releaseDate'),
|
||||
value: 'createTime'
|
||||
},
|
||||
{
|
||||
title: this.$t('enclosure'),
|
||||
@@ -134,6 +201,20 @@
|
||||
],
|
||||
queryForm: {},
|
||||
formInline: {},
|
||||
rulesComment: {
|
||||
replyContent: [
|
||||
{
|
||||
required: true,
|
||||
message: this.$t('replyToComments') + this.$t('cannotEmpty'),
|
||||
trigger: 'blur'
|
||||
},
|
||||
{
|
||||
max: 300,
|
||||
message: this.$t('replyToComments') + this.$t('cannotExceed') + 300 + this.$t('Characters'),
|
||||
trigger: 'blur'
|
||||
}
|
||||
]
|
||||
},
|
||||
rules: {
|
||||
commentContent: [
|
||||
{
|
||||
@@ -156,6 +237,39 @@
|
||||
},
|
||||
methods: {
|
||||
...mapGetters(['userInfo']),
|
||||
messageClick(val) {
|
||||
this.CommentQuery = val
|
||||
this.visibleComment = true
|
||||
this.formInlineComment = {}
|
||||
this.$nextTick(() => {
|
||||
this.$refs.ruleFormComment.clearValidate()
|
||||
})
|
||||
},
|
||||
handleOkComment() {
|
||||
this.$refs.ruleFormComment.validate(valid => {
|
||||
if (valid) {
|
||||
let query = {
|
||||
commentId: this.CommentQuery.id,
|
||||
replyContent: this.formInlineComment.replyContent
|
||||
}
|
||||
this.confirmLoading = true
|
||||
postAction('/project/problemKnowledgeBaseReplyEO/add', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.$message.success(this.$t('OperationSuccessful'))
|
||||
this.visibleComment = false
|
||||
this.confirmLoading = false
|
||||
this.releaseData()
|
||||
} else {
|
||||
this.confirmLoading = false
|
||||
this.$message.success(this.$t('operationFailed'))
|
||||
}
|
||||
})
|
||||
}
|
||||
})
|
||||
},
|
||||
handleCancelComment() {
|
||||
this.visibleComment = false
|
||||
},
|
||||
SelectedByForm(userIds) {
|
||||
let query = {
|
||||
userIds: userIds,
|
||||
@@ -311,7 +425,6 @@
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
.doc-detail-wrap {
|
||||
.doc-detail-header {
|
||||
width: 100%;
|
||||
@@ -415,7 +528,7 @@
|
||||
.text-field-right-url {
|
||||
color: #00B3BE !important;
|
||||
cursor: pointer;
|
||||
margin-top: 10px;
|
||||
/*margin-top: 10px;*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -425,6 +538,9 @@
|
||||
color: #040B29;
|
||||
font-weight: 400;
|
||||
word-break: break-word;
|
||||
padding: 24px 0;
|
||||
box-sizing: border-box;
|
||||
margin-top: 32px;
|
||||
}
|
||||
|
||||
.content-icon {
|
||||
@@ -449,12 +565,12 @@
|
||||
}
|
||||
|
||||
.content-icon-text .icon {
|
||||
font-size: 24px;
|
||||
font-size: 20px;
|
||||
color: #3b4249 !important;
|
||||
}
|
||||
|
||||
.content-icon-text .icon-active {
|
||||
font-size: 24px;
|
||||
font-size: 20px;
|
||||
color: #00B3BE !important;
|
||||
}
|
||||
|
||||
@@ -532,10 +648,80 @@
|
||||
.content-text-top {
|
||||
width: 100%;
|
||||
text-align: right;
|
||||
color: #040B29;
|
||||
color: #6F7385;
|
||||
font-weight: 400;
|
||||
font-size: 16px;
|
||||
font-size: 14px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.doc-detail-box {
|
||||
width: 100%;
|
||||
background: #f2f2f2;
|
||||
}
|
||||
|
||||
.doc-detail-box-text {
|
||||
width: 75%;
|
||||
margin: 0 auto;
|
||||
background: #fff;
|
||||
/*position: absolute;*/
|
||||
min-height: 100vh;
|
||||
/*left: 50%;*/
|
||||
/*transform: translateX(-50%);*/
|
||||
}
|
||||
|
||||
.division {
|
||||
height: 20px;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
background: #f2f2f2;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.content-index {
|
||||
font-size: 14px;
|
||||
color: #000F16;
|
||||
font-weight: 400;
|
||||
word-break: break-word;
|
||||
padding: 12px 0;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.header-text-index {
|
||||
font-size: 16px;
|
||||
font-weight: 400;
|
||||
margin-top: 10px;
|
||||
height: 35px;
|
||||
color: #000F16;
|
||||
line-height: 40px;
|
||||
}
|
||||
|
||||
.box-icon {
|
||||
margin-right: 10px;
|
||||
float: right;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.box-comment {
|
||||
width: calc(100% - 80px);
|
||||
margin-left: 80px;
|
||||
background: #f2f2f2;
|
||||
padding: 6px 24px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.Required {
|
||||
color: red;
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.header-text-index-left {
|
||||
font-size: 16px;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.header-text-index-text {
|
||||
font-size: 14px;
|
||||
color: #848684;
|
||||
}
|
||||
</style>
|
||||
+2
-1
@@ -75,7 +75,8 @@
|
||||
title: this.$t('clauseNo'),
|
||||
dataIndex: 'itemNum',
|
||||
align: 'center',
|
||||
ellipsis: true
|
||||
ellipsis: true,
|
||||
width: 120
|
||||
},
|
||||
{
|
||||
title: this.$t('clauseName'),
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
<div class="myList-box-content-box" v-for="(item,index) in dataSource" :key="index" @click="prcClick(item)">
|
||||
<div class="top">
|
||||
<span class="top-text" :title="item.prcName">{{item.prcName}}</span>
|
||||
<span class="top-admin" :title="prcTypeName[item.prcType]">{{prcTypeName[item.prcType]}}</span>
|
||||
<!-- <span class="top-admin" :title="prcTypeName[item.prcType]">{{prcTypeName[item.prcType]}}</span>-->
|
||||
</div>
|
||||
<div class="button">
|
||||
{{item.creatTime}}
|
||||
@@ -161,25 +161,24 @@
|
||||
font-family: Blue Sky Noto;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
max-width: 50%;
|
||||
max-width: calc(100% - 72px);
|
||||
display: inline-block;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.top-admin {
|
||||
font-size: 16px;
|
||||
font-family: Blue Sky Noto;
|
||||
display: inline-block;
|
||||
font-weight: 400;
|
||||
color: #040B29;
|
||||
margin-left: 4px;
|
||||
max-width: calc(50% - 72px);
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
white-space: nowrap;
|
||||
}
|
||||
/*.top-admin {*/
|
||||
/* font-size: 16px;*/
|
||||
/* font-family: Blue Sky Noto;*/
|
||||
/* display: inline-block;*/
|
||||
/* font-weight: 400;*/
|
||||
/* color: #040B29;*/
|
||||
/* margin-left: 4px;*/
|
||||
/* max-width: calc(50% - 72px);*/
|
||||
/* overflow: hidden;*/
|
||||
/* text-overflow: ellipsis;*/
|
||||
/* white-space: nowrap;*/
|
||||
/*}*/
|
||||
}
|
||||
|
||||
.button {
|
||||
|
||||
+37
-3
@@ -51,6 +51,7 @@
|
||||
</div>
|
||||
<div class="detail-content-content-right-data-text" v-html="item.itemsText"></div>
|
||||
</div>
|
||||
<JLoading :loading="loadingText">{{$t('dataLoading')}}</JLoading>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@@ -143,7 +144,7 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { postAction, putAction } from '../../../../api/manage'
|
||||
import { postAction, putAction, getAction } from '../../../../api/manage'
|
||||
|
||||
export default {
|
||||
name: 'documentDataComparison',
|
||||
@@ -152,6 +153,7 @@
|
||||
formInline: {},
|
||||
formInlineText: {},
|
||||
dataLoadingText: '',
|
||||
loadingText:false,
|
||||
rules: {
|
||||
comment: [
|
||||
{
|
||||
@@ -322,6 +324,7 @@
|
||||
detailLeft[num].classList.add('detail-content-content-right-data-color')
|
||||
}
|
||||
this.dataLeft = item
|
||||
this.dataLeft.numIndex = num
|
||||
if (this.isMatching) {
|
||||
let detailRightColor = document.getElementsByClassName('detail-content-content-right-data-color-right')
|
||||
if (detailRightColor && detailRightColor.length > 0) {
|
||||
@@ -335,6 +338,8 @@
|
||||
detailRight[item.targetStand].classList.add('detail-content-content-right-data-color-right')
|
||||
detailContent[0].scrollTop = detailRight[item.targetStand].offsetTop - 150
|
||||
}
|
||||
this.dataRight.numIndex = item.targetStand
|
||||
this.clauseComparison()
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -352,6 +357,7 @@
|
||||
detailRight[num].classList.add('detail-content-content-right-data-color-right')
|
||||
}
|
||||
this.dataRight = item
|
||||
this.dataRight.numIndex = num
|
||||
if (this.isMatching) {
|
||||
let detailLeftColor = document.getElementsByClassName('detail-content-content-right-data-color')
|
||||
if (detailLeftColor && detailLeftColor.length > 0) {
|
||||
@@ -359,15 +365,34 @@
|
||||
}
|
||||
if (item.targetStand > -1) {
|
||||
this.dataLeft = this.resultData.textLeft[item.targetStand]
|
||||
this.dataLeft.numIndex = item.targetStand
|
||||
let detailContent = document.getElementsByClassName('detail-content-content-right-top')
|
||||
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
||||
if (detailLeft && detailLeft.length > 0 && item.targetStand >= 0) {
|
||||
detailLeft[item.targetStand].classList.add('detail-content-content-right-data-color')
|
||||
detailContent[0].scrollTop = detailLeft[item.targetStand].offsetTop - 150
|
||||
}
|
||||
this.clauseComparison()
|
||||
// this.resultData = { ...this.resultData }
|
||||
}
|
||||
}
|
||||
},
|
||||
clauseComparison() {
|
||||
let query = {
|
||||
leftId: this.dataLeft.id,
|
||||
rightId: this.dataRight.id
|
||||
}
|
||||
this.loadingText = true
|
||||
getAction('/compare/sarFileCompareItem/clauseComparison', query).then((res) => {
|
||||
if (res.success) {
|
||||
this.loadingText = false
|
||||
this.resultData.textLeft[this.dataLeft.numIndex].itemsText = res.result[0]
|
||||
this.resultData.textRight[this.dataRight.numIndex].itemsText = res.result[1]
|
||||
}else{
|
||||
this.loadingText = false
|
||||
}
|
||||
})
|
||||
},
|
||||
onSelectLeft(selectedKeys, exports) {
|
||||
let node = exports.node.$vnode.data.props.dataRef
|
||||
let detailLeft = document.getElementsByClassName('detail-content-content-right-data')
|
||||
@@ -377,7 +402,7 @@
|
||||
return
|
||||
}
|
||||
for (let i = 0; i < this.resultData.textLeft.length; i++) {
|
||||
if (node.parentId && node.itemName == this.resultData.textLeft[i].itemsName) {
|
||||
if (node.parentId && node.menuId == this.resultData.textLeft[i].menuId) {
|
||||
detailContent[0].scrollTop = detailLeft[i].offsetTop - 150
|
||||
return
|
||||
}
|
||||
@@ -392,7 +417,7 @@
|
||||
return
|
||||
}
|
||||
for (let i = 0; i < this.resultData.textRight.length; i++) {
|
||||
if (node.parentId && node.itemName == this.resultData.textRight[i].itemsName) {
|
||||
if (node.parentId && node.menuId == this.resultData.textRight[i].menuId) {
|
||||
detailContent[0].scrollTop = detailRight[i].offsetTop - 150
|
||||
return
|
||||
}
|
||||
@@ -642,4 +667,13 @@
|
||||
border: 1px red solid;
|
||||
}
|
||||
|
||||
::v-deep .delClass {
|
||||
background: #ff7168;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
::v-deep .insertClass {
|
||||
background: rgba(85, 183, 255, .6);
|
||||
font-weight: 700;
|
||||
}
|
||||
</style>
|
||||
@@ -131,7 +131,7 @@
|
||||
:columns="columns"
|
||||
>
|
||||
<span slot="projectName" slot-scope="text,record" :title="text">
|
||||
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
|
||||
{{ text && text.length > 20 ? text.slice(0, 18) + '...' : text }}
|
||||
</span>
|
||||
<span slot="fileName" slot-scope="text,record" :title="text">
|
||||
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
|
||||
@@ -366,7 +366,7 @@ export default {
|
||||
align: 'center',
|
||||
dataIndex: 'fileDescription',
|
||||
scopedSlots: { customRender: 'projectName' },
|
||||
width: 150
|
||||
width: 300
|
||||
},
|
||||
{
|
||||
title: this.$t('uploadedBy'),
|
||||
|
||||
@@ -434,7 +434,9 @@ export default {
|
||||
|
||||
<style lang="less" scoped>
|
||||
@import '~@assets/less/common.less';
|
||||
|
||||
/deep/.ant-card-body{
|
||||
margin-top: -28px;
|
||||
}
|
||||
.doc-detail {
|
||||
background: #fff;
|
||||
height: 100%;
|
||||
|
||||
@@ -44,7 +44,7 @@
|
||||
:columns="columns"
|
||||
>
|
||||
<span slot="projectName" slot-scope="text,record" :title="text">
|
||||
{{ text && text.length > 25 ? text.slice(0, 24) + '...' : text }}
|
||||
{{ text && text.length > 15 ? text.slice(0, 14) + '...' : text }}
|
||||
</span>
|
||||
<span slot="templateName" slot-scope="text,record" :title="text">
|
||||
{{ text && text.length > 25 ? text.slice(0, 21) + '...' : text }}
|
||||
|
||||
Reference in New Issue
Block a user