Commit ad6aaa35 authored by 远方不远's avatar 远方不远
parents f0a73a63 e99e8008
package com.dsk.web.controller.business;
import java.util.List;
import javax.annotation.PostConstruct;
import javax.servlet.http.HttpServletResponse;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessBacklog;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.service.IBusinessBacklogService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.dsk.common.annotation.Log;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目工作待办Controller
......
package com.dsk.web.controller.business;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.dsk.common.core.domain.entity.BusinessContacts;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.system.service.IBusinessContactsService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.dsk.common.annotation.Log;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.core.domain.entity.BusinessContacts;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.service.IBusinessContactsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目联系人Controller
......
package com.dsk.web.controller.business;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.utils.file.FileUploadUtils;
import com.dsk.common.utils.file.FileUtils;
import com.dsk.framework.config.ServerConfig;
import com.dsk.system.domain.BusinessIdDto;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
/**
* @author lxl
* @Description: 项目文件管理Controller
* @Date 2023/5/30 上午 8:44
**/
@Slf4j
@RestController
@RequestMapping("/business/file")
public class BusinessFileController extends BaseController {
@Autowired
private ServerConfig serverConfig;
/**
* 新建文件夹
*/
// @PreAuthorize("@ss.hasPermi('system:file:add')")
// @Log(title = "项目资料文档", businessType = BusinessType.INSERT)
@GetMapping("/new/{filePath}")
public AjaxResult newFolder(@PathVariable String filePath) {
return FileUtils.newFolder(RuoYiConfig.getProfile() + filePath) ? AjaxResult.success() : AjaxResult.error();
}
/**
* 删除某个文件或整个文件夹
*/
@PostMapping("/remove")
public AjaxResult removeFile(@RequestBody(required=false) BusinessIdDto folderPath) {
return FileUtils.delFolder(RuoYiConfig.getProfile() + folderPath.getFolderPath()) ? AjaxResult.success() : AjaxResult.error();
}
/**
* 分页查询项目的所有文件
* 获取文件夹中所有文件
*/
@GetMapping(value = "/list")
public TableDataInfo getAllFiles(@RequestBody(required=false) BusinessIdDto folderPath) {
startPage();
List<String> allFiles = FileUtils.getAllFiles(RuoYiConfig.getProfile() + folderPath.getFolderPath());
return getDataTable(allFiles);
}
/* *//**
* 上传文件及文件夹
* @param url
* @param folderPath
* @return
*//*
@GetMapping("/upload/{url}/{folderPath}")
public AjaxResult uploadFolder(@PathVariable("url") String url,@PathVariable("folderPath") String folderPath) throws IOException {
return toAjax(FileUtils.uploadFolder(url, LOCALPATH + folderPath));
}*/
/**
* 上传文件及文件夹
* @param file 文件流
* @param request 请求头参数
* @return
*/
@PostMapping("/upload/")
public AjaxResult uploadFolder(@RequestPart("file") MultipartFile file, HttpServletRequest request){
try {
String businessFileName = request.getParameter("filePath");
// 上传文件路径
String filePath = RuoYiConfig.getUploadPath()+businessFileName;
// 上传并返回新文件名称
String fileName = FileUploadUtils.upload(filePath, file);
String url = serverConfig.getUrl() + fileName;
AjaxResult ajax = AjaxResult.success();
ajax.put("url", url);
ajax.put("fileName", fileName);
ajax.put("newFileName", FileUtils.getName(fileName));
ajax.put("originalFilename", file.getOriginalFilename());
return ajax;
} catch (IOException e) {
return AjaxResult.error(e.getMessage());
}
}
/**
* 下载文件
* @param url
* @param targetFolder
* @return
*/
@GetMapping("/download/{url}/{targetFolder}")
public AjaxResult downloadFolder(@PathVariable("url") String url,@PathVariable("targetFolder") String targetFolder) throws IOException {
return toAjax(FileUtils.downloadFolder(url, targetFolder));
}
}
package com.dsk.web.controller.business;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.service.IBusinessFollowRecordService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.dsk.common.annotation.Log;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.common.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目跟进记录Controller
......
package com.dsk.web.controller.business;
import java.util.List;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessInfo;
import com.dsk.common.dtos.BusinessInfoDto;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.BusinessAddDto;
import com.dsk.system.domain.BusinessListDto;
import com.dsk.system.domain.vo.BusinessBrowseVo;
import com.dsk.system.domain.vo.BusinessListVo;
import com.dsk.system.service.IBusinessInfoService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.dsk.common.annotation.Log;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.core.page.TableDataInfo;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.List;
/**
* 项目详情Controller
......@@ -90,7 +80,7 @@ public class BusinessInfoController extends BaseController
* 删除项目列表
*/
// @PreAuthorize("@ss.hasPermi('system:business:remove')")
@Log(title = "项目管理", businessType = BusinessType.DELETE)
// @Log(title = "项目管理", businessType = BusinessType.DELETE)
@DeleteMapping("/remove/{ids}")
public AjaxResult remove(@PathVariable(value = "ids",required=false) Long[] ids)
{
......@@ -101,7 +91,7 @@ public class BusinessInfoController extends BaseController
* 新增项目详情
*/
// @PreAuthorize("@ss.hasPermi('system:business:add')")
@Log(title = "项目管理", businessType = BusinessType.INSERT)
// @Log(title = "项目管理", businessType = BusinessType.INSERT)
@PostMapping("/add")
public AjaxResult add(@RequestBody BusinessAddDto dto)
{
......@@ -112,7 +102,7 @@ public class BusinessInfoController extends BaseController
* 修改项目详情
*/
// @PreAuthorize("@ss.hasPermi('system:business:edit')")
@Log(title = "项目管理", businessType = BusinessType.UPDATE)
// @Log(title = "项目管理", businessType = BusinessType.UPDATE)
@PostMapping("/edit")
public AjaxResult edit(@RequestBody BusinessInfo businessInfo)
{
......
package com.dsk.web.controller.business;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.service.IBusinessLabelService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.dsk.common.annotation.Log;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.core.page.TableDataInfo;
/**
* 项目标签Controller
......
package com.dsk.web.controller.business;
import java.util.List;
import javax.servlet.http.HttpServletResponse;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.utils.poi.ExcelUtil;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.service.IBusinessRelateCompanyService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.PutMapping;
import org.springframework.web.bind.annotation.DeleteMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import com.dsk.common.annotation.Log;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.enums.BusinessType;
import com.dsk.common.core.page.TableDataInfo;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目关联单位Controller
* 项目相关企业Controller
*
* @author lxl
* @date 2023-05-17
......@@ -37,7 +25,7 @@ public class BusinessRelateCompanyController extends BaseController
private IBusinessRelateCompanyService businessRelateCompanyService;
/**
* 查询关联单位角色
* 查询相关企业角色
*/
@PostMapping("/role/list")
public AjaxResult companyRoleList(@RequestBody BusinessIdDto dto){
......@@ -45,7 +33,7 @@ public class BusinessRelateCompanyController extends BaseController
}
/**
* 查询项目关联单位列表
* 查询项目相关企业列表
*/
// @PreAuthorize("@ss.hasPermi('system:company:list')")
@GetMapping("/list")
......@@ -78,6 +66,17 @@ public class BusinessRelateCompanyController extends BaseController
return toAjax(businessRelateCompanyService.updateBusinessRelateCompany(businessRelateCompany));
}
/**
* 删除项目关联单位
*/
// @PreAuthorize("@ss.hasPermi('system:company:remove')")
// @Log(title = "项目关联单位", businessType = BusinessType.DELETE)
@DeleteMapping("/remove/{ids}")
public AjaxResult remove(@PathVariable Long[] ids)
{
return toAjax(businessRelateCompanyService.deleteBusinessRelateCompanyByIds(ids));
}
// /**
// * 导出项目关联单位列表
// */
......@@ -101,15 +100,4 @@ public class BusinessRelateCompanyController extends BaseController
// return success(businessRelateCompanyService.selectBusinessRelateCompanyById(id));
// }
//
// /**
// * 删除项目关联单位
// */
// @PreAuthorize("@ss.hasPermi('system:company:remove')")
// @Log(title = "项目关联单位", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public AjaxResult remove(@PathVariable Long[] ids)
// {
// return toAjax(businessRelateCompanyService.deleteBusinessRelateCompanyByIds(ids));
// }
}
package com.dsk.web.controller.search.controller;
import com.alibaba.fastjson2.JSONObject;
import com.dsk.common.core.controller.BaseController;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.common.dtos.ComposeQueryDto;
import com.dsk.web.controller.search.service.MarketAnalysisService;
import org.springframework.web.bind.annotation.RequestBody;
......@@ -9,6 +11,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;
/**
......@@ -18,7 +23,7 @@ import javax.annotation.Resource;
*/
@RequestMapping("/marketAnalysis")
@RestController
public class MarketAnalysisController {
public class MarketAnalysisController extends BaseController {
@Resource
......@@ -46,9 +51,8 @@ public class MarketAnalysisController {
/*
* 资质等级按照大类、省份、等级类型分组
*/
@RequestMapping("/certGroupByCategoryProvinceLevel")
public AjaxResult certGroupByCategoryProvinceLevel() {
@RequestMapping("/certGroupByMajorProvinceLevel")
public AjaxResult certGroupByMajorProvinceLevel() {
return marketAnalysisService.certGroupByMajorProvinceLevel();
}
......@@ -82,15 +86,27 @@ public class MarketAnalysisController {
* 中标数量按省份分组
*/
@RequestMapping("/countGroupByProvince")
public AjaxResult countGroupByProvince(@RequestBody ComposeQueryDto compose) {
return marketAnalysisService.countGroupByProvince(compose);
public AjaxResult countGroupByProvince(@RequestBody JSONObject object) {
return marketAnalysisService.countGroupByProvince(object);
}
@RequestMapping("/getYear")
public TableDataInfo getYear(){
List<Integer> list = new ArrayList<>();
Calendar calendar = Calendar.getInstance();
int nowYear = calendar.get(Calendar.YEAR);
list.add(nowYear);
for (int i = 1; i < 5; i++) {
list.add(nowYear-i);
}
return getDataTable(list);
}
/*
* 中标数量按月份分组
*/
@RequestMapping("/countGroupByMonth")
public AjaxResult countGroupByMonth(@RequestBody ComposeQueryDto compose) {
return marketAnalysisService.countGroupByMonth(compose);
public AjaxResult countGroupByMonth(@RequestBody JSONObject object) {
return marketAnalysisService.countGroupByMonth(object);
}
}
......@@ -17,9 +17,9 @@ public interface MarketAnalysisService {
AjaxResult certGroupByMajorProvinceLevel();
AjaxResult countGroupByProvince(ComposeQueryDto compose);
AjaxResult countGroupByProvince(JSONObject object);
AjaxResult countGroupByMonth(ComposeQueryDto compose);
AjaxResult countGroupByMonth(JSONObject object);
AjaxResult bidMoneyGroupByProjectType(JSONObject object);
......
......@@ -56,14 +56,14 @@ public class MarketAnalysisServiceImpl implements MarketAnalysisService {
}
@Override
public AjaxResult countGroupByProvince(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByProvince", BeanUtil.beanToMap(compose, false, false));
public AjaxResult countGroupByProvince(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByProvince", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult countGroupByMonth(ComposeQueryDto compose) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByDate", BeanUtil.beanToMap(compose, false, false));
public AjaxResult countGroupByMonth(JSONObject object) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/nationzj/marketAnalysis/countGroupByMonth", object);
return BeanUtil.toBean(map, AjaxResult.class);
}
}
......@@ -8,8 +8,9 @@ ruoyi:
copyrightYear: 2023
# 实例演示开关
demoEnabled: true
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/ruoyi/uploadPath)
profile: D:/dsk-operate-sys/uploadPath/
# 文件路径 示例( Windows配置D:/ruoyi/uploadPath,Linux配置 /home/server/dsk-operate-sys/uploadPath)
# profile: D:/dsk-operate-sys/uploadPath/
profile: /home/server/dsk-operate-sys/uploadPath/
# 获取ip地址开关
addressEnabled: false
# 验证码类型 math 数组计算 char 字符验证
......
......@@ -53,6 +53,10 @@ public class BusinessRelateCompany extends BaseEntity
@Excel(name = "对接深度/竞争力度")
private String depth;
/** 企业类型 */
@Excel(name = "企业类型")
private String companyType;
@Override
public String toString() {
return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
......@@ -66,6 +70,7 @@ public class BusinessRelateCompany extends BaseEntity
.append("createTime", getCreateTime())
.append("updateTime", getUpdateTime())
.append("depth", getDepth())
.append("companyType", getCompanyType())
.toString();
}
......
......@@ -32,5 +32,15 @@ public class EnterpriseCreditLawsuitsPageBody extends BasePage {
*/
private String keys;
/**
* 开始时间(年月日)
*/
private String dateFrom;
/**
* 截止时间(年月日)
*/
private String dateTo;
}
......@@ -27,7 +27,7 @@ public class EnterpriseProjectBidNoticePageBody extends BasePage {
/**
* 类型
*/
private String tenderStage;
private List<String> tenderStage;
/*
* 1金额倒序,2金额正序,3时间倒序,4时间正序
......
package com.dsk.common.utils.file;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.UnsupportedEncodingException;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.uuid.IdUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ArrayUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLEncoder;
......@@ -15,17 +29,6 @@ import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.StringUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.ArrayUtils;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.utils.uuid.IdUtils;
import org.apache.commons.io.FilenameUtils;
/**
* 文件处理工具类
......@@ -38,6 +41,10 @@ public class FileUtils
public static String FILENAME_PATTERN = "[a-zA-Z0-9_\\-\\|\\.\\u4e00-\\u9fa5]+";
public static void main(String[] args) {
System.out.println(RuoYiConfig.getProfile());
}
/**
* 检查目录是否存在,如果不存在,则创建目录,如果创建失败则返回false
*
......@@ -49,8 +56,10 @@ public class FileUtils
if (!file.exists()) {
boolean isSuccess = file.mkdir();
if (!isSuccess)
if (!file.exists()) {
file.mkdirs();
return !isSuccess;
}
return isSuccess;
} else {
return true;
}
......@@ -152,12 +161,12 @@ public class FileUtils
return FileUploadUtils.getPathFileName(uploadDir, pathName);
}
/* *//**
/**
* 删除文件
*
* @param filePath 文件
* @return
*//*
*/
public static boolean deleteFile(String filePath)
{
boolean flag = false;
......@@ -168,22 +177,20 @@ public class FileUtils
flag = file.delete();
}
return flag;
}*/
}
/**
* 删除整个文件夹或者文某个文件
*
* @param filePath 文件
* @return
*/
public static boolean deleteFile(String filePath) {
public static boolean delFolder(String filePath) {
try {
if(StringUtils.isNotEmpty(delAllFile(filePath))) return false;
delAllFile(filePath); // 删除里面的所有文件
File file = new File(filePath);
return file.delete();
return file.delete(); // 删除空文件夹
} catch (Exception e) {
log.info("删除文件失败");
e.printStackTrace();
return false;
throw new BaseException("删除文件夹失败",e.getMessage());
}
}
......@@ -192,32 +199,50 @@ public class FileUtils
*
* @param path 文件夹路径
*/
public static String delAllFile(String path) {
public static void delAllFile(String path) {
String hint = "这是一个根目录,请更换目录!";
File file = new File(path);
if (!file.exists()) {
return hint;
throw new BaseException("文件不存在");
}
// if (!file.isDirectory()) {
// return false;
// }
if (file.getAbsolutePath().equalsIgnoreCase("/")) {
return hint;
throw new BaseException(hint);
}
if (file.getAbsolutePath().equalsIgnoreCase("/root")) {
return hint;
throw new BaseException(hint);
}
if (file.getAbsolutePath().equalsIgnoreCase("/usr") || file.getAbsolutePath().equalsIgnoreCase("/opt")
|| file.getAbsolutePath().equalsIgnoreCase("/bin") || file.getAbsolutePath().equalsIgnoreCase("/sbin")
|| file.getAbsolutePath().equalsIgnoreCase("/etc") || file.getAbsolutePath().equalsIgnoreCase("/selinux")
|| file.getAbsolutePath().equalsIgnoreCase("/sys") || file.getAbsolutePath().equalsIgnoreCase("/var")
|| file.getAbsolutePath().equalsIgnoreCase("/home") || file.getAbsolutePath().equalsIgnoreCase("/net")) {
return hint;
throw new BaseException(hint);
}
if (file.getAbsolutePath().equalsIgnoreCase("C://") || file.getAbsolutePath().equalsIgnoreCase("C:\\\\")) {
return hint;
throw new BaseException(hint);
}
String[] tempList = file.list();
File temp;
if (tempList == null) {
return;
}
for (String aTempList : tempList) {
if (path.endsWith(File.separator)) {
temp = new File(path + aTempList);
} else {
temp = new File(path + File.separator + aTempList);
}
if (temp.isFile()) {
temp.delete();
}
if (temp.isDirectory()) {
delAllFile(path + "/" + aTempList);// 删除里面的所有文件
delFolder(path + "/" + aTempList);// 删除空文件夹
}
}
return "";
}
......@@ -292,12 +317,12 @@ public class FileUtils
/**
* 下载文件
*
* @param url 要下载的文件链接
* @param targetFolder 目标文件
* @return
* @throws IOException
*/
public static void downloadFolder(String url, String targetFolder) throws IOException {
public static boolean downloadFolder(String url, String targetFolder) throws IOException {
URL downloadUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) downloadUrl.openConnection();
connection.setRequestMethod("GET");
......@@ -330,6 +355,52 @@ public class FileUtils
}
}
}
return true;
}
/**
* 上传文件
* @param url 上传链接
* @param folderPath 文件路径
* @return
* @throws IOException
*/
public static boolean uploadFolder(String url, String folderPath) throws IOException {
File folder = new File(folderPath);
if (!folder.exists() || !folder.isDirectory()) {
throw new IllegalArgumentException("文件夹路径无效: " + folderPath);
}
List<File> files = new ArrayList<>();
listFiles(folder, files);
try (CloseableHttpClient httpClient = HttpClients.createDefault()) {
HttpPost httpPost = new HttpPost(url);
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
for (File file : files) {
FileBody fileBody = new FileBody(file, ContentType.DEFAULT_BINARY);
builder.addPart("file", fileBody);
}
HttpEntity multipart = builder.build();
httpPost.setEntity(multipart);
HttpResponse response = httpClient.execute(httpPost);
int statusCode = response.getStatusLine().getStatusCode();
if (statusCode != 200) {
throw new RuntimeException("上传文件夹失败: " + response.getStatusLine().getReasonPhrase());
}
}
return true;
}
private static void listFiles(File folder, List<File> files) {
File[] subFiles = folder.listFiles();
for (File subFile : subFiles) {
if (subFile.isDirectory()) {
listFiles(subFile, files);
} else {
files.add(subFile);
}
}
}
......
......@@ -64,7 +64,7 @@ public class SysLoginService
public String login(String username, String password, String code, String uuid)
{
// 验证码校验
// validateCaptcha(username, code, uuid);
validateCaptcha(username, code, uuid);
// 登录前置校验
loginPreCheck(username, password);
// 用户验证
......
......@@ -32,3 +32,11 @@ export function urbanInvestmentPage(data) {
data
})
}
// 同地区城投-查询选项
export function uipGroupData(data) {
return request({
url: '/enterprise/uipGroupData',
method: 'post',
data
})
}
......@@ -158,3 +158,28 @@ export function addXGQY(param) {
data:param
})
}
//删除相关企业
export function delXGQY(param) {
return request({
url: '/business/company/remove/'+param,
method: 'DELETE',
})
}
//查询资料文档
export function getZLWD(param) {
return request({
url: '/business/file/list',
method: 'GET',
params:param
})
}
//删除资料文档
export function delZLWD(param) {
return request({
url: '/business/file/remove',
method: 'POST',
data:param
})
}
......@@ -656,6 +656,7 @@
background: #F6F9FD;
border-radius: 6px;
padding: 24px;
border: 1px solid #F6F9FD;
//box-sizing: content-box;
box-sizing: border-box;
>div{
......@@ -676,7 +677,6 @@
}
}
.rec_detail:hover{
.operate{
display: block;
......
......@@ -173,7 +173,7 @@
</template>
</el-table-column>
</el-table>
<div class="bottems" v-if="tableData.total>0">
<div class="bottems" v-if="tableData.total>searchParam.pageSize">
<el-pagination
background
:page-size="searchParam.pageSize"
......
......@@ -99,7 +99,7 @@
<div class="trendcon">{{item.text}}</div>
<div class="time">{{item.time}}</div>
</div>
<div class="tables" style="width: 100%">
<div class="tables" style="width: 100%" v-if="datalist.length>10">
<div class="bottems">
<el-pagination
background
......@@ -236,7 +236,7 @@ export default {
{
name: '',
type: 'bar',
barWidth: '20%',
barWidth: '12px',
data: [100, 152, 200, 334, 390, 330, 220,256,178],
itemStyle:{
normal: {
......@@ -280,7 +280,7 @@ export default {
{
name: '',
type: 'bar',
barWidth: '20%',
barWidth: '12px',
data: [110, 112, 190, 234, 310, 350, 220,276,198],
itemStyle:{
normal:{
......@@ -551,6 +551,12 @@ export default {
line-height: 18px;
padding-bottom: 16px;
}
&:last-child{
.trendcon{
border: none;
}
}
.time{
position: absolute;
right: 16px;
......
......@@ -8,6 +8,7 @@
border
fit
highlight-current-row
:default-sort = 'defaultSort'
@sort-change="sortChange"
>
<el-table-column
......@@ -27,7 +28,7 @@
:min-width="item.minWidth"
:align="item.align?item.align:'left'"
:fixed="item.fixed"
:sortable="item.sortable"
:sortable="item.sortable ? 'custom' : false"
:resizable="false">
<template v-if="item.slotHeader" slot="header">
<slot :name="item.slotName"></slot>
......@@ -65,6 +66,10 @@ export default {
type: Boolean,
default: false
},
defaultSort: {
type: Object,
default: null
},
tableData: {
type: Array,
default: []
......@@ -109,4 +114,7 @@ export default {
::v-deep .el-table__body tr.current-row > td.el-table__cell{
background-color: #ffffff;
}
::v-deep .el-table__fixed{
height: calc(100% - 16px) !important;
}
</style>
......@@ -11,6 +11,7 @@
<tables
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
......@@ -56,10 +57,11 @@ export default {
pageNum: 1,
pageSize: 10
},
defaultSort: {prop: 'issueTime', order: 'descending'},
forData: [
{label: '招标代理单位名称', prop: 'agency', minWidth: '350', slot: true},
{label: '合作项目/工程名称', prop: 'projectInfo', minWidth: '400', sortable: 'custom', slot: true},
{label: '最近一次合作时间', prop: 'issueTime', minWidth: '140', sortable: 'custom'}
{label: '合作项目/工程名称', prop: 'projectInfo', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'},
{label: '最近一次合作时间', prop: 'issueTime', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []},
......
......@@ -73,7 +73,7 @@ export default {
pageSize: 10
},
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: []},
],
forData: [
{label: '合作项目/工程名称', prop: 'dealTitle', width: '720', slot: true},
......
......@@ -79,10 +79,10 @@ export default {
pageSize: 10
},
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目/工程名称查询', options: []},
],
forData: [
{label: '合作项目/工程名称', prop: 'projectAllName', width: '720', slot: true},
{label: '合作项目/工程名称', prop: 'projectAllName', width: '720', fixed: true, slot: true},
{label: '项目/工程金额(万元)', prop: 'winBidAmount', width: '160'},
{label: '合作时间', prop: 'winBidTime', width: '100'},
{label: '项目地区', prop: 'province', width: '160', slot: true},
......
......@@ -79,10 +79,10 @@ export default {
pageSize: 10
},
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入合作项目/工程名称查询', options: []},
],
forData: [
{label: '合作项目/工程名称', prop: 'projectAllName', width: '720', slot: true},
{label: '合作项目/工程名称', prop: 'projectAllName', width: '720', fixed: true, slot: true},
{label: '项目/工程金额(万元)', prop: 'winBidAmount', width: '160'},
{label: '合作时间', prop: 'winBidTime', width: '100'},
{label: '项目地区', prop: 'province', width: '160', slot: true},
......
......@@ -11,6 +11,7 @@
<tables
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
......@@ -57,11 +58,12 @@ export default {
pageNum: 1,
pageSize: 10
},
defaultSort: {prop: 'time', order: 'descending'},
forData: [
{label: '客户名称', prop: 'companyName', minWidth: '350', slot: true},
{label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', sortable: 'custom', slot: true},
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom'},
{label: '最近一次合作时间', prop: 'time', minWidth: '140', sortable: 'custom'}
{label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'},
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'},
{label: '最近一次合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []},
......@@ -90,32 +92,6 @@ export default {
}
this.tableDataTotal = res.total
},
//排序-测试
sortChange(e){
this.tableData = []
let sortRule = e.prop+','+e.order
switch (sortRule){
case 'amount,descending':
this.queryParams.sort = 1
break
case 'amount,ascending':
this.queryParams.sort = 2
break
case 'time,descending':
this.queryParams.sort = 3
break
case 'time,ascending':
this.queryParams.sort = 4
break
case 'projectAllName,descending':
this.queryParams.sort = 5
break
case 'projectAllName,ascending':
this.queryParams.sort = 6
break
}
this.handleSearch()
},
handleClick(e, data) {
this.rowData = data
this.isDetails = true
......
......@@ -11,6 +11,7 @@
<tables
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
......@@ -20,8 +21,8 @@
@sort-change="sortChange"
>
<template slot="projectAllName" slot-scope="scope">
<router-link to="" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectAllName ">{{ scope.row.projectAllName }}</router-link>
<div v-else>{{ scope.row.projectAllName || '--' }}</div>
<router-link to="" tag="a" class="a-link" v-if="scope.row.id&&scope.row.projectAllName " v-html="scope.row.projectAllName"></router-link>
<div v-else v-html="scope.row.projectAllName || '--'"></div>
</template>
<template slot="companyName" slot-scope="scope">
<router-link to="" tag="a" class="a-link" v-if="scope.row.companyId&&scope.row.companyName">{{ scope.row.companyName }}</router-link>
......@@ -49,22 +50,23 @@ export default {
pageNum: 1,
pageSize: 10
},
defaultSort: {prop: 'winBidTime', order: 'descending'},
forData: [
{label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true},
{label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom'},
{label: '中标时间', prop: 'winBidTime', minWidth: '100', sortable: 'custom', descending: '3', ascending: '4'},
{label: '中标企业', prop: 'companyName', minWidth: '320', slot: true},
{label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom'},
{label: '下浮率(%)', prop: 'lowerRate', minWidth: '120', sortable: 'custom'},
{label: '中标金额(万元)', prop: 'winBidAmount', minWidth: '140', sortable: 'custom', descending: '1', ascending: '2'},
{label: '下浮率(%)', prop: 'lowerRate', minWidth: '120', sortable: 'custom', descending: '7', ascending: '8'},
{label: '项目经理 / 负责人', prop: 'staffName', minWidth: '130'},
{label: '中标地区', prop: 'region', minWidth: '160'},
{label: '工期(天)', prop: 'period', minWidth: '110', sortable: 'custom'},
{label: '工期(天)', prop: 'period', minWidth: '110', sortable: 'custom', descending: '9', ascending: '10'},
{label: '业绩类别', prop: 'boundType', minWidth: '110'}
],
formData: [
{ type: 1, fieldName: 'provinceId', value: '', placeholder: '项目地区', options: [] },
{ type: 5, fieldName: 'time', value: '', placeholder: '中标时间', startTime: 'dateFrom', endTime: 'dateTo' },
{ type: 6, fieldName: 'money', value: '', placeholder: '中标金额', startMoney: 'amountMin', endMoney: 'amountMax' },
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: [] }
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: [] }
],
//列表
tableLoading:false,
......
......@@ -11,6 +11,7 @@
<tables
:indexFixed="true"
:defaultSort="defaultSort"
:tableLoading="tableLoading"
:tableData="tableData"
:forData="forData"
......@@ -57,11 +58,12 @@ export default {
pageNum: 1,
pageSize: 10
},
defaultSort: {prop: 'time', order: 'descending'},
forData: [
{label: '供应商', prop: 'companyName', minWidth: '350', slot: true},
{label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', sortable: 'custom', slot: true},
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom'},
{label: '最近一次合作时间', prop: 'time', minWidth: '140', sortable: 'custom'}
{label: '合作项目/工程名称', prop: 'projectAllName', minWidth: '400', slot: true, sortable: 'custom', descending: '5', ascending: '6'},
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: 'custom', descending: '1', ascending: '2'},
{label: '最近一次合作时间', prop: 'time', minWidth: '140', sortable: 'custom', descending: '3', ascending: '4'}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入企业名称查询', options: []},
......
......@@ -70,7 +70,9 @@ export default {
},
//排序
sortChange(e){
console.log(e)
let item = this.forData.find(item => item.prop === e.prop)
this.queryParams.sort = item[e.order]
this.handleSearch()
}
}
}
......@@ -60,8 +60,6 @@ export default {
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
}
},
......
......@@ -75,8 +75,6 @@ export default {
//列表
tableLoading:false,
tableData:[],
pageIndex:1,
pageSize:10,
tableDataTotal:0,
}
},
......
......@@ -4,6 +4,7 @@
<div class="flex-box query-params">
<span class="common-title">区域经济</span>
</div>
<div class="params-dw"><img src="@/assets/images/addree.png" />广东省-广州市</div>
</div>
<div class="table-item">
<el-table
......@@ -253,6 +254,16 @@ export default {
}
.query-box{
margin: 10px 0 20px;
.params-dw{
font-size: 14px;
font-weight: 400;
color: #0081FF;
img{
width: 14px;
height: 14px;
margin-right: 5px;
}
}
}
}
......
......@@ -10,79 +10,79 @@
>
<template slot="slot">
<div class="search-box">
<span style="cursor: pointer;" @click="handleSearch">筛选<i class="el-icon-caret-bottom" style="color:rgba(35,35,35,0.4);margin-left: 5px"></i></span>
<span class="search-box-t"
:class="queryParams.uipExecutiveLevel ||
queryParams.uipBusinessType.length > 0 ||
queryParams.bratingSubjectLevel.length > 0 ||
queryParams.shareholderBg.length > 0 ||
queryParams.equityRelationship.length > 0 ||
queryParams.platformImportance.length > 0 ||
queryParams.developmentZone.length > 0 ? 'search-box-ta' : ''"
@click="handleSearch1">筛选<i :class="searchState ? 'el-icon-caret-top' : 'el-icon-caret-bottom'"></i></span>
<div v-show="searchState" ref="showContent" class="search-main">
<div class="item">
<span class="wrap_label">行政等级</span>
<div class="item_ckquery">
<span :class="{color_text:xzdjCalss == ''}" @click="changeXZDJ('')">全部</span>
<span :class="{color_text:queryParams.uipExecutiveLevel == ''}" @click="changeXZDJ('')">全部</span>
<template v-for="(item,index) in xzdj">
<span :class="{color_text:index+1 === xzdjCalss}" @click="changeXZDJ(index+1)">{{item.name}}</span>
<span :class="{color_text:item == queryParams.uipExecutiveLevel}" @click="changeXZDJ(item)">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">城投业务类型</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in typeList">
<span>{{item}}</span>
<span :class="{color_text:queryParams.uipBusinessType.length == 0}" @click="changeBeCurrent('','uipBusinessType')">全部</span>
<template v-for="(item,index) in uipGroupDatalist.uipBusinessType">
<span :class="{color_text:queryParams.uipBusinessType.includes(item)}" @click="changeBeCurrent(item,'uipBusinessType')">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">主体评级</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in ztpj">
<span>{{item}}</span>
<span :class="{color_text:queryParams.bratingSubjectLevel.length == 0}" @click="changeBeCurrent('','bratingSubjectLevel')">全部</span>
<template v-for="(item,index) in uipGroupDatalist.bratingSubjectLevel">
<span :class="{color_text:queryParams.bratingSubjectLevel.includes(item)}" @click="changeBeCurrent(item,'bratingSubjectLevel')">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">股东背景</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in gdbj">
<span>{{item}}</span>
<span :class="{color_text:queryParams.shareholderBg.length == 0}" @click="changeBeCurrent('','shareholderBg')">全部</span>
<template v-for="(item,index) in uipGroupDatalist.shareholderBg">
<span :class="{color_text:queryParams.shareholderBg.includes(item)}" @click="changeBeCurrent(item,'shareholderBg')">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">股权关系</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in gqgx">
<span>{{item}}</span>
<span :class="{color_text:queryParams.equityRelationship.length == 0}" @click="changeBeCurrent('','equityRelationship')">全部</span>
<template v-for="(item,index) in uipGroupDatalist.equityRelationship">
<span :class="{color_text:queryParams.equityRelationship.includes(item)}" @click="changeBeCurrent(item,'equityRelationship')">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">平台重要性</span>
<div class="item_ckquery">
<span>全部</span>
<template v-for="(item,index) in pt">
<span>{{item}}</span>
<span :class="{color_text:queryParams.platformImportance.length == 0}" @click="changeBeCurrent('','platformImportance')">全部</span>
<template v-for="(item,index) in uipGroupDatalist.platformImportance">
<span :class="{color_text:queryParams.platformImportance.includes(item)}" @click="changeBeCurrent(item,'platformImportance')">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label" style="width: 78px;">开发区类别</span>
<span class="wrap_label">开发区类别</span>
<div class="item_ckquery">
<span>全部</span>
<span :class="{color_text:queryParams.developmentZone.length == 0}" @click="changeBeCurrent('','developmentZone')">全部</span>
<template v-for="(item,index) in lfqType">
<span>{{item}}</span>
<span :class="{color_text:queryParams.developmentZone.includes(item)}" @click="changeBeCurrent(item,'developmentZone')">{{item}}</span>
</template>
</div>
</div>
<div class="item">
<span class="wrap_label">更多筛选</span>
<div class="item_ckquery">
<span :class="addresslength>0?'select-active':''">注册地区{{addresslength>0?(addresslength+'项'):''}}</span>
<el-cascader ref="address" class="cascader-region" popper-class='cascader-region-addd'
@input="addressListbtn" v-model="addressType" :options="addressList" :props="props" collapse-tags></el-cascader>
</div>
</div>
</div>
</div>
</template>
......@@ -109,7 +109,8 @@
import mixin from '../mixins/mixin'
import dataRegion from '@/assets/json/dataRegion'
import {
urbanInvestmentPage
urbanInvestmentPage,
uipGroupData
} from '@/api/detail/party-a/urbanLnvestment'
export default {
name: 'SameRegion',
......@@ -122,12 +123,22 @@ export default {
queryParams: {
provinceId: 500000,
cityId: 500100,
uipExecutiveLevel: '',
uipBusinessType: [],
bratingSubjectLevel: [],
shareholderBg: [],
equityRelationship: [],
platformImportance: [],
developmentZone: [],
pageNum: 1,
pageSize: 15
},
forData: [
{label: '企业名称', prop: 'companyName', width: '369', slot: true},
{label: '区域', prop: 'area', width: '100'},
{label: '招标数量', prop: 'biddingCount', width: '100', sortable: true},
{label: '城投拿地', prop: 'landInfoCount', width: '100', sortable: true},
{label: '供应商', prop: 'supplierCount', width: '100', sortable: true},
{label: '主体评级', prop: 'bratingSubjectLevel', width: '110'},
{label: '债劵余额(亿元)', prop: 'bondBalance', width: '130'},
{label: '行政级别', prop: 'uipExecutiveLevel', width: '120'},
......@@ -153,22 +164,9 @@ export default {
],
formData: [
{ type: 0, fieldName: 'penalizeReasonType', value: '', placeholder: '筛选', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '请输入关键词', options: []},
],
xzdj:[
{
name:'省级',
key:1,
},
{
name:'地级市',
key:2,
},
{
name:'区县级',
key:3,
}
{ type: 3, fieldName: 'keyword', value: '', placeholder: '请输入关键词', options: []},
],
xzdj:['省级','地级市','区县级'],
selected:[],
xzdjCalss:'',
typeList:['土地开发整理','基础设施建设','棚改保障房建设','公用事业','文化旅游','交通建设运营','产投平台'],
......@@ -185,6 +183,7 @@ export default {
addressType: [],
addresslength: 0,
searchState:false,
uipGroupDatalist:[],
//列表
tableLoading:false,
tableData:[],
......@@ -193,6 +192,7 @@ export default {
},
created() {
this.handleQuery()
this.getScreen()
},
computed: {
......@@ -250,8 +250,8 @@ export default {
}
this.addressList = str;
},
handleSearch(event){
// 筛选
handleSearch1(event){
// this.searchState=!this.searchState;
let dom = this.$refs.showContent;
if (!dom.contains(event.target)) {
......@@ -259,8 +259,43 @@ export default {
document.removeEventListener('click', this.handleSearch);
}
},
// 请求筛选条件
getScreen(){
uipGroupData().then(res => {
this.uipGroupDatalist = res.data
})
},
changeXZDJ(index) {
this.xzdjCalss = index;
this.queryParams.uipExecutiveLevel = index;
this.changes()
},
changeBeCurrent(index,name) {
if(index){
let i = this.queryParams[name].indexOf(index)
if(i == -1){
this.queryParams[name].push(index);
}else{
this.queryParams[name].splice(i,1);
}
}else{
this.queryParams[name] = []
}
this.changes()
this.$forceUpdate();
},
changes(){
let params = this.formParams()
params.pageNum = 1
this.queryParams.pageNum = 1
params.uipExecutiveLevel = this.queryParams.uipExecutiveLevel
params.uipBusinessType = this.queryParams.uipBusinessType
params.bratingSubjectLevel = this.queryParams.bratingSubjectLevel
params.shareholderBg = this.queryParams.shareholderBg
params.equityRelationship = this.queryParams.equityRelationship
params.platformImportance = this.queryParams.platformImportance
params.developmentZone = this.queryParams.developmentZone
this.handleQuery(params)
},
addressListbtn() {
let arr = this.$refs.address.getCheckedNodes();
......@@ -290,7 +325,50 @@ export default {
this.tableDataTotal = res.data.totalCount
this.tableLoading = false
})
},
//排序
sortChange(e){
if(e.order=='ascending'){
this.queryParams.field = e.prop
this.queryParams.order = 'asc'
}else if(e.order=='descending'){
this.queryParams.field = e.prop
this.queryParams.order = 'desc'
}else{
delete this.queryParams.field
delete this.queryParams.order
}
this.handleSearch();
},
// attr 参数表示当前点击的是哪一列,传进来的是点击列的标识
// rev 参数表示的是点击当前列表头之后是升序降序或者null,三种值分别是['ascending', 'descending', null]
sortFun(attr, rev){
if(rev === 'ascending') {
rev = 1
} else if (rev === 'descending') {
rev = -1
} else {
rev = 0
}
return function (x, y) {
let a = x[attr]
let b = y[attr]
if (!a) {
a = ""
}
if (!b) {
b = ""
}
if (a < b) {
return rev * -1
}
if (a > b) {
return rev * 1
}
return 0
}
}
}
}
</script>
......@@ -304,10 +382,26 @@ export default {
}
.search-box{
display: inline-block;
margin-right: 32px;
/*cursor: pointer;*/
color:#232323;
position: relative;
.search-box-t{
font-size: 14px;
font-weight: 400;
line-height: 32px;
color:#232323;
margin-right: 8px;
cursor: pointer;
i{
color:rgba(35,35,35,0.4);
margin-left: 5px
}
}
.search-box-ta{
color: #0081FF;
i{
color: #0081FF;
}
}
.search-main{
background: #ffffff;
box-shadow: 0px 4px 10px 0px rgba(0,0,0,0.1);
......@@ -331,11 +425,13 @@ export default {
}
.item_ckquery{
position: relative;
flex: 1;
span{
color: #232323;
padding: 5px 12px;
padding: 5px 6px;
display: inline-block;
cursor: pointer;
margin-right: 8px;
}
.color_text{
background: #F3F4F5;
......
......@@ -323,8 +323,8 @@ export default {
// trigger: 'axis'
},
legend: {
right: '151px',
top:"0px",
left: '12px',
top:"15px",
data: ['成交金额', '储备项目', '跟进动态']
},
series: [
......@@ -513,12 +513,12 @@ export default {
}
}
.chart-bot{
height: 354px;
height: auto;
margin-bottom: 12px;
.left{
float: left;
width: 353px;
height: 100%;
height: 354px;
background: url("../../../assets/images/project/glbj.png")no-repeat top center;
background-size: 100% 100%;
color: #FFFFFF;
......@@ -569,11 +569,11 @@ export default {
}
.right{
float: right;
height: 100%;
height: auto;
width: calc(100% - 369px);
.records{
margin-top: -17px;
height: 327px;
height: 627px;
overflow-y: auto;
width: 100%;
padding-right: 47px;
......@@ -621,6 +621,7 @@ export default {
.chart2{
width: 100%;
padding: 0 0 0 16px;
height: 285px;
margin-top: -20px;
}
......
......@@ -34,7 +34,7 @@
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</el-form-item>
<el-form-item label="投资估算:" class="row">
<el-form-item label="投资估算(万元):" class="row">
<el-input type="text" placeholder="请输入金额" @input="number" v-model="queryParam.investmentAmount"></el-input>
</el-form-item>
<el-form-item label="可见范围:" class="row">
......
......@@ -4,20 +4,18 @@
<el-card class="box-card noborder">
<div class="cardtitles">相关企业</div>
<div class="searchbtns">
<el-select class="select" placeholder="企业类型">
<el-select placeholder="请选择">
<el-select class="select" placeholder="企业类型" v-model="searchParam.companyType" @change="handleCurrentChange(1)">
<el-option v-for="(item,index) in companytype" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</el-select>
<div class="searchInput">
<el-input type="text" placeholder="输入关键词查询"></el-input>
<div class="btn">搜索</div>
<el-input type="text" placeholder="输入关键词查询" v-model="searchParam.companyName"></el-input>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<div class="btn btn_primary h32 b3" @click="opennew"><div class="img img1"></div>添加相关企业</div>
</div>
<div class="document">
<div class="document tables">
<el-table
:data="tableData"
:data="tableData.rows"
style="width: 100%"
>
<template slot="empty">
......@@ -29,26 +27,26 @@
</div>
</template>
<el-table-column
prop="date"
prop="companyName"
label="企业名称"
>
<template slot-scope="scope">
<div class="wordprimary">集团投标常用资料</div>
<div class="wordprimary">{{scope.row.companyName}}</div>
</template>
</el-table-column>
<el-table-column
prop="name"
label="对接深度"
prop="depth"
label="对接深度/竞争力度"
>
</el-table-column>
<el-table-column
prop="name"
prop="companyRole"
label="企业角色"
sortable
width="">
</el-table-column>
<el-table-column
prop="name"
prop="responsiblePerson"
label="负责人"
width="">
</el-table-column>
......@@ -59,21 +57,27 @@
width="">
<template slot-scope="scope">
<div class="hoverbtn">
<div class="sc">删除</div>
<div class="sc" @click="ondel = scope.row.id">删除</div>
</div>
</template>
</el-table-column>
</el-table>
<div class="tables">
<div class="bottems">
<div class="delform" v-if="ondel != -1">
<div class="words">是否将企业删除</div>
<div>
<div class="btnsmall btn_primary h28" @click="delQY()">确定</div>
<div class="btnsmall btn_cancel h28" @click="ondel = -1">取消</div>
</div>
</div>
<div class="tables" v-if="tableData.total > searchParam.pageSize">
<div class="bottems" v-if="ondel != -1">
<el-pagination
background
:page-size="20"
:current-page="1"
:page-size="searchParam.pageSize"
:current-page="searchParam.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="1000">
:total="tableData.total">
</el-pagination>
</div>
</div>
......@@ -87,12 +91,12 @@
<span>新建相关企业</span>
</div>
<div class="types">
<div v-for="(item,index) in companytype" :class="{'on':types==item.dictValue}" @click="types=item.dictLabel"><i></i>{{item.dictLabel}}</div>
<div v-for="(item,index) in companytype" :class="{'on':types==item.dictValue}" @click="totype(item.dictValue)"><i></i>{{item.dictLabel}}</div>
</div>
<div class="popform">
<div class="popbot" style="padding-right: 0">
<div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32" @click="hzhbVisible=true">下一步</div>
<div class="btn btn_cancel h32" @click="cancel(0)">返回</div>
<div class="btn btn_primary h32" @click="gettype">下一步</div>
</div>
</div>
</el-dialog>
......@@ -105,29 +109,23 @@
<span>新建相关企业-{{types}}</span>
</div>
<el-form class="popform i" label-width="85px" :rules="rules" ref="ruleForm" >
<el-form-item label="企业名称:" prop="projectName" class="row">
<el-input type="text" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item v-if="types == companytype[0].dictValue" label="对接深度:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-form-item label="企业名称:" prop="companyName" class="row">
<el-input type="text" v-model="queryParam.companyName" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item v-if="types == companytype[1].dictValue" label="合作阶段:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item v-if="types == companytype[2].dictValue" label="竞争力度:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-form-item :label="typename" class="row">
<el-input type="text" v-model="queryParam.depth" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="企业角色:" class="row">
<el-select placeholder="请选择">
<el-select placeholder="请选择" v-model="queryParam.companyRole">
<el-option v-for="(item,index) in companyrole" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</el-form-item>
<el-form-item label="负责人:" class="row">
<el-input type="text" placeholder="请输入"></el-input>
<el-input type="text" v-model="queryParam.responsiblePerson" placeholder="请输入"></el-input>
</el-form-item>
<div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">添加</div>
<div class="btn btn_cancel h32" @click="cancel(1)">返回</div>
<div class="btn btn_primary h32" @click="addqy">添加</div>
</div>
</el-form>
</el-dialog>
......@@ -137,7 +135,7 @@
<script>
import "@/assets/styles/project.scss"
import {getXGQY,addXGQY} from '@/api/project/project'
import {getXGQY,addXGQY,delXGQY} from '@/api/project/project'
import {getDictType} from '@/api/main'
export default {
name: 'xgqy',
......@@ -169,12 +167,30 @@
address: '上海市普陀区金沙江路 1516 弄'
}
],
typelist:['对接深度:','合作阶段:','竞争力度:'],
typename:"",
rules:{
projectName:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },],
companyName:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },],
},
companytype:[],
companyrole:[],
queryParam:{
businessId:this.$route.query.id,
companyId:'',
companyName:'',
companyRole:'',
companyType:'',
responsiblePerson:'',
depth:'',
},
searchParam:{
pageSize:20,
pageNum:1,
businessId:this.$route.query.id,
companyType:"",
companyName:'',
},
ondel:-1,
}
},
created(){
......@@ -187,18 +203,70 @@
getDictType('company_role').then(result=>{
this.companyrole = result.code == 200 ? result.data:[]
})
this.getlist()
},
methods:{
delQY(){
let id = this.ondel
delXGQY(id).then(res=>{
if(res.code == 200){
this.$message.success('删除成功')
this.ondel = -1
this.getlist()
}
})
},
addqy(){
addXGQY(this.queryParam).then(res=>{
if(res.code == 200){
this.$message.success('添加成功!')
this.getlist()
}else {
this.$message.error(res.msg)
}
})
},
getlist(){
getXGQY(this.searchParam).then(result=>{
console.log(result)
this.tableData = result
})
},
//翻页
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.searchParam.pageNum = val
this.getlist()
},
cancel(){
cancel(type){
if(type == 0)
this.dialogVisible = false
else
this.hzhbVisible = false
},
totype(value){
this.types = value
},
gettype(){
this.queryParam.companyType = this.types
this.companytype.forEach((item,index)=>{
if(item.dictValue == this.types){
this.typename = this.typelist[index]
}
})
this.hzhbVisible=true
},
//打开新建窗口
opennew(){
this.dialogVisible = true
this.queryParam={
businessId:this.$route.query.id,
companyId:'',
companyName:'',
companyRole:'',
companyType:'',
responsiblePerson:'',
depth:'',
}
},
}
}
......@@ -220,4 +288,8 @@
.box-card{
position: relative;
}
.delform{
position: fixed; left:50%; top:50%; transform:translate(-50%,-50%)
}
</style>
......@@ -26,7 +26,7 @@
{{xmjd}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmjd" class="select-multiple" placeholder="请选择" @click="editXMSL({projectStage:xmjd})">
<el-select v-model="xmjd" class="select-multiple" placeholder="请选择" @change="editXMSL({projectStage:xmjd})">
<el-option v-for="(item,index) in projectStage" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......
......@@ -6,74 +6,76 @@
<div class="searchbtns">
<div class="searchInput">
<el-input type="text" placeholder="输入关键词查询"></el-input>
<div class="btn">搜索</div>
<div class="btn" @click="handleCurrentChange(1)">搜索</div>
</div>
<div class="btn btn_primary h32 b2" @click="isupload=true"><div class="img img2"></div>上传</div>
<div class="btn btn_primary h32 b2" @click="getUP"><div class="img img2"></div>上传</div>
</div>
<div class="filepath" v-if="filename"><font @click="getall">全部</font> / <span> <img class="img" src="@/assets/images/folder.png">{{filename}}</span></div>
<div class="uploadbox" v-if="isupload">
<div>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-preview="handlePreview"
:on-remove="handleRemove"
:before-remove="beforeRemove"
multiple
:limit="3"
:on-exceed="handleExceed"
:file-list="fileList">
:action="action"
:on-change="handleFileListChange"
:multiple="false"
ref="upload"
:file-list="fileList"
accept=".word,.pdf.excel,.xlsx"
:headers="headers"
:show-file-list="false"
:on-success="onSuccess">
<div class="wj wj1"></div>上传文件
</el-upload>
</div>
<div>
<el-upload
class="upload-demo"
action="https://jsonplaceholder.typicode.com/posts/"
:on-remove="fileRemove"
:on-change="fileChang"
multiple
:limit="3"
:on-exceed="handleExceed"
:action="action"
:on-change="handleFileListChange"
:multiple="false"
:on-success="onSuccess1"
ref="uploadFile"
:headers="headers"
:show-file-list="false"
:file-list="fileList">
<div class="wj wj2"></div>上传文件夹
</el-upload>
</div>
</div>
<div class="document">
<div class="document tables">
<el-table
:data="tableData"
:data="fileDatas.rows"
style="width: 100%"
>
<template slot="empty">
<div class="empty">
<img src="@/assets/images/project/empty.png">
<div class="p1">暂无数据展示</div>
<div class="p2">抱歉,你还未添加相关数据,快去添加</div>
<div class="btn btn_primary h36 w102" @click="opennew">新增联系人</div>
<div class="p2">抱歉,你还未添加相关数据,快去上传</div>
<div class="btn btn_primary h36 w102" @click="getUP">上传文档</div>
</div>
</template>
<el-table-column
prop="date"
prop="name"
label="文件名称"
>
<template slot-scope="scope">
<div>
<img class="img" src="@/assets/images/folder.png">
<!--<img class="img" src="@/assets/images/word.png">-->
<!--<img class="img" src="@/assets/images/pdf.png">-->
<!--<img class="img" src="@/assets/images/excel_1.png">-->
<span>集团投标常用资料</span>
<div @click="getFile(scope.row)">
<img v-if="scope.row.type == 'file'" class="img" src="@/assets/images/folder.png">
<img v-if="scope.row.type == 'word'" class="img" src="@/assets/images/word.png">
<img v-if="scope.row.type == 'pdf'" class="img" src="@/assets/images/pdf.png">
<img v-if="scope.row.type == 'excel'" class="img" src="@/assets/images/excel_1.png">
<span>{{scope.row.name}}</span>
</div>
</template>
</el-table-column>
<!--<el-table-column-->
<!--prop="name"-->
<!--label="创建人"-->
<!--&gt;-->
<!--</el-table-column>-->
<el-table-column
prop="name"
label="创建人"
>
</el-table-column>
<el-table-column
prop="name"
prop="creatTime"
label="更新时间"
sortable
width="">
......@@ -85,121 +87,146 @@
width="">
<template slot-scope="scope">
<div class="hoverbtn">
<div class="xz">下载</div>
<div class="sc">删除</div>
<div class="xz" @click="downnlod(scope.row)">下载</div>
<div class="sc" @click="del(scope.row.filePath)">删除</div>
</div>
</template>
</el-table-column>
</el-table>
<div class="tables">
<div class="tables" v-if="fileDatas.total>param.pagesize">
<div class="bottems">
<el-pagination
background
:page-size="20"
:current-page="1"
:page-size="param.pagesize"
:current-page="param.pageNum"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="1000">
:total="fileDatas.total">
</el-pagination>
</div>
</div>
</div>
<el-dialog
class="popups"
:visible.sync="dialogVisible"
width="464px">
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>重庆市轨道交通3号线二期工程4标段施工总承包</span>
</div>
<div class="popform">
<div class="row">
<span class="left">联系人姓名:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系人角色:</span>
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</div>
<div class="row">
<span class="left">联系人职位:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系人公司/机关:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">内部维护人:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="row">
<span class="left">联系方式:</span>
<el-input type="text" placeholder="请输入"></el-input>
</div>
<div class="popbot">
<div class="btn btn_cancel h32" @click="cancel">返回</div>
<div class="btn btn_primary h32">保存</div>
</div>
</div>
</el-dialog>
</el-card>
</div>
</template>
<script>
import "@/assets/styles/project.scss"
import { getToken } from "@/utils/auth";
import { getZLWD ,delZLWD} from "@/api/project/project";
export default {
name: 'zlwd',
data(){
return{
isupload:false,
dialogVisible:false,
textarea:"",
nowedit:-1,//当前正在编辑的文本
tipslit:[],//项目标签
tipsvalue:"",//标签填写内容
tableData: [
{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}
],
fileList:[],//上传的文件
//上传
action:process.env.VUE_APP_BASE_API + '/business/file/upload',
fileList: [],
headers: {
Authorization: "Bearer " + getToken(),
filePath:this.$route.query.id,
},
param:{
pageNum:1,
pagesize:20,
filePath:this.$route.query.id,
},
fileDatas:[],
filename:'',
}
},
mounted(){
this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true;
created(){
this.getList()
// console.log(this.$ref)
},
methods:{
//上传文件夹
fileChang(file, fileList, name) {
this.form.instFilePics = fileList;
getall(){
this.param.filePath = this.$route.query.id
this.filename=''
this.headers.filePath = this.$route.query.id
this.handleCurrentChange(1)
},
fileRemove(file, fileList, name) {
this.form.instFilePics = fileList
getList(){
getZLWD(this.param).then(res=>{
this.fileDatas = res
if(this.fileDatas.rows!=null && this.fileDatas .length>0){
this.fileDatas.forEach(item=>{
let names = item.filePath.split('\\')
item.name = names[names.length-1]
let types = item.name.split('.')
item.type = types.length>1?types[1]:'file'
})
}
})
},
getFile(row){
if(row.type == 'file'){
this.filename = row.name
this.headers.filePath = this.$route.query.id+'\\'+row.name
this.param.filePath = row.filePath
this.handleCurrentChange(1)
}else{
return false
}
},
getUP(){
this.isupload=true
this.$nextTick(() => {
this.$refs.uploadFile.$children[0].$refs.input.webkitdirectory = true
})
},
downnlod(row){
let a = document.createElement("a");
a.setAttribute("href", row.filePath);
a.setAttribute("download", row.name);
document.body.appendChild(a);
a.click();
},
del(path){
delZLWD(path).then(res=>{
if(res.code == 200){
this.$message.success('删除成功!')
this.handleCurrentChange(1)
}
})
},
handleFileListChange(file, fileList) {
if (fileList.length > 0) {
this.fileList = [fileList[fileList.length - 1]];
}
},
onSuccess(res, file, fileList) {
if(res.code == 200 ){
this.$refs["upload"].submit();
let _this = this
setTimeout(function() {
_this.getList()
_this.isupload = false
},3000)
}
else
this.$message.error({message:res.msg,showClose:true})
},
onSuccess1(res, file, fileList) {
if(res.code == 200 ){
this.$refs["uploadFile"].submit();
let _this = this
setTimeout(function() {
_this.getList()
_this.isupload = false
},3000)
}
else
this.$message.error({message:res.msg,showClose:true})
},
//翻页
handleCurrentChange(val) {
console.log(`当前页: ${val}`);
this.param.pageNum(1)
this.getList()
},
cancel(){
this.dialogVisible = false
......@@ -213,6 +240,25 @@
</script>
<style lang="scss" scoped>
.filepath{
font-size: 12px;
height: 30px;
line-height: 16px;
padding-left: 24px;
>font{
opacity: 0.4;
}
>span{
position: relative;
padding-left: 23px;
}
.img{
position: absolute;
top: -3px;
width: 20px;
left: 0;
}
}
.w102{
width: 102px;
}
......
......@@ -197,16 +197,22 @@
this.thisindex = result.data.projectStage
let list = []
let txt = ''
if(result.data.provinceId){
if(result.data.provinceId != ""){
list.push(result.data.provinceId)
txt += result.data.provinceName
}
if(result.data.cityId){
list.push(result.data.cityId)
txt += '/'+result.data.cityName
}
if(result.data.districtId){
list.push(result.data.districtId)
}
if(result.data.provinceName){
txt += result.data.provinceName
}
if(result.data.cityName){
txt += '/'+result.data.cityName
}
if(result.data.districtName){
txt += '/'+result.data.districtName
}
this.address = list.length>0?list:"待添加"
......@@ -279,6 +285,14 @@
handleChange(value) {
var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
let param = {
provinceId:null,
provinceName:null,
cityId:null,
cityName:null,
districtId:null,
districtName:null,
}
let txt = ''
labelString.forEach((item,index)=>{
let str = ''
......@@ -286,13 +300,17 @@
str = '/'
}
txt += str + item
if(index == 0){
param.provinceName = item
}
if(index == 1){
param.cityName = item
}
if(index == 2){
param.districtName = item
}
})
this.addresstxt = txt
let param = {
provinceId:null,
cityId:null,
districtId:null
}
value.forEach((item,index)=>{
if(index == 0){
param.provinceId = parseInt(item)
......
......@@ -113,7 +113,7 @@
</div>
<div class="datalist">
<div class="datali" v-for="(item,index) in datalist">
<div class="det-title" @click="toDetail(item.id)">{{item.projectName}}<span v-if="activeName!='first'" class="people"><i>A</i>四川-李丽 <font color="#FA8A00" v-if="activeName!='first'">正在跟进</font></span></div>
<div class="det-title" @click="toDetail(item.id)">{{item.projectName}}<span v-if="activeName!='first'" class="people"><i>{{item.nickName1}}</i>{{item.nickName}} <font color="#FA8A00" v-if="activeName!='first'">正在跟进</font></span></div>
<div class="det-tips"><span class="tips tip1" v-if="item.label">{{item.label}}</span><span v-if="item.address" class="tips tip2">{{item.address}}</span></div>
<div class="det-contets">
<div class="det-con">
......@@ -133,7 +133,7 @@
<span class="wordprimary">{{item.ownerCompany}}</span>
</div>
</div>
<el-divider></el-divider>
<el-divider v-if="index != datalist.length-1"></el-divider>
<div class="operates" v-if="activeName=='first'">
<div class="i1"><img src="@/assets/images/follow.png">跟进</div>
<div class="i2"><img src="@/assets/images/edit.png">编辑</div>
......@@ -294,6 +294,7 @@ export default {
if(item.districtName != ""&& item.districtName != null)
str += '-' +item.districtName
item.address = str
item.nickName1 = item.nickName?item.nickName.slice(0,1):''
})
}
})
......
......@@ -35,6 +35,8 @@ module.exports = {
// detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: {
target: `http://122.9.160.122:9011`,
// target: `http://192.168.60.126:9011`,
// target: `http://192.168.60.27:8766`,
changeOrigin: true,
pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: ''
......
......@@ -19,4 +19,9 @@ public class BusinessIdDto {
* 项目标签名称
*/
private String label;
/**
* 文件路径
*/
private String folderPath;
}
......@@ -120,15 +120,11 @@ public class EnterpriseProjectService {
return BeanUtil.toBean(map, R.class);
}
// HashMap<String, Object> contentParam = new HashMap<>();
// contentParam.put("data_type", "bid_plan");
// contentParam.put("filter_type", 2);
// contentParam.put("strategy_id", contentId);
HashMap<String, Object> param = new HashMap<>();
param.put("data_type", "kaibiao");
param.put("filter_type", 2);
param.put("strategy_id", "647477d52ba0e4cb1410c7f6");
Map<String, Object> contentMap = dskOpenApiUtil.requestBody("/mongocontent/v1/cjb/mongo_content", BeanUtil.beanToMap(param, false, false));
HashMap<String, Object> contentParam = new HashMap<>();
contentParam.put("data_type", "bid_plan");
contentParam.put("filter_type", 2);
contentParam.put("strategy_id", contentId);
Map<String, Object> contentMap = dskOpenApiUtil.requestBody("/mongocontent/v1/cjb/mongo_content", BeanUtil.beanToMap(contentParam, false, false));
Map contentData = MapUtils.getMap(contentMap, "data", null);
......
......@@ -169,6 +169,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
//新增项目主信息
BusinessInfo businessInfo = new BusinessInfo();
BeanUtil.copyProperties(dto, businessInfo);
businessInfo.setConstructionUnit(dto.getOwnerCompany());
int addBusiness = businessInfoMapper.insertBusinessInfo(businessInfo);
if (addBusiness > 0) {
//获取登陆用户的部门id
......@@ -176,9 +177,7 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
// Long deptId = 100l;
//新增用户-项目关系信息
int addbusinessUser = businessUserMapper.insertBusinessUser(new BusinessUser(businessInfo.getId(), deptId.intValue(), dto.getUserId(), 1));
//新增项目-关联企业信息
int addRelateCompany = businessRelateCompanyMapper.insertBusinessRelateCompany(new BusinessRelateCompany(businessInfo.getId(), dto.getCompanyId(), dto.getOwnerCompany(), "业主"));
return addbusinessUser > 0 && addRelateCompany > 0 ? AjaxResult.success() : AjaxResult.error();
return addbusinessUser > 0 ? AjaxResult.success() : AjaxResult.error();
}
return AjaxResult.error();
......
......@@ -15,6 +15,7 @@
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
<result property="depth" column="depth"/>
<result property="companyType" column="company_type"/>
</resultMap>
<sql id="selectBusinessRelateCompanyVo">
......@@ -27,7 +28,8 @@
phone,
depth,
create_time,
update_time
update_time,
company_type
from business_relate_company
</sql>
......@@ -46,6 +48,7 @@
#{responsiblePerson}
</if>
<if test="phone != null and phone != ''">and phone = #{phone}</if>
<if test="companyType != null and companyType != ''">and company_type = #{companyType}</if>
</where>
</select>
......@@ -67,6 +70,7 @@
<if test="phone != null">phone,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
<if test="companyType != null">company_type,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="businessId != null">#{businessId},</if>
......@@ -78,6 +82,7 @@
<if test="phone != null">#{phone},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
<if test="companyType != null">#{companyType},</if>
</trim>
</insert>
......@@ -93,6 +98,7 @@
<if test="phone != null">phone = #{phone},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
<if test="companyType != null">company_type = #{companyType},</if>
</trim>
where id = #{id}
</update>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment