Commit 715f3f0d authored by zhangyi's avatar zhangyi

Merge remote-tracking branch 'origin/master'

parents 4dbeb127 21bf2946
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.domain.entity.BusinessFollowRecord;
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.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.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 项目跟进记录Controller
......@@ -39,11 +28,12 @@ public class BusinessFollowRecordController extends BaseController
* 根据项目id查询项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:list')")
@GetMapping("/list/{businessId}")
public AjaxResult list(@PathVariable Integer businessId)
{
return success(businessFollowRecordService.selectBusinessFollowRecordList(businessId));
}
// @GetMapping("/list/{businessId}")
// public TableDataInfo list(@PathVariable("businessId") Integer businessId)
// {
// startPage();
// return getDataTable(businessFollowRecordService.selectBusinessFollowRecordList(businessId));
// }
/**
* 新增项目跟进记录
......@@ -60,13 +50,24 @@ public class BusinessFollowRecordController extends BaseController
* 分页查询项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:list')")
// @GetMapping("/list")
// public TableDataInfo list(BusinessFollowRecord businessFollowRecord)
// {
// startPage();
// List<BusinessFollowRecord> list = businessFollowRecordService.selectBusinessFollowRecordList(businessFollowRecord);
// return getDataTable(list);
// }
@GetMapping("/list")
public TableDataInfo list(@RequestBody(required=false) BusinessIdDto businessId)
{
startPage();
List<BusinessFollowRecord> list = businessFollowRecordService.selectBusinessFollowRecordList(businessId);
return getDataTable(list);
}
/**
* 删除项目跟进记录
*/
// @PreAuthorize("@ss.hasPermi('system:record:remove')")
// @Log(title = "项目跟进记录", businessType = BusinessType.DELETE)
@DeleteMapping("remove/{ids}")
public AjaxResult remove(@PathVariable(value = "ids",required=false) Long[] ids)
{
return toAjax(businessFollowRecordService.deleteBusinessFollowRecordByIds(ids));
}
// /**
// * 导出项目跟进记录列表
......@@ -102,14 +103,4 @@ public class BusinessFollowRecordController extends BaseController
// return toAjax(businessFollowRecordService.updateBusinessFollowRecord(businessFollowRecord));
// }
// /**
// * 删除项目跟进记录
// */
// @PreAuthorize("@ss.hasPermi('system:record:remove')")
// @Log(title = "项目跟进记录", businessType = BusinessType.DELETE)
// @DeleteMapping("/{ids}")
// public AjaxResult remove(@PathVariable Long[] ids)
// {
// return toAjax(businessFollowRecordService.deleteBusinessFollowRecordByIds(ids));
// }
}
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.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
......@@ -69,9 +61,9 @@ public class BusinessInfoController extends BaseController
*/
// @PreAuthorize("@ss.hasPermi('system:business:query')")
@GetMapping("/browse/{businessId}")
public AjaxResult browse(@PathVariable Integer id)
public AjaxResult browse(@PathVariable("businessId") Integer businessId)
{
return success(businessInfoService.browse(id));
return success(businessInfoService.browse(businessId));
}
/**
......@@ -88,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)
{
......@@ -99,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)
{
......@@ -110,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);
}
}
package com.dsk.web.controller.search.macroMarket;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto;
import com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
import com.dsk.common.dtos.*;
import com.dsk.system.service.EconomicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
......@@ -44,9 +42,9 @@ public class RegionalEconomicDataController {
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@GetMapping("/years/list")
public AjaxResult yearsList() {
return economicService.yearsList();
@PostMapping("/years/list")
public AjaxResult yearsList(@RequestBody OpRegionalEconomicDataYearsListDto dto) {
return economicService.yearsList(dto);
}
......@@ -57,9 +55,9 @@ public class RegionalEconomicDataController {
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@GetMapping("/details/{id}")
public AjaxResult details(@PathVariable("id") Integer id) {
return economicService.details(id);
@PostMapping("/details")
public AjaxResult details(@RequestBody @Valid OpRegionalEconomicDataDetailsDto detailsDto) {
return economicService.details(detailsDto);
}
......
package com.dsk.web.controller.search.macroMarket;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.SpecialBondInformationDetailsDto;
import com.dsk.common.dtos.SpecialBondInformationPageDto;
import com.dsk.common.dtos.SpecialPurposeBondsDto;
import com.dsk.common.dtos.SpecialPurposeBondsPageDto;
......@@ -8,6 +9,8 @@ import com.dsk.system.service.SpecialPurposeBondsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import javax.validation.Valid;
/**
* @ClassName SpecialBondProjectsController
* @Description 专项债项目
......@@ -42,9 +45,9 @@ public class SpecialBondProjectsController {
*@Author: Dgm
*@date: 2023/5/18 10:29
*/
@GetMapping("/details/{id}")
public AjaxResult details(@PathVariable("id") String id) {
return specialPurposeBondsService.details(id);
@PostMapping("/details")
public AjaxResult details(@RequestBody @Valid SpecialBondInformationDetailsDto detailsDto) {
return specialPurposeBondsService.details(detailsDto);
}
......
......@@ -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 字符验证
......
......@@ -150,6 +150,18 @@
<artifactId>dsk-acc-open-sdk-java</artifactId>
<version>${dsk-openapi-sdk.version}</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.13</version>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpmime</artifactId>
<version>4.5.13</version>
</dependency>
</dependencies>
</project>
......@@ -142,6 +142,78 @@ public class BusinessInfo extends BaseEntity
@Excel(name = "评标委员会")
private String evaluationBidCouncil;
/** 建设单位 */
@Excel(name = "建设单位")
private String constructionUnit;
/** 建设单位负责人 */
@Excel(name = "建设单位负责人")
private String constructionPrincipal;
/** 建设单位联系电话 */
@Excel(name = "建设单位联系电话")
private String constructionPhone;
/** 主管单位 */
@Excel(name = "主管单位")
private String supervisorUnit;
/** 主管单位负责人 */
@Excel(name = "主管单位负责人")
private String supervisorPrincipal;
/** 主管单位联系电话 */
@Excel(name = "主管单位联系电话")
private String supervisorPhone;
public String getConstructionUnit() {
return constructionUnit;
}
public void setConstructionUnit(String constructionUnit) {
this.constructionUnit = constructionUnit;
}
public String getConstructionPrincipal() {
return constructionPrincipal;
}
public void setConstructionPrincipal(String constructionPrincipal) {
this.constructionPrincipal = constructionPrincipal;
}
public String getConstructionPhone() {
return constructionPhone;
}
public void setConstructionPhone(String constructionPhone) {
this.constructionPhone = constructionPhone;
}
public String getSupervisorUnit() {
return supervisorUnit;
}
public void setSupervisorUnit(String supervisorUnit) {
this.supervisorUnit = supervisorUnit;
}
public String getSupervisorPrincipal() {
return supervisorPrincipal;
}
public void setSupervisorPrincipal(String supervisorPrincipal) {
this.supervisorPrincipal = supervisorPrincipal;
}
public String getSupervisorPhone() {
return supervisorPhone;
}
public void setSupervisorPhone(String supervisorPhone) {
this.supervisorPhone = supervisorPhone;
}
public String getEvaluationBidWay() {
return evaluationBidWay;
}
......@@ -437,6 +509,12 @@ public class BusinessInfo extends BaseEntity
.append("earnestMoneyPay", getEarnestMoneyPay())
.append("earnestMoney", getEarnestMoney())
.append("evaluationBidCouncil", getEvaluationBidCouncil())
.append("constructionUnit", getConstructionUnit())
.append("constructionPrincipal", getConstructionPrincipal())
.append("constructionPhone", getConstructionPhone())
.append("supervisorUnit", getSupervisorUnit())
.append("supervisorPrincipal", getSupervisorPrincipal())
.append("supervisorPhone", getSupervisorPhone())
.toString();
}
}
......@@ -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();
}
......
package com.dsk.common.dtos;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName OpRegionalEconomicDataV1Dto
* @Description 区域经济大全-详情
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataDetailsDto {
/**
* id
*/
@NotNull(message = "id 不能为空")
private Integer id;
}
package com.dsk.common.dtos;
import lombok.Data;
/**
* @ClassName OpRegionalEconomicDataYearsListDto
* @Description 获取年份
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class OpRegionalEconomicDataYearsListDto {
private Integer year;
}
package com.dsk.common.dtos;
import lombok.Data;
import javax.validation.constraints.NotNull;
/**
* @ClassName SpecialBondInformationDetailsDto
* @Description 专项债-详情
* @Author Dgm
* @Date 2023/5/23 14:05
* @Version
*/
@Data
public class SpecialBondInformationDetailsDto {
/**
* 专项债券唯一标识
*/
@NotNull(message = "id 不能为空")
private Integer id;
}
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 java.net.URLEncoder;
import java.nio.charset.StandardCharsets;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
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 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 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;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
/**
* 文件处理工具类
*
* @author dsk
*/
@Slf4j
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
*
* @param path 文件夹路径
* @return boolean
*/
public static boolean newFolder(String path) {
File file = new File(path);
if (!file.exists()) {
boolean isSuccess = file.mkdir();
if (!isSuccess)
if (!file.exists()) {
file.mkdirs();
}
return isSuccess;
} else {
return true;
}
}
/**
*
*
* @param folderPath 文件夹路径
* @return 文件夹路径
*/
public static String newFolder1(String folderPath) {
String filePath = folderPath;
try {
File myFilePath = new File(filePath);
if (!myFilePath.exists()) {
myFilePath.mkdirs();
}
} catch (Exception e) {
log.error("创建文件夹失败");
filePath = "";
e.printStackTrace();
}
return filePath;
}
/**
* 输出指定文件的byte数组
*
......@@ -104,7 +161,7 @@ public class FileUtils
return FileUploadUtils.getPathFileName(uploadDir, pathName);
}
/**
/**
* 删除文件
*
* @param filePath 文件
......@@ -121,6 +178,231 @@ public class FileUtils
}
return flag;
}
/**
* 删除整个文件夹或者文某个文件
*
* @param filePath 文件
* @return
*/
public static boolean delFolder(String filePath) {
try {
delAllFile(filePath); // 删除里面的所有文件
File file = new File(filePath);
return file.delete(); // 删除空文件夹
} catch (Exception e) {
throw new BaseException("删除文件夹失败",e.getMessage());
}
}
/**
* 文件夹过滤
*
* @param path 文件夹路径
*/
public static void delAllFile(String path) {
String hint = "这是一个根目录,请更换目录!";
File file = new File(path);
if (!file.exists()) {
throw new BaseException("文件不存在");
}
// if (!file.isDirectory()) {
// return false;
// }
if (file.getAbsolutePath().equalsIgnoreCase("/")) {
throw new BaseException(hint);
}
if (file.getAbsolutePath().equalsIgnoreCase("/root")) {
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")) {
throw new BaseException(hint);
}
if (file.getAbsolutePath().equalsIgnoreCase("C://") || file.getAbsolutePath().equalsIgnoreCase("C:\\\\")) {
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);// 删除空文件夹
}
}
}
/**
* 获取文件夹中所有文件
* @param filePath 全路径
* @return
*/
public static List<String> getAllFiles(String filePath) {
List<String> fileList = new ArrayList<String>();
File file = new File(filePath);
if (!file.exists()) {
return fileList;
}
if (!file.isDirectory()) {
return fileList;
}
// 获取当前目录下的文件和文件夹
File[] files = file.listFiles();
if (files != null) {
for (File directory : files) {
// 如果是文件夹则递归调用此方法
if (directory.isDirectory()) {
fileList.add(directory.getPath());
getAllFiles(directory.getPath());
} else {
// 如果是文件则直接输出路径
fileList.add(directory.getPath());
}
}
return fileList;
}
return fileList;
}
/**
* 获取文件夹中的所有文件,不包括文件夹
*
* @param path 文件夹路径
* @return List<File>
*/
public static List<File> getAllFileNames(String path) {
List<File> fileList = new ArrayList<File>();
File file = new File(path);
if (!file.exists()) {
return fileList;
}
if (!file.isDirectory()) {
return fileList;
}
String[] tempList = file.list();
File tempFile;
for (String fileName : tempList) {
if (path.endsWith(File.separator)) {
tempFile = new File(path + fileName);
} else {
tempFile = new File(path + File.separator + fileName);
}
if (tempFile.isFile()) {
fileList.add(tempFile);
}
if (tempFile.isDirectory()) {
List<File> allFiles = getAllFileNames(tempFile.getAbsolutePath());
fileList.addAll(allFiles);
}
}
return fileList;
}
/**
* 下载文件
* @param url 要下载的文件链接
* @param targetFolder 目标文件
* @return
* @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");
connection.connect();
if (connection.getResponseCode() != HttpURLConnection.HTTP_OK) {
throw new RuntimeException("下载文件夹失败: " + connection.getResponseMessage());
}
try (ZipInputStream zipInputStream = new ZipInputStream(connection.getInputStream())) {
ZipEntry entry;
while ((entry = zipInputStream.getNextEntry()) != null) {
String entryName = entry.getName();
if (StringUtils.isBlank(entryName)) {
continue;
}
File entryFile = new File(targetFolder, entryName);
if (entry.isDirectory()) {
entryFile.mkdirs();
} else {
File parent = entryFile.getParentFile();
if (!parent.exists()) {
parent.mkdirs();
}
try (FileOutputStream outputStream = new FileOutputStream(entryFile)) {
IOUtils.copy(zipInputStream, outputStream);
}
}
}
}
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);
}
}
}
/**
* 文件名称验证
......
......@@ -71,3 +71,12 @@ export function historySendProvince(data) {
data: data
})
}
// 投标记录列表
export function tenderPage(data) {
return request({
url: '/enterpriseBussiness/tenderPage',
method: 'post',
data: data
})
}
......@@ -32,3 +32,11 @@ export function urbanInvestmentPage(data) {
data
})
}
// 同地区城投-查询选项
export function uipGroupData(data) {
return request({
url: '/enterprise/uipGroupData',
method: 'post',
data
})
}
......@@ -44,6 +44,23 @@ export function editXMNR(param) {
data:param
})
}
//项目标签新增
export function addLabel(param) {
return request({
url: '/business/label/add',
method: 'POST',
data:param
})
}
//项目标签删除
export function removeLabel(param) {
return request({
url: '/business/label/remove',
method: 'POST',
data:param
})
}
//查询项目联系人
export function getLXR(param) {
......@@ -124,3 +141,20 @@ export function editGZDB(param) {
data:param
})
}
//查询相关企业
export function getXGQY(param) {
return request({
url: '/business/company/list',
method: 'GET',
params:param
})
}
//新增相关企业
export function addXGQY(param) {
return request({
url: '/business/company/add',
method: 'POST',
data:param
})
}
......@@ -318,7 +318,7 @@ select {
.jabph_popper_box {
position: absolute;
left: 146px;
left: 144px;
bottom: -1px;
background: #ffffff;
width: 186px;
......
......@@ -199,6 +199,36 @@ export const constantRoutes = [
}
]
},
{
path: '/BidRecord',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: '/radar/BidRecord/details/:id(\\d+)',
component: () => import('@/views/radar/BidRecord/details'),
name: 'BidRecordDetails',
meta: { title: '开标记录详情', icon: 'radar' }
}
]
},
{
path: '/Bidding',
component: Layout,
hidden: true,
redirect: 'noredirect',
children: [
{
path: '/radar/Bidding/details/:id(\\d+)',
component: () => import('@/views/radar/Bidding/details'),
name: 'BiddingDetails',
meta: { title: '招标计划详情', icon: 'radar' }
}
]
},
]
......
<template>
<div :ref="refStr" class="custom-money-select screen-popper" id="custom-money-select">
<div :class="['input-block', isSelectOption?'rote':'']">
<div class="block" @click="isSelectOption=!isSelectOption" @mouseenter="handleMouseenter" @mouseleave="handleMouseleave">
<el-input class="custom-money-input" v-model="value" :placeholder="placeholder" readonly>
<template slot="suffix">
<span @click.stop="handleClear" :class="[isClear&&isHover?'el-icon-circle-close':'el-icon-arrow-down']"></span>
</template>
</el-input>
</div>
<div class="options-block" v-if="isSelectOption">
<div class="arrow"></div>
<div @click="handleClick(option)" :class="['option', value==option?'active':'']" :key="i" v-for="(option, i) in options">
<template v-if="option == '自定义'">
<div class="number-box">
<input type="number" v-model="startMoney" class="number-input" clearable>&nbsp;&nbsp;&nbsp;&nbsp;<input v-model="endMoney" class="number-input" type="text" clearable>&nbsp;&nbsp;万元&nbsp;&nbsp;<el-button @click.stop="handleConfirm" class="number-button" type="primary">确定</el-button>
</div>
</template>
<template v-else>
<span>{{option}}</span> <span v-if="value==option" class="el-icon-check"></span>
</template>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
props: {
'placeholder': {
type: String,
default: '请选择'
},
'ref-str': {
type: String,
default: `timeselect${String(Math.random(0, 100)).slice(2)}`,
},
permissions: { //文本权限相关字段
type: Array,
default: () => {},
},
powerLabel: {
type: String,
default: ''
},
moneyList: {
type: Array,
default: () => [],
}
},
computed: {
isClear() {
if(!this.isSelectOption && this.value) {
return true
}else {
return false
}
}
},
data() {
return {
value: '',
options: ['一亿以上', '5000万-1亿', '1000万-5000万', '1000万以下', '自定义'],
isSelectOption: false,
startMoney: '',
endMoney: '',
isHover: false
}
},
mounted() {
this.handleAppClick()
if(this.moneyList&&this.moneyList.length>0){
this.options = this.moneyList
}
},
destroyed() {
const app = document.getElementById('app')
app.removeEventListener('click', ()=>{}, true)
},
methods: {
// 判断是否点击的为组件内部
handleAppClick() {
const app = document.getElementById('app')
app.addEventListener('click', (e) => {
const dom = this.$refs[this.refStr]
const flag = dom && dom.contains(e.target)
// const flag = document.getElementById('custom-money-select').contains(e.target)
!flag ? this.isSelectOption = false : ''
if(this.value == '自定义' && !this.startMoney && !this.endMoney) {
this.value = ''
this.$emit('input', '')
this.$emit('handle-search')
}
}, true)
},
// 清除
handleClear() {
if(this.isClear && this.isHover) {
this.value = ''
this.startMoney = ''
this.endMoney = ''
this.$emit('input', '')
this.$emit('handle-search')
}else {
this.isSelectOption = true
}
},
// 鼠标移入后的回调
handleMouseenter() {
this.isHover = true
},
// 鼠标离开后的回调
handleMouseleave() {
this.isHover = false
},
// 选项点击后的回调
handleClick(value) {
this.value = value
let moneyStr = ''
if(value == '自定义') {
this.value = '自定义'
}else {
this.startMoney = ''
this.endMoney = ''
this.isSelectOption = false
switch (value) {
case '一亿以上':
moneyStr = [10000]
break;
case '5000万-1亿':
moneyStr = [5000, 10000]
break;
case '1000万-5000万':
moneyStr = [1000, 5000]
break;
case '10亿以上':
moneyStr = [100000]
break;
case '1亿-10亿':
moneyStr = [10000, 100000]
break;
case '2000万-1亿':
moneyStr = [2000, 10000]
break;
case '400万-2000万':
moneyStr = [400, 2000]
break;
case '400万以下':
moneyStr = [, 400]
break;
default:
moneyStr = [, 1000]
break;
}
this.$emit('input', moneyStr)
this.$emit('handle-search')
}
},
// 自定义确认点击后的回调
handleConfirm() {
this.isSelectOption = false
if(!this.startMoney && !this.endMoney) {
this.value = ''
this.$emit('input', '')
}else {
if(this.endMoney && this.startMoney) {
this.value = `${this.startMoney}-${this.endMoney}万`
}else {
if(this.startMoney) {
this.value = `大于等于${this.startMoney}万`
}
if(this.endMoney) {
this.value = `小于等于${this.endMoney}万`
}
}
let moneyStr = [this.startMoney, this.endMoney]
this.$emit('input', moneyStr)
}
this.$emit('handle-search')
}
}
}
</script>
<style lang="scss">
.custom-money-select {
width: 120px;
height: 34px;
position: relative;
.input-block {
margin: 0;
width: 100%;
height: 100%;
cursor: pointer;
.block {
width: 100%;
height: 100%;
>.custom-money-input.el-input {
width: 100%;
height: 100%;
>input {
width: 100%;
height: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
border-radius: 2px;
}
}
}
.el-input__suffix {
transform: rotateZ(0);
width: 25px;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
&.rote {
.el-input__suffix {
transform: rotateZ(180deg);
}
}
}
.options-block {
position: absolute;
margin-top: 12px;
min-width: 120px;
font-size: 14px;
color: #666666;
background-color: #fff;
border: 1px solid #E4E7ED;
padding: 6px 0;
border-radius: 4px;
z-index: 9;
// .arrow {
// position: absolute;
// width: 0;
// height: 0;
// top: -12px;
// left: 35px;
// border: 6px solid transparent;
// border-bottom-color: #E4E7ED;
// &::after {
// position: absolute;
// display: inline-block;
// left: -4px;
// top: -2px;
// content: '';
// width: 0;
// height: 0;
// border: 4px solid transparent;
// border-bottom-color: #fff;
// z-index: 9;
// }
// }
.option {
padding: 0 24px 0 16px;
box-sizing: border-box;
width: 400px;
height: 36px;
display: flex;
justify-content: space-between;
align-items: center;
.number-box {
display: flex;
align-items: center;
>span {
margin: 0 10px;
}
.number-input {
padding: 0 24px 0 10px;
width: 100px !important;
height: 30px;
line-height: 30px;
border: none;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 206px;
border: 1px solid #DCDCDC;
border-radius: 2px;
&::-webkit-outer-spin-button,
&::-webkit-inner-spin-button {
-webkit-appearance: none;
}
&[type="number"]{
-moz-appearance: textfield;
}
}
.number-button {
padding: 0;
width: 60px;
height: 30px;
line-height: 30px;
margin-left: 10px;
}
}
>span {
display: inline-block;
}
&.active {
background-color: #F2F7FF;
color: #0381FA;
}
&:hover {
background-color: #F5F7FA;
}
}
}
.number-input {
padding: 0 24px 0 10px;
width: 60px !important;
height: 30px;
line-height: 30px;
border: none;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 206px;
border: 1px solid #DCDCDC;
border-radius: 2px;
&::-webkit-outer-spin-button,
&::-webkit-inner-spin-button {
-webkit-appearance: none;
}
&[type="number"]{
-moz-appearance: textfield;
}
}
.number-button {
padding: 0;
width: 60px;
height: 30px;
line-height: 30px;
margin-left: 10px;
}
}
</style>
<template>
<div :ref="refStr" class="custom-time-select screen-popper" id="custom-time-select">
<div :class="['input-block', isSelectOption?'rote':'']">
<div class="block" @click="isSelectOption=!isSelectOption" @mouseenter="handleMouseenter" @mouseleave="handleMouseleave">
<el-input class="custom-time-input" v-model="value" :placeholder="placeholder" readonly>
<template slot="suffix">
<span @click.stop="handleClear" :class="[isClear&&isHover?'el-icon-circle-close':'el-icon-arrow-down']"></span>
</template>
</el-input>
</div>
<div class="options-block" v-if="isSelectOption">
<div class="arrow"></div>
<div @click="handleClick(option)" :class="['option', value==option?'active':'']" :key="i" v-for="(option, i) in options">
<template v-if="option == '自定义'">
<div style="position: relative">
自定义
<el-date-picker
ref="picker"
:default-value="defaultValue"
style="position: absolute;opacity: 0;"
v-model="pickerValue"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
value-format="yyyy-MM-dd"
:picker-options="pickerOptions"
@change="changePicker">
</el-date-picker>
</div>
</template>
<template v-else>
<span>{{option}}</span> <span v-if="value==option" class="el-icon-check"></span>
</template>
</div>
</div>
</div>
<div v-if="isSelectOption" class="picker-block" ref="picker-block"></div>
</div>
</template>
<script>
export default {
props: {
'placeholder': {
type: String,
default: '请选择',
},
'ref-str': {
type: String,
default: `timeselect${String(Math.random(0, 100)).slice(2)}`,
},
dateFrom: {
type: String,
default: ''
},
dateTo: {
type: String,
default: ''
}
},
computed: {
isClear() {
if(!this.isSelectOption && this.value) {
return true
}else {
return false
}
},
pickerOptions() {
// 用计算属性
let _this = this
// 此时 this指向的就是vue实例
return {
disabledDate(time) {
if(_this.dateFrom){
return time.getTime() < new Date(_this.dateFrom.replace(/-/g, '/')).getTime() - 8.64e6;//如果没有后面的-8.64e6就是不可以选择今天的
}
if(_this.dateTo){
return time.getTime() > new Date(_this.dateTo.replace(/-/g, '/')).getTime();//如果没有后面的-8.64e7就是不可以选择今天的
}
}
}
},
},
watch: {
refStr(refStr) {
return refStr
}
},
data() {
return {
value: '',
options: ['近1年', '近2年', '近3年', '近5年', '自定义',],
isSelectOption: false,
isHover: false,
pickerValue: [],
defaultValue:new Date()
}
},
mounted() {
if(this.dateTo){
this.defaultValue = new Date(this.dateTo)
}
this.handleAppClick()
},
methods: {
// 时间格式化
formatDate(timeStr) {
let date = new Date(Number(timeStr))
let year = date.getFullYear()
let month = String(date.getMonth() + 1).padStart(2, 0)
let day = String(date.getDate()).padStart(2, 0)
return `${year}-${month}-${day}`
},
// 判断是否点击的为组件内部
handleAppClick() {
const app = document.getElementById('app')
app.addEventListener('click', (e) => {
const dom = this.$refs[this.refStr]
const flag = dom && dom.contains(e.target)
// const flag = document.getElementById('custom-time-select').contains(e.target)
!flag ? this.isSelectOption = false : ''
if(this.value == '自定义' && (!this.pickerValue || !this.pickerValue.length)) {
this.value = ''
this.$emit('input', '')
this.$emit('handle-search')
}
}, true)
},
handleMouseenter() {
this.isHover = true
},
handleMouseleave() {
this.isHover = false
},
handleClear() {
if(this.isClear && this.isHover) {
this.value = ''
this.pickerValue = []
this.$emit('input', '')
this.$emit('handle-search')
}else {
this.isSelectOption = true
}
},
handleClick(value) {
this.value = value
if(value == '自定义') {
this.value = '自定义'
this.$refs.picker && this.$refs.picker.length && this.$refs.picker[0].focus()
this.$nextTick(() => {
this.$refs['picker-block'].appendChild(this.$refs.picker[0].popperElm)
})
}else {
this.pickerValue = []
this.isSelectOption = false
let timeStr = []
let startTime = ''
let endTime = new Date()
switch (value) {
case '近1年':
startTime = new Date().setFullYear(new Date().getFullYear() - 1)
if(this.dateTo){
startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 1)
}
timeStr = [this.formatDate(startTime), this.formatDate(endTime)]
break;
case '近2年':
startTime = new Date().setFullYear(new Date().getFullYear() - 2)
if(this.dateTo){
startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 2)
}
timeStr = [this.formatDate(startTime), this.formatDate(endTime)]
break;
case '近3年':
startTime = new Date().setFullYear(new Date().getFullYear() - 3)
if(this.dateTo){
startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 3)
}
timeStr = [this.formatDate(startTime), this.formatDate(endTime)]
break;
case '近5年':
startTime = new Date().setFullYear(new Date().getFullYear() - 5)
if(this.dateTo){
startTime = new Date(this.dateTo).setFullYear(new Date(this.dateTo).getFullYear() - 5)
}
timeStr = [this.formatDate(startTime), this.formatDate(endTime)]
break;
default:
if(this.pickerValue && this.pickerValue.length) {
timeStr = this.pickerValue
}else {
timeStr = []
this.value = ''
}
break;
}
this.$emit('input', timeStr)
this.$emit('handle-search')
}
},
// 时间选择改变后的回调
changePicker(value) {
this.isSelectOption = false
if(value && value.length) {
// this.value = '自定义'
this.value = String(this.pickerValue)
this.$emit('input', this.pickerValue)
}else {
this.value = ''
this.$emit('input', '')
}
this.$emit('handle-search')
}
}
}
</script>
<style lang="scss">
.custom-time-select {
width: 120px;
height: 34px;
.input-block {
width: 100%;
height: 100%;
margin: 0;
cursor: pointer;
.block {
width: 100%;
height: 100%;
>.custom-time-input.el-input {
width: 100%;
height: 100%;
>input {
width: 100%;
height: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
border-radius: 2px;
}
}
}
.el-input__suffix {
transform: rotateZ(0);
width: 25px;
height: 100%;
display: flex;
justify-content: center;
align-items: center;
}
&.rote {
.el-input__suffix {
transform: rotateZ(180deg);
}
}
}
.options-block {
position: absolute;
margin-top: 12px;
min-width: 120px;
font-size: 14px;
color: #666666;
background-color: #fff;
border: 1px solid #E4E7ED;
padding: 6px 0;
border-radius: 4px;
z-index: 9;
.option {
padding: 0 24px 0 16px;
box-sizing: border-box;
height: 36px;
display: flex;
justify-content: space-between;
align-items: center;
>span {
display: inline-block;
}
&.active {
background-color: #F2F7FF;
color: #0381FA;
}
&:hover {
background-color: #F5F7FA;
}
}
}
.picker-block {
position: relative;
&::after {
content:"";
display:block;
visibility:hidden;
clear:both;
}
.el-picker-panel.el-date-range-picker.el-popper {
left: 0 !important;
top: 205px !important;
}
.popper__arrow {
left: 30px !important;
}
}
}
</style>
......@@ -53,6 +53,23 @@
<el-option v-for="(item, index) in form.options" :key="index" :label="item.name" :value="item.value" />
</el-select>
</template>
<!-- 时间、自定义 -->
<template v-else-if="form.type==5">
<custom-time-select
v-model="form.value"
:placeholder="form.placeholder"
:dateFrom="form.dateFrom ? form.dateFrom : ''"
:dateTo="form.dateTo ? form.dateTo : ''"
@handle-search="changeSelect" />
</template>
<!-- 金额 -->
<template v-else-if="form.type==6">
<custom-money-select
:moneyList="form.moneyList"
v-model="form.value"
:placeholder="form.placeholder"
@handle-search="changeSelect" />
</template>
<!-- 自定义 -->
<template v-if="form.type==0">
<slot name="slot"></slot>
......@@ -74,6 +91,8 @@
</template>
<script>
import CustomTimeSelect from './CustomTimeSelect'
import CustomMoneySelect from './CustomMoneySelect'
export default {
name: "HeadForm",
props: {
......@@ -111,6 +130,10 @@ export default {
}
},
components: {
CustomTimeSelect,
CustomMoneySelect
},
methods: {
changeSelect(){
this.$emit('handle-search')
......
......@@ -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: true, slot: true},
{label: '最近一次合作时间', prop: 'issueTime', minWidth: '140', sortable: true}
{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: []},
......
......@@ -6,6 +6,7 @@
:query-params="queryParams"
:total="tableDataTotal"
:isExcel="true"
@handle-search="handleSearch"
/>
<tables
......@@ -17,13 +18,13 @@
:queryParams="queryParams"
@handle-current-change="handleCurrentChange"
>
<template slot="customName" slot-scope="scope">
<router-link to="" tag="a" class="a-link" v-if="scope.row.customId&&scope.row.customName">{{ scope.row.customName }}</router-link>
<div v-else>{{ scope.row.customName || '--' }}</div>
<template slot="name" slot-scope="scope">
<router-link to="" tag="a" class="a-link" v-if="scope.row.id&&scope.row.name" v-html="scope.row.name"></router-link>
<div v-else v-html="scope.row.name || '--'"></div>
</template>
<template slot="use" slot-scope="scope">
<router-link to="" tag="a" class="a-link" v-if="scope.row.useId&&scope.row.use">{{ scope.row.use }}</router-link>
<div v-else>{{ scope.row.use || '--' }}</div>
<template slot="source" slot-scope="scope">
<span class="a-link" v-if="scope.row.url&&scope.row.source" @click="handlePic(scope.row.url)" style="cursor: pointer;">{{ scope.row.source }}</span>
<div v-else>{{ scope.row.source || '--' }}</div>
</template>
</tables>
</div>
......@@ -31,7 +32,7 @@
<script>
import mixin from '../mixins/mixin'
import { getList } from '@/api/detail/party-a/dealings'
import {tenderPage} from '@/api/detail/party-a/dealings'
export default {
name: 'Bidrecords',
props: ['companyId'],
......@@ -47,13 +48,15 @@ export default {
pageSize: 10
},
forData: [
{label: '招标代理单位名称', prop: 'customName', minWidth: '320', slot: true},
{label: '本企业投标报价(万元)', prop: 'way', minWidth: '160'},
{label: '发布日期', prop: 'way', minWidth: '100'},
{label: '中标地区', prop: 'way', minWidth: '160'},
{label: '信息来源', prop: 'use', minWidth: '280', slot: true}
{label: '项目名称', prop: 'name', minWidth: '320', slot: true},
{label: '本企业投标报价(万元)', prop: 'tenderOffer', minWidth: '160'},
{label: '发布日期', prop: 'publishTime', minWidth: '100'},
{label: '项目地区', prop: 'province', minWidth: '160'},
{label: '信息来源', prop: 'source', minWidth: '280', slot: true}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称查询', options: []},
],
formData: [],
//列表
tableLoading:false,
tableData:[],
......@@ -66,22 +69,18 @@ export default {
this.handleQuery()
},
methods: {
handleQuery() {
async handleQuery(params) {
this.tableLoading = true
getList(this.queryParams).then((res) => {
let param = params?params:this.queryParams
let res = await tenderPage(param)
this.tableLoading = false
this.tableData = [
{
customId: '1',
customName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
count:4
if(res.code==200){
this.tableData = res.rows
}
]
this.tableDataTotal = 100
})
this.tableDataTotal = res.total
},
handlePic(url){
window.open(url, "_blank")
}
}
}
......
......@@ -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: true, slot: true},
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: true},
{label: '最近一次合作时间', prop: 'time', minWidth: '140', sortable: true}
{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"
......@@ -19,13 +20,13 @@
@handle-current-change="handleCurrentChange"
@sort-change="sortChange"
>
<template slot="customName" slot-scope="scope">
<router-link to="" tag="a" class="a-link" v-if="scope.row.customId&&scope.row.customName">{{ scope.row.customName }}</router-link>
<div v-else>{{ scope.row.customName || '--' }}</div>
<template slot="projectAllName" slot-scope="scope">
<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="use" slot-scope="scope">
<router-link to="" tag="a" class="a-link" v-if="scope.row.useId&&scope.row.use">{{ scope.row.use }}</router-link>
<div v-else>{{ scope.row.use || '--' }}</div>
<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>
<div v-else>{{ scope.row.companyName || '--' }}</div>
</template>
</tables>
</div>
......@@ -33,7 +34,7 @@
<script>
import mixin from '../mixins/mixin'
import { getOption, getList } from '@/api/detail/party-a/dealings'
import {historySendProvince, historySendPage} from '@/api/detail/party-a/dealings'
export default {
name: 'Hiscontract',
props: ['companyId'],
......@@ -45,25 +46,27 @@ export default {
return {
queryParams: {
cid: this.companyId,
sort: 3,
pageNum: 1,
pageSize: 10
},
defaultSort: {prop: 'winBidTime', order: 'descending'},
forData: [
{label: '项目名称', prop: 'customName', minWidth: '560', slot: true},
{label: '中标时间', prop: 'way', minWidth: '100', sortable: true},
{label: '中标企业', prop: 'use', minWidth: '320', slot: true},
{label: '中标金额(万元)', prop: 'way', minWidth: '140', sortable: true},
{label: '下浮率(%)', prop: 'way', minWidth: '120', sortable: true},
{label: '项目经理 / 负责人', prop: 'way', minWidth: '130'},
{label: '中标地区', prop: 'way', minWidth: '160'},
{label: '工期(天)', prop: 'way', minWidth: '110', sortable: true},
{label: '业绩类别', prop: 'way', minWidth: '110'}
{label: '项目名称', prop: 'projectAllName', minWidth: '560', slot: true},
{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', 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', descending: '9', ascending: '10'},
{label: '业绩类别', prop: 'boundType', minWidth: '110'}
],
formData: [
{ type: 1, fieldName: 'region', value: '', placeholder: '项目地区', options: []},
{ type: 1, fieldName: 'time', value: '', placeholder: '中标时间', options: []},
{ type: 1, fieldName: 'amount', value: '', placeholder: '中标金额', options: []},
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入关键词查询', options: []},
{ 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: [] }
],
//列表
tableLoading:false,
......@@ -78,45 +81,26 @@ export default {
this.handleQuery()
},
methods: {
handleOption(){
getOption().then((res) => {
this.setFormData('region', [
{ name: '类别1', value: '1' },
{ name: '类别2', value: '2' },
{ name: '类别3', value: '3' },
{ name: '类别4', value: '4' }
])
this.setFormData('time', [
{ name: '类别1', value: '1' },
{ name: '类别2', value: '2' },
{ name: '类别3', value: '3' },
{ name: '类别4', value: '4' }
])
this.setFormData('amount', [
{ name: '类别1', value: '1' },
{ name: '类别2', value: '2' },
{ name: '类别3', value: '3' },
{ name: '类别4', value: '4' }
])
async handleOption(){
let res = await historySendProvince({cid: this.companyId})
if(res.code==200){
let region = res.data.map(item => {
let it = {name:item.province+'('+item.count+')',value:item.provinceId}
return it
})
this.setFormData('provinceId', region)
}
},
handleQuery(params) {
async handleQuery(params) {
this.tableLoading = true
let param = params?params:this.queryParams
getList(param).then((res) => {
let res = await historySendPage(param)
this.tableLoading = false
this.tableData = [
{
customId: '1',
customName:'滨州医学院口腔医学大楼铝合金门窗供货及安装',
use:'城镇住宅用地',
type:'房地产业',
way:'挂牌出让',
count:4
if(res.code==200){
this.tableData = res.rows
}
]
this.tableDataTotal = 100
})
this.tableDataTotal = res.total
}
}
}
......
......@@ -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: true, slot: true},
{label: '合作总金额(万元)', prop: 'amount', minWidth: '150', sortable: true},
{label: '最近一次合作时间', prop: 'time', minWidth: '140', sortable: true}
{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: []},
......
......@@ -30,6 +30,11 @@ export default {
condtion[item.endTime] = item.value[1];
return
}
if(item.fieldName == 'money') {
condtion[item.startMoney] = item.value[0];
condtion[item.endMoney] = item.value[1];
return
}
condtion[item.fieldName] = item.value
}
})
......@@ -65,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()
}
}
}
......@@ -44,8 +44,8 @@ export default {
},
forData: [
{label: '项目名称', prop: 'porjectName', minWidth: '300', slot: true},
{label: '发布日期', prop: 'use', sortable: true, width: '120'},
{label: '预算金额(万元)', prop: 'type', sortable: true, width: '140'},
{label: '发布日期', prop: 'use', sortable: 'custom', width: '120'},
{label: '预算金额(万元)', prop: 'type', sortable: 'custom', width: '140'},
{label: '项目地区', prop: 'way', width: '120'},
{label: '项目类别', prop: 'state', width: '90'},
{label: '招采单位联系人', prop: 'money', width: '110'},
......
......@@ -44,11 +44,11 @@ export default {
},
forData: [
{label: '项目名称', prop: 'porjectName', minWidth: '300', slot: true},
{label: '项目总投资(亿元)', prop: 'use', sortable: true, width: '150'},
{label: '项目资本金(亿元)', prop: 'type', sortable: true, width: '150'},
{label: '项目收益倍数(倍)', prop: 'way', sortable: true, width: '150'},
{label: '专项债金额(亿元)', prop: 'state', sortable: true, width: '150'},
{label: '专项债用作资本金(亿元)', prop: 'money', sortable: true, width: '200'}
{label: '项目总投资(亿元)', prop: 'use', sortable: 'custom', width: '150'},
{label: '项目资本金(亿元)', prop: 'type', sortable: 'custom', width: '150'},
{label: '项目收益倍数(倍)', prop: 'way', sortable: 'custom', width: '150'},
{label: '专项债金额(亿元)', prop: 'state', sortable: 'custom', width: '150'},
{label: '专项债用作资本金(亿元)', prop: 'money', sortable: 'custom', width: '200'}
],
formData: [
{ type: 3, fieldName: 'keys', value: '', placeholder: '输入项目名称关键词查询', options: []},
......
......@@ -48,8 +48,8 @@ export default {
{label: '行业分类', prop: 'type', width: '100'},
{label: '供地方式', prop: 'way', width: '100'},
{label: '土地坐落', prop: 'state', width: '130'},
{label: '成交金额(万元)', prop: 'money', sortable: true, width: '140'},
{label: '总面积(㎡)', prop: 'scale', sortable: true, width: '130'},
{label: '成交金额(万元)', prop: 'money', sortable: 'custom', width: '140'},
{label: '总面积(㎡)', prop: 'scale', sortable: 'custom', width: '130'},
{label: '批准单位', prop: 'unit', width: '130'},
{label: '签订日期', prop: 'date', width: '130'}
],
......
......@@ -44,10 +44,10 @@ export default {
},
forData: [
{label: '项目名称', prop: 'porjectName', minWidth: '300', slot: true},
{label: '成交金额(万元)', prop: 'use', sortable: true, width: '150'},
{label: '成交金额(万元)', prop: 'use', sortable: 'custom', width: '150'},
{label: '项目类别', prop: 'type', width: '100'},
{label: '计划开工日期', prop: 'way', sortable: true, width: '130'},
{label: '计划完工日期', prop: 'state', sortable: true, width: '130'},
{label: '计划开工日期', prop: 'way', sortable: 'custom', width: '130'},
{label: '计划完工日期', prop: 'state', sortable: 'custom', width: '130'},
{label: '审批结果', prop: 'money', width: '100'},
{label: '是否为民间推介项目', prop: 'scale', width: '150'}
],
......
......@@ -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;
......
<template>
<div>
<div class="content">
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="keyword" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">参投单位</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="jskBidQueryDto.companyName" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
<div class="select-popper" >
<span :class="{color_text:jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length,}">
行政区划{{jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length? jskBidQueryDto.province.length + jskBidQueryDto.city.length +jskBidQueryDto.county.length +"项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-cascader
ref="address"
class="cascader-region"
v-model="addressType"
:options="addressList"
:props="props"
@change="domicileChange"
collapse-tags
clearable
></el-cascader>
</div>
<el-dropdown @command="punishDatehandleCommand" trigger="click" class="el-dropdown-land" ref="punishDateShowPopper" :hide-on-click="false" >
<span class="el-dropdown-link" :class="punishDateValue ? 'color_text' : ''" >
发布时间{{ punishDateValue ? " 1项" : ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in punishDateOptions" class="el-dropdown-land" :class=" punishDateValue && punishDateValue == item.value ? 'color_text': '' " :key="i" :command="item.value">
<div @mouseenter="hidePoper">{{ item.label }}</div>
</el-dropdown-item>
<el-dropdown-item command="自定义" style="padding: 0; text-indent: 20px">
<div @mouseenter="mouseenter">
<span :class="punishDateValue == '自定义' ? 'color_text' : ''">
自定义<i class="el-icon-arrow-right"></i>
</span>
<el-date-picker
v-if="punishDateShowPopper"
@change="changepunishDate"
class="land_date_picker"
v-model="punishDate"
ref="datePicker"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</div>
</el-dropdown>
<el-dropdown @command="tenderDatehandleCommand" trigger="click" ref="tenderDateShowPopper" :hide-on-click="false" >
<span class="el-dropdown-link" :class="tenderDateValue ? 'color_text' : ''" >开标时间{{ tenderDateValue ? " 1项" : ""}}<i class="el-icon-caret-bottom"></i>
</span>
<div>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in punishDateOptions" :class=" tenderDateValue && tenderDateValue == item.value ? 'color_text' : ''" :key="i" :command="item.value">
<div @mouseenter="hidePoper('bid')">{{ item.label }}</div>
</el-dropdown-item>
<el-dropdown-item command="自定义" style="padding: 0; text-indent: 20px">
<div @mouseenter="mouseenter('bid')">
<span :class="tenderDateValue == '自定义' ? 'color_text' : ''">自定义<i class="el-icon-arrow-right"></i></span>
<el-date-picker
v-if="tenderDateShowPopper"
@change="changepunishDate('bid')"
class="land_date_picker"
v-model="tenderDate"
ref="tenderDatePicker"
value-format="yyyy-MM-dd"
type="daterange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
>
</el-date-picker>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</div>
</el-dropdown>
</div>
</div>
<div class="content_item content_item_padding0">
<div class="geduan">
</div>
</div>
<div class="content_item content_item_padding0">
<div class="search-new">
<span @click="search()">查询</span>
<span @click="reset">重置</span>
</div>
</div>
</div>
<div class="bottomlist">
<div class="bottomlist-title">
<div></div>
<div class="title-right">
<p>共有{{total}}</p>
<p>
<img src="@/assets/images/EXCEL.png" alt="">
<span>导出EXCEL</span>
</p>
</div>
</div>
<ul class="bottomlist-content">
<li class="bottomlist-list" >
<p class="list-titel">
<router-link :to="'/radar/BidRecord/details/'+ 1" tag="a" class="list-titel-a" >绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)</router-link>
<!-- <div v-else-if="item.projectName" v-html="item.projectName"></div> -->
</p>
<div class="content-label">
<span class="list-label">市政工程</span>
</div>
<div class="list-content">
<p class="list-content-text">
<span>项目业主:</span>
<span class="blue">芜湖旭日机械制造有限公司</span>
</p>
<p class="list-content-text">
<span>审批部门:</span>
<span>芜湖旭日</span>
</p>
<p class="list-content-text">
<span>审批结果:</span>
<span>12345.62万</span>
</p>
<p class="list-content-text">
<span>审批结果:</span>
<span>2014-05-12</span>
</p>
<p class="list-content-text">
<span>总投资:</span>
<span>62654</span>
</p>
<p class="list-content-text">
<span>计划开工日期:</span>
<span>62654</span>
</p>
<p class="list-content-text">
<span>计划完工日期:</span>
<span>626</span>
</p>
<p class="list-content-text">
<span>是否为向民间推介项目:</span>
<span>62654</span>
</p>
</div>
</li>
</ul>
<div class="pagination clearfix" v-show="total>0">
<el-pagination
background
:page-size="pageSize"
:current-page="page"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import jsk_data from '../../../../../public/jsk.json';
export default {
name: 'SearchEnterprise',
data() {
return {
addressList: [],
addressType: [],
props: {
multiple: true,
expandTrigger: "hover",
value: "id",
},
keyword:"",
keywordNot:"",
fieldshow: false,
fieldText: '默认排序',
field: '', //查询结果排序方式
fieldOptions: [
{
key: "",
value: "默认排序",
status: true,
},
{
key: "publishDate",
value: "发布日期从晚到早",
status: false,
},
],
page: 1,
limit: 20,
punishDateOptions: [
{
label: "不限",
value: "",
},
{
label: "今天",
value: "今天",
},
{
label: "近3日",
value: "近3日",
},
{
label: "近7日",
value: "近7日",
},
{
label: "近1个月",
value: "近1个月",
},
{
label: "近3个月",
value: "近3个月",
},
{
label: "近半年",
value: "近半年",
},
{
label: "近1年",
value: "近1年",
},
],
punishDateValue: "",
jskBidQueryDto: {
hasMoney:"",
province: [],
city: [],
county: []
},
domicile: [],
provinceText:[],
provinceList:[],
punishDate: "",
punishDateShowPopper: false,
tenderDateValue: "",
tenderDate: "",
tenderDateShowPopper: false,
pageFlag: true,
conditionsArr: [],
tableData:[],
total:6000,
page:1,
pageSize:20
};
},
computed: {
checkJskBidQueryDto() {
let arr = [];
let flag = false;
let data = {};
if(this.keyword){
data = {
title: "项目包含:",
keyid: "keyword",
value: this.keyword,
key: "keyword"
}
flag = true;
arr.push(data)
}
if(this.keywordNot){
data = {
title: "项目排除:",
keyid: "keywordNot",
value: this.keywordNot,
key: "keywordNot"
}
flag = true;
arr.push(data)
}
if(this.jskBidQueryDto.companyName){
data = {
title: "参投单位:",
keyid: "companyName",
value: this.jskBidQueryDto.companyName,
key: "companyName"
}
flag = true;
arr.push(data)
}
if(this.jskBidQueryDto.startBidMoney){
data = {
title: "最低金额:",
keyid: "startBidMoney",
value: this.jskBidQueryDto.startBidMoney,
key: "startBidMoney"
}
flag = true;
arr.push(data)
}
if(this.jskBidQueryDto.endBidMoney){
data = {
title: "最高金额:",
keyid: "endBidMoney",
value: this.jskBidQueryDto.endBidMoney,
key: "endBidMoney"
}
flag = true;
arr.push(data)
}
if(this.jskBidQueryDto.hasMoney){
data = {
title: "包含投标报价未公示",
keyid: "hasMoney",
value: this.jskBidQueryDto.hasMoney,
key: "hasMoney"
}
flag = true;
arr.push(data)
}
if (this.domicile.length > 0) {
data = {
title: "行政区划:",
keyid: "domicile",
value: this.domicile.join(","),
key: "domicile"
}
flag = true;
arr.push(data)
}
if(this.punishDateValue=="自定义"){
data = {
title: "发布时间:",
keyid: "punishDate",
value: this.jskBidQueryDto.startPunishDate +"~" +this.jskBidQueryDto.endPunishDate,
key: "punishDate"
}
flag = true;
arr.push(data)
}
if(this.punishDateValue&&this.punishDateValue!="自定义"){
data = {
title: "发布时间:",
keyid: "punishDate",
value: this.punishDateValue,
key: "punishDate"
}
flag = true;
arr.push(data)
}
if(this.tenderDateValue=="自定义"){
data = {
title: "开标时间:",
keyid: "tenderDate",
value: this.jskBidQueryDto.startTenderTime +"~" +this.jskBidQueryDto.endTenderTime,
key: "tenderDate"
}
flag = true;
arr.push(data)
}
if(this.tenderDateValue&&this.tenderDateValue!="自定义"){
data = {
title: "开标时间:",
keyid: "tenderDate",
value: this.tenderDateValue,
key: "tenderDate"
}
flag = true;
arr.push(data)
}
this.conditionsArr = arr
return flag;
},
},
mounted() {
if (this.$route.query.keyword) {
this.keyword = this.$route.query.keyword;
}
this.addressListfn();
},
methods: {
// 关键词推荐
cliclikeywoder() {
this.$refs.keyword.show();
},
keywordClick(val) {
this.keyword = val
},
refresh(value) {
if(value) {
this.$router.go(0)
}
},
search(page, limit,exportFlag) {
if (!page) {
this.page = 1;
}
if (!limit) {
this.limit = 20;
}
if (!page && !limit) {
this.reloadPage();
}
var data = JSON.parse(JSON.stringify(this.jskBidQueryDto));
data.province = data.province.join(",");
data.city = data.city.join(",");
data.county = data.county.join(",");
let params = {
page: {
page: this.page,
limit: this.limit,
field: this.field,
},
jskBidQueryDto: data,
};
if(this.keyword){
params.keyword = this.keyword
}else{
delete params.keyword
}
if(this.keywordNot){
params.keywordNot = this.keywordNot
}else{
delete params.keywordNot
}
this.$emit("search",params)
},
//关闭支付弹窗
resolve(value) {
if (value) {
this.$router.go(0)
}
},
provinceChange(arr){
this.provinceText = [];
if(arr.length>0){
arr.map(item=>{
this.provinceText.push(item.label);
})
}
},
changeMoney(text) {
if (
this.jskBidQueryDto.startBidMoney &&
this.jskBidQueryDto.endBidMoney &&
Number(this.jskBidQueryDto.startBidMoney) >
Number(this.jskBidQueryDto.endBidMoney)
) {
this.$message.warning("最低金额不能大于最高金额!");
text == "start" ?
(this.jskBidQueryDto.startBidMoney = "") :
(this.jskBidQueryDto.endBidMoney = "");
}
},
reloadPage() {
this.pageFlag = false;
this.$nextTick(() => {
this.pageFlag = true;
});
},
handleCurrentChange(page) {
this.page = page;
this.search(page, this.limit);
},
handleSizeChange(limit) {
this.limit = limit;
this.search(this.page, limit);
},
deleteDomicile() {
this.$refs.address.handleClear();
},
domicileChange() {
let arr = this.$refs.address.getCheckedNodes();
let province = [],
city = [],
county = [];
this.domicile = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && city.push(arr[i].value);
arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && county.push(arr[i].value);
!arr[i].hasChildren && this.domicile.push(arr[i].label);
}
} else {
province.push(arr[i].value);
this.domicile.push(arr[i].label);
}
}
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
obj.province = province;
obj.city = city;
obj.county = county;
this.jskBidQueryDto = obj;
},
punishDatehandleCommand(command) {
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
if (command && command != "自定义") {
this.punishDateValue = command;
this.$refs.punishDateShowPopper.hide();
const datetime = new Date();
var startTime, endTime, Year, Month, Day;
Year = datetime.getFullYear();
Month = datetime.getMonth() + 1;
Day = datetime.getDate();
switch (command) {
case "今天":
startTime = Year + "-" + Month +"-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近3日":
endTime = Year + "-" + Month + "-" + Day;
if (Day > 3) {
startTime = Year + "-" + Month + "-" +(Day-3);
} else {
let newTime = datetime.getTime()-3*24*60*60*1000
Year = new Date(newTime).getFullYear();
Month = new Date(newTime).getMonth() + 1;
Day = new Date(newTime).getDate();
startTime = Year + "-" + Month +"-" + Day;
}
break;
case "近7日":
endTime = Year + "-" + Month + "-" + Day;
if (Day > 7) {
startTime = Year + "-" + Month + "-" +(Day-7);
} else {
let newTime = datetime.getTime()-7*24*60*60*1000
Year = new Date(newTime).getFullYear();
Month = new Date(newTime).getMonth() + 1;
Day = new Date(newTime).getDate();
startTime = Year + "-" + Month +"-" + Day;
}
break;
case "近1个月":
endTime = Year + "-" + Month + "-" + Day;
if (Month > 1) {
startTime = Year + "-" + (Month - 1) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 1) + "-1";
}
break;
case "近3个月":
endTime = Year + "-" + Month + "-" + Day;
if (Month > 3) {
startTime = Year + "-" + (Month - 3) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 3) + "-1";
}
break;
case "近半年":
endTime = Year + "-" + Month + "-" + Day;
if (Month > 6) {
startTime = Year + "-" + (Month - 6) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 6) + "-1";
}
break;
case "近1年":
startTime = Year - 1 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "自定义":
if (!this.punishDate) {
this.punishDateValue = "";
}
break;
}
if(startTime){
var start=startTime.split('-');
startTime=start.map((item)=>{
if(item.length==1){
return '0'+item
}else{
return item
}
})
startTime=startTime.join('-')
}
if(endTime){
var end=endTime.split('-');
endTime=end.map((item)=>{
if(item.length==1){
return '0'+item
}else{
return item
}
})
endTime=endTime.join('-')
}
obj.startPunishDate = startTime;
obj.endPunishDate = endTime;
} else if (command == "自定义") {
this.$refs.datePicker.pickerVisible = true;
} else {
this.$refs.punishDateShowPopper.hide();
this.punishDateValue = "";
this.punishDate = "";
obj.startPunishDate = "";
obj.endPunishDate = "";
}
this.jskBidQueryDto = obj;
},
tenderDatehandleCommand(command) {
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
if (command && command != "自定义") {
this.tenderDateValue = command;
this.$refs.tenderDateShowPopper.hide();
const datetime = new Date();
var startTime, endTime, Year, Month, Day;
Year = datetime.getFullYear();
Month = datetime.getMonth() + 1;
Day = datetime.getDate();
switch (command) {
case "今天":
startTime = Year + "-" + Month +"-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "近3日":
endTime = Year + "-" + Month + "-" + Day;
if (Day > 3) {
startTime = Year + "-" + Month + "-" +(Day-3);
} else {
let newTime = datetime.getTime()-3*24*60*60*1000
Year = new Date(newTime).getFullYear();
Month = new Date(newTime).getMonth() + 1;
Day = new Date(newTime).getDate();
startTime = Year + "-" + Month +"-" + Day;
}
break;
case "近7日":
endTime = Year + "-" + Month + "-" + Day;
if (Day > 7) {
startTime = Year + "-" + Month + "-" +(Day-7);
} else {
let newTime = datetime.getTime()-7*24*60*60*1000
Year = new Date(newTime).getFullYear();
Month = new Date(newTime).getMonth() + 1;
Day = new Date(newTime).getDate();
startTime = Year + "-" + Month +"-" + Day;
}
break;
case "近1个月":
endTime = Year + "-" + Month + "-" + Day;
if (Month > 1) {
startTime = Year + "-" + (Month - 1) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 1) + "-1";
}
break;
case "近3个月":
endTime = Year + "-" + Month + "-" + Day;
if (Month > 3) {
startTime = Year + "-" + (Month - 3) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 3) + "-1";
}
break;
case "近半年":
endTime = Year + "-" + Month + "-" + Day;
if (Month > 6) {
startTime = Year + "-" + (Month - 6) + "-1";
} else {
startTime = Year - 1 + "-" + (12 + Month - 6) + "-1";
}
break;
case "近1年":
startTime = Year - 1 + "-" + Month + "-" + Day;
endTime = Year + "-" + Month + "-" + Day;
break;
case "自定义":
if (!this.tenderDate) {
this.tenderDateValue = "";
}
break;
}
if(startTime){
var start=startTime.split('-');
startTime=start.map((item)=>{
if(item.length==1){
return '0'+item
}else{
return item
}
})
startTime=startTime.join('-')
}
if(endTime){
var end=endTime.split('-');
endTime=end.map((item)=>{
if(item.length==1){
return '0'+item
}else{
return item
}
})
endTime=endTime.join('-')
}
obj.startTenderTime = startTime;
obj.endTenderTime = endTime;
} else if (command == "自定义") {
this.$refs.tenderDatePicker.pickerVisible = true;
} else {
this.$refs.tenderDateShowPopper.hide();
this.tenderDateValue = "";
this.tenderDate = "";
obj.startTenderTime = "";
obj.endTenderTime = "";
}
this.jskBidQueryDto = obj;
},
changepunishDate(type) {
if(type=='bid'&&this.tenderDate){
this.tenderDateValue = "自定义";
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
obj.startTenderTime = this.tenderDate[0];
obj.endTenderTime = this.tenderDate[1];
this.jskBidQueryDto = obj;
}else if(this.punishDate) {
this.punishDateValue = "自定义";
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
obj.startPunishDate = this.punishDate[0];
obj.endPunishDate = this.punishDate[1];
this.jskBidQueryDto = obj;
}
},
addressListfn() {
var str = [];
for (let x = 0; x < 3; x++) {
for (let i = 0; i < jsk_data.length; i++) {
if (jsk_data[i].regionLevel == x + 1 && x + 1 == 1) {
str.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
children:jsk_data[i].id==900000?undefined:[],
});
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 2&&str) {
for (let j = 0; j < str.length; j++) {
if (str[j].id == jsk_data[i].parentId) {
str[j].children.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
children: [],
});
}
}
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 3) {
for (let j = 0; j < str.length; j++) {
if(str[j].children){
for (let k = 0; k < str[j].children.length; k++) {
if (str[j].children[k].id == jsk_data[i].parentId) {
str[j].children[k].children.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
});
}
}
}
}
}
}
}
this.addressList = str;
},
hidePoper(type) {
if(type=='bid'&&this.$refs.tenderDatePicker){
this.$refs.tenderDatePicker.pickerVisible = false;
}else if(this.$refs.datePicker){
this.$refs.datePicker.pickerVisible = false;
}
},
mouseenter(type) {
if(type=='bid'){
this.tenderDateShowPopper = true;
if(this.tenderDateValue=="自定义"){
this.$nextTick(() => {
this.$refs.tenderDatePicker.pickerVisible = true;
});
}
}else{
this.punishDateShowPopper = true;
if(this.punishDateValue=="自定义"){
this.$nextTick(() => {
this.$refs.datePicker.pickerVisible = true;
});
}
}
},
clearpunishDate(type) {
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
if(type=='bid'){
this.tenderDate = "";
this.tenderDateValue = "";
obj.startTenderTime = "";
obj.endTenderTime = "";
}else{
this.punishDate = "";
this.punishDateValue = "";
obj.startPunishDate = "";
obj.endPunishDate = "";
}
this.jskBidQueryDto = obj;
},
reset() {
Object.assign(this.$data, this.$options.data.call(this)); //重置data
this.init();
this.$emit("reset");
},
init(){
this.search();
this.addressListfn();
},
handsequencingList(index) {
this.fieldshow = false;
this.field = this.fieldOptions[index].key;
for (let i = 0; i < this.fieldOptions.length; i++) {
this.fieldOptions[i].status = false;
}
this.fieldText = this.fieldOptions[index].value;
this.fieldOptions[index].status = true;
this.search();
},
},
};
</script>
<style lang="scss" scoped>
.content{
padding: 0px 16px;
border-radius: 4px 4px 4px 4px;
background: #FFFFFF;
.content_item{
padding-top: 12px;
display: flex;
align-items: center;
.label{
width: 84px;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
.content_right{
.ename_input{
width: 640px;
margin-right: 20px;
}
.land_ipt_470 {
width: 640px;
}
}
.item_ckquery_list {
display: flex;
}
.item_ckquery_list .el-input__icon {
position: relative;
top: 1px;
}
.ckquery_list_right {
width: 640px;
}
.register_count_ipt{
margin-left: 0px;
}
.register_count_ipt .el-input__inner{
width: 174px;
}
::v-deep .el-input-group__prepend{
padding: 0 8px;
}
.content-projecttype{
display: flex;
align-items: center;
justify-content: center;
.projecttype{
font-weight: 400;
color: #232323;
padding: 1px 5px;
margin-right: 4px;
cursor: pointer;
border-radius: 3px 3px 3px 3px;
font-size: 14px;
}
.projecttype:first-child{
padding-left: 0px;
}
.projecttype:hover{
background: #F3F4F5;
padding: 1px 5px;
}
.activetype{
background: #F3F4F5;
padding: 1px 5px !important;
}
}
}
.content_item_padding0{
padding: 0;
}
}
.bottomlist{
width: 100%;
background-color: #FFFFFF;
border-radius: 4px 4px 4px 4px;
.bottomlist-title{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.title-right{
display: flex;
align-items: center;
p:first-child{
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child{
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
img{
width: 18px;
height: 18px;
}
}
}
.bottomlist-content{
padding-bottom: 0px;
}
.bottomlist-list{
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px;
.list-titel{
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 19px;
.list-titel-a{
text-decoration: none;
color:#3D3D3D;
}
a:hover, a:visited, a:link, a:active{
color:#3D3D3D;
}
}
.content-label{
margin-top: 12px;
.list-label{
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
}
}
.list-content{
margin-top: 8px;
display: flex;
justify-content: start;
align-items: center;
.list-content-text{
margin-top: 7px;
display: flex;
justify-content: start;
align-items: center;
margin-right: 27px;
font-size: 14px;
span:first-child{
font-weight: 400;
color: rgba(35,35,35,0.4);
line-height: 15px
}
span:last-child{
font-weight: 400;
color: rgba(35,35,35,0.8);
line-height: 15px
}
.blue{
color: #0081FF !important;
cursor: pointer;
}
}
}
.list-addree{
width: auto;
background: #F3F4F5;
display: inline-flex;
margin-top: 7px;
.list-content-text{
margin-top: 0px;
span{
line-height: 30px!important;
}
}
img{
width: 14px;
margin: 0 8px;
}
}
}
.bottomlist-list:hover{
background: #F6F9FC;
cursor: pointer;
}
.pagination{
padding: 14px ;
.el-pagination{
float: right;
}
}
}
</style>
<style lang="scss" scoped>
#bidRecord_wrap {
padding: 0 16px;
font-size: 14px;
.land_content_wrap {
display: flex;
line-height: 34px;
.land_content_wrap_label {
color: #666666;
margin-right: 4px;
}
}
.data_list {
width: 1184px;
margin: 0 auto;
.data_list_head {
height: 50px;
line-height: 50px;
color: #666666;
.data_list_count {
color: #ff2a00;
font-weight: bold;
}
}
.data_list_item {
border-top: 1px solid #efefef;
padding: 24px 16px;
padding-left: 16px;
margin-left: -16px;
&:hover {
background: #f5faff;
}
.data_list_h1 {
width: 1168px;
font-size: 18px;
font-weight: bold;
color: #333333;
line-height: 24px;
margin-bottom: 10px;
text-decoration:none;
word-break: break-all;
display: inline-block;
}
.data_list_h1_1 {
cursor: pointer;
}
.label_box {
padding-bottom: 6px;
display: flex;
.label_span {
padding: 0 8px;
display: inline-block;
height: 22px;
line-height: 22px;
border-radius: 2px 2px 2px 2px;
margin-right: 8px;
font-size: 12px;
}
.label_span1 {
background: #e4f3fd;
color: #0081ff;
}
.label_span2 {
background: #f3f3ff;
color: #8491e8;
}
.label_span3 {
background: #e3f6f8;
color: #44bcc4;
}
.label_span4 {
background: #e3f6f8;
color: #44bcc4;
}
}
.label_wrap {
font-size: 14px;
margin-top: 10px;
line-height: 18px;
display: flex;
.label_item {
color: #999999;
}
.label_item1{
position: relative;
top: -3px;
}
.company {
color: #0081ff;
cursor: pointer;
margin-right: 20px;
}
.label_con {
color: #333333;
margin-right: 20px;
max-width: 900px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.label_con1 {
width: 1042px;
display: inline-block;
margin: 0;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
}
}
}
.content_li {
padding: 16px 0;
display: flex;
align-items: center;
position: relative;
.content_item {
.include-keywords {
display: flex;
align-items: center;
position: relative;
.lefttltel {
display: inline-block;
background: #f5f5f5;
color: #333;
border: 1px solid #efefef;
border-right: none;
opacity: 1;
width: 71px;
height: 40px;
text-align: center;
line-height: 40px;
}
.el-input {
line-height: 40px;
border-radius: 0;
::v-deep .el-input__inner {
width: 100%;
height: 40px;
line-height: 40px;
border-radius: 0;
}
}
.commonly-input {
::v-deep .el-input__inner {
padding-right: 100px;
}
}
.commonly {
position: absolute;
top: 10px;
right: 16px;
font-size: 14px;
font-weight: 400;
color: #0081ff;
cursor: pointer;
}
}
}
}
}
</style>
<template>
<div class="app-container">
<iframe ref="companyIframe" marginwidth="0" marginheight="0" frameborder="0" scrolling="no" width="100%" :height="iframeHight" src="https://pre.jiansheku.com/enterprise/56546856314e567a69/" />
<div class="content">
<div class="combined-title">
<div class="title-right">
<div class="tab">
<div style="position:relative" v-for="(itme,i) in personnelList"
:class="itme.status==true?'active':'' " :key='i' @click="personnelListbtn(i)">
<p>{{itme.value}}</p>
</div>
</template>
</div>
<p class="solid"></p>
</div>
</div>
</div>
<!-- 企业专项债 -->
<!-- <debtProject v-if="personnelHerf=='debtProject'" /> -->
<!-- 查企业 -->
<SearchEnterprise v-if="personnelHerf=='SearchEnterprise'" />
</div>
</template>
<script>
import SearchEnterprise from "./components/SearchEnterprise/index.vue";
export default {
name: 'EnterpriseData',
components: {
},
import "@/assets/styles/public.css";
export default {
name: 'enterpriseData',
components: { SearchEnterprise },
data() {
return {
iframeHight: null,
iframeWin: {}
}
// tablist
personnelList: [{
key: '1',
status: false,
value: '查业主单位',
},
computed: {
{
key: 'SearchEnterprise',
status: true,
value: '查建筑企业',
},
created() {
},
mounted() {
this.getInframeHight()
],
personnelHerf:'SearchEnterprise'
}
},
created() {},
methods: {
getInframeHight() {
const _this = this
window.addEventListener('message', function(e) {
const data = e.data
if (data && typeof data === 'object' && data.height) {
_this.iframeHight = data.height
personnelListbtn(index) {
for (var i = 0; i < this.personnelList.length; i++) {
this.personnelList[i].status = false;
}
})
this.personnelList[index].status = true;
this.personnelHerf=this.personnelList[index].key;
},
}
}
}
</script>
<style lang="scss" scoped>
.app-container {
margin: 12px 24px;
padding: 0;
}
.content{
padding: 0px 16px;
background: #FFFFFF;
}
.app-container .combined-title {
display: flex;
padding-top: 16px;
align-items: center
}
.app-container .combined-title .title-icon {
display: inline-block;
width: 6px;
height: 26px;
background: #0081FF;
border-radius: 0px 0px 0px 0px;
opacity: 1;
margin-right: 18px;
}
.app-container .combined-title .title-right {
display: flex;
width: 100%;
position: relative;
height: 40px;
}
.app-container .combined-title .title-right .title-text {
font-size: 16px;
font-weight: bold;
color: #333333;
line-height: 40px;
}
.app-container .combined-title .title-right .title-add {
color: #0081FF;
cursor: pointer;
position: absolute;
right: 0;
}
.app-container .combined-title .title-right .title-addyj {
top: 5px;
}
.app-container .combined-title .title-right .title-add .add-img {
position: relative;
top: -1px;
margin-right: 6px;
}
.app-container .combined-title .title-right .solid {
width: 100%;
height: 1px;
background-color: #EEEEEE;
position: absolute;
bottom: -1px;
left: 0;
z-index: 1;
}
.tab {
display: flex;
z-index: 2;
}
.tab_p_32 {
padding-right: 32px;
padding-left: 32px;
}
.tab div {
cursor: pointer;
color: #666666;
font-size: 16px;
text-align: center;
margin-right: 32px;
line-height: 40px;
}
.tab div p {
display: inline-block;
padding: 0px;
}
.tab div .logo {
color: #fff;
font-weight: 400;
font-size: 10px;
position: absolute;
top: -6px;
right: -24px;
display: inline-block;
line-height: 14px;
padding: 1px 2px;
text-align: center;
background: #3663DE;
border-radius: 2px 2px 2px 2px;
}
.tab div .triangle {
display: inline-block;
width: 0px;
height: 0px;
border-left: 3px solid transparent;
border-right: 3px solid transparent;
border-top: 4px solid #3663DE;
position: absolute;
top: 9.5px;
right: -3px;
}
.tab .active {
color: #0081FF;
}
.tab .active .triangle {
border-top: 4px solid #0081FF;
}
.tab .active .logo {
background: #0081FF;
}
.tab .active p {
border-bottom: 2px solid #0081FF;
font-weight: bold;
}
</style>
\ No newline at end of file
......@@ -251,8 +251,9 @@
param.id = this.id
editXMNR(param).then(result=>{
if(result.code == 200)
this.$message.success('修改成功')
this.$message.success('修改成功!')
else{
this.$message.error(res.msg)
this.getJSNR()
}
})
......
......@@ -61,7 +61,7 @@
</el-table>
<div class="bottems">
<div class="btn btn_primary h28" @click="opennew"><div class="img img1"></div>新增联系人</div>
<el-pagination
<el-pagination v-if="total>searchParam.pageSize"
background
:page-size="searchParam.pageSize"
:current-page="searchParam.pageNum"
......
......@@ -4,18 +4,20 @@
<el-card class="box-card noborder">
<div class="cardtitles">相关企业</div>
<div class="searchbtns">
<el-select class="select" placeholder="企业角色">
<option label="111" value="222"></option>
<el-select class="select" placeholder="企业类型">
<el-select placeholder="请选择" v-model="searchParam.companyType">
<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">
<el-table
:data="tableData"
:data="tableData.rows"
style="width: 100%"
>
<template slot="empty">
......@@ -27,26 +29,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>
......@@ -57,21 +59,21 @@
width="">
<template slot-scope="scope">
<div class="hoverbtn">
<div class="sc">删除</div>
<div class="sc" @click="delQY(scope.row.id)">删除</div>
</div>
</template>
</el-table-column>
</el-table>
<div class="tables">
<div class="tables" v-if="tableData.total > searchParam.pageSize">
<div class="bottems">
<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>
......@@ -85,14 +87,12 @@
<span>新建相关企业</span>
</div>
<div class="types">
<div :class="{'on':types==1}" @click="types=1"><i></i>业主单位</div>
<div :class="{'on':types==2}" @click="types=2"><i></i>合作伙伴</div>
<div :class="{'on':types==3}" @click="types=3"><i></i>竞争对手</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>
......@@ -102,42 +102,26 @@
width="464px">
<div class="poptitle">
<img src="@/assets/images/economies/icon.png">
<span>新建相关企业-{{types==1?"业主单位":""}}{{types==2?"合作伙伴":""}}{{types==3?"竞争对手":""}}</span>
<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 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 == 1" label="对接深度:" class="row">
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
<el-form-item :label="typename" class="row">
<el-input type="text" v-model="queryParam.depth" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item v-if="types == 2" label="合作阶段:" class="row">
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</el-form-item>
<el-form-item v-if="types == 3" label="竞争力度:" prop="projectName" class="row">
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
</el-select>
</el-form-item>
<el-form-item label="企业角色:" prop="projectName" class="row">
<el-select placeholder="请选择">
<el-option label="cccc" value="11"></el-option>
<el-option label="cccc" value="121"></el-option>
<el-form-item label="企业角色:" class="row">
<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>
......@@ -147,8 +131,10 @@
<script>
import "@/assets/styles/project.scss"
import {getXGQY,addXGQY} from '@/api/project/project'
import {getDictType} from '@/api/main'
export default {
name: 'zlwd',
name: 'xgqy',
data(){
return{
types:1,
......@@ -177,24 +163,96 @@
address: '上海市普陀区金沙江路 1516 弄'
}
],
typelist:['对接深度:','合作阶段:','竞争力度:'],
typename:"",
rules:{
projectName:[{ required: true, message: '请输入非空格字符!', trigger: 'blur' },],
ownerCompany:[{ 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:'',
},
}
},
created(){
//企业类型
getDictType('company_type').then(result=>{
this.companytype = result.code == 200 ? result.data:[]
this.types = this.companytype[0].dictValue
})
//企业角色
getDictType('company_role').then(result=>{
this.companyrole = result.code == 200 ? result.data:[]
})
},
methods:{
delQY(id){
},
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=>{
this.tableData = result.data
})
},
//翻页
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:'',
}
},
}
}
......
......@@ -9,13 +9,13 @@
<span>项目级别 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 1">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="xmsldata.projectLevel"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({projectLevel:xmsldata.projectLevel})">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 1">{{datas.projectLevel||'待添加'}}</span>
<span :class="{txt:!xmsldata.projectLevel}" v-else @click="nowedit = 1">{{xmsldata.projectLevel||'待添加'}}</span>
</div>
</div>
<div class="con i">
......@@ -26,7 +26,7 @@
{{xmjd}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmjd" class="select-multiple" placeholder="请选择">
<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>
......@@ -36,7 +36,7 @@
<div class="con i" style="width: 100%;">
<span style="float: left;margin-top: 2px">项目标签 :</span>
<div class="flex tipinput">
<div class="tips" v-for="(item,index) in tipslit">{{item}}<img @click="deltip(index)" src="@/assets/images/project/del.png"></div>
<div class="tips" v-for="(item,index) in tipslit">{{item}}<img @click="deltip(item)" src="@/assets/images/project/del.png"></div>
<el-input placeholder="待添加" v-model="tipsvalue"></el-input>
<div class="addbtn" @click="addtips"></div>
</div>
......@@ -52,26 +52,26 @@
<span>主管单位 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 2">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="xmsldata.supervisorUnit"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({supervisorUnit:xmsldata.supervisorUnit})">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 2">待添加</span>
<span :class="{txt:!xmsldata.supervisorUnit}" v-else @click="nowedit = 2">{{xmsldata.supervisorUnit||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>建设单位 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 3">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="xmsldata.constructionUnit"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({constructionUnit:xmsldata.constructionUnit})">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 3">待添加</span>
<span :class="{txt:!xmsldata.constructionUnit}" v-else @click="nowedit = 3">{{xmsldata.constructionUnit||'待添加'}}</span>
</div>
</div>
</div>
......@@ -80,26 +80,26 @@
<span>主管单位负责人 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 4">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="xmsldata.supervisorPrincipal"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({supervisorPrincipal:xmsldata.supervisorPrincipal})">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 4">待添加</span>
<span :class="{txt:!xmsldata.supervisorPrincipal}" v-else @click="nowedit = 4">{{xmsldata.supervisorPrincipal||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>建设单位负责人 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 5">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="xmsldata.constructionPrincipal"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({constructionPrincipal:xmsldata.constructionPrincipal})">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 5">待添加</span>
<span :class="{txt:!xmsldata.constructionPrincipal}" v-else @click="nowedit = 5">{{xmsldata.constructionPrincipal||'待添加'}}</span>
</div>
</div>
</div>
......@@ -108,26 +108,26 @@
<span>主管单位联系电话 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 6">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="xmsldata.supervisorPhone"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="isphone" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="isphone(1,$event)" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 6">待添加</span>
<span :class="{txt:!xmsldata.supervisorPhone}" v-else @click="nowedit = 6">{{xmsldata.supervisorPhone||'待添加'}}</span>
</div>
</div>
<div class="con i">
<span>建设单位联系电话 :</span>
<div class="inputxt">
<div class="flex" v-if="nowedit == 7">
<el-input placeholder="待添加"></el-input>
<el-input placeholder="待添加" v-model="xmsldata.constructionPhone"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" @click="isphone" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" @click="isphone(2,$event)" style="width: 56px">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
<span class="txt" v-else @click="nowedit = 7">待添加</span>
<span :class="{txt:!xmsldata.constructionPhone}" v-else @click="nowedit = 7">{{xmsldata.constructionPhone||'待添加'}}</span>
</div>
</div>
</div>
......@@ -138,27 +138,27 @@
<div class="otherdata">
<div class="det">
<img src="@/assets/images/project/xgsj_1.png">
<div class="i">{{datas.contactsCount}}</div>
<div class="i">{{xmsldata.contactsCount}}</div>
<div class="j">联系人</div>
</div>
<div class="det">
<img src="@/assets/images/project/xgsj_2.png">
<div class="i">{{datas.followRecordCount}}</div>
<div class="i">{{xmsldata.followRecordCount}}</div>
<div class="j">跟进记录</div>
</div>
<div class="det">
<img src="@/assets/images/project/xgsj_3.png">
<div class="i">{{datas.backlogCount}}</div>
<div class="i">{{xmsldata.backlogCount}}</div>
<div class="j">工作待办</div>
</div>
<div class="det">
<img src="@/assets/images/project/xgsj_4.png">
<div class="i">{{datas.fileCount}}</div>
<div class="i">{{xmsldata.fileCount}}</div>
<div class="j">资料文档</div>
</div>
<div class="det">
<img src="@/assets/images/project/xgsj_5.png">
<div class="i">{{datas.relateCompanyCount}}</div>
<div class="i">{{xmsldata.relateCompanyCount}}</div>
<div class="j">相关企业</div>
</div>
</div>
......@@ -167,9 +167,10 @@
</template>
<script>
import "@/assets/styles/project.scss"
import {getDictType,} from '@/api/main'
import {} from '@/api/project/project'
import '@/assets/styles/project.scss'
import { getDictType } from '@/api/main'
import { getXMSL,editXMNR ,addLabel,removeLabel} from '@/api/project/project'
export default {
name: 'xmsl',
props:{
......@@ -182,7 +183,8 @@
tipsvalue:"",//标签填写内容
xmjd:'待添加',
projectStage:[],//项目阶段
sldata:this.datas,
id: this.$route.query.id,
xmsldata:this.datas,
}
},
created(){
......@@ -190,33 +192,81 @@
getDictType('project_stage_type').then(result=>{
this.projectStage = result.code == 200 ? result.data:[]
})
this.xmjd = this.datas.projectStage
this.tipslit = this.datas.labelList
this.getXMSL()
},
methods:{
editXMSL(param){
let params = param
params.id = this.id
editXMNR(JSON.stringify(params)).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
}else{
this.$message.error(res.msg)
this.getXMSL()
}
})
this.nowedit = -1
},
//验证电话号码
isphone(value){
isphone(type,value){
var regPartton = /1[3-8]+\d{9}/;
var regPartton1 = /^(0[0-9]{2,3}[\-]?[2-9][0-9]{6,7}[\-]?[0-9]?)$/;
if (!regPartton.test(value) && !regPartton1.test(value)) {
this.$message.error("请输入正确的电话");
} else {
if (type == 1) {
this.editXMSL({ supervisorPhone: this.xmsldata.supervisorPhone })
}
if (type == 2) {
this.editXMSL({ constructionPhone: this.xmsldata.constructionPhone })
}
}
},
//标签添加、删除
addtips(){
if(this.tipsvalue == "")
return false
if(this.tipslit.length>=30){
if(this.tipslit!=null&&this.tipslit.length>=30){
this.$message.error("最多能只能添加30个标签")
return false
}
this.tipslit.push(this.tipsvalue)
let param={
businessId:this.id,
label:this.tipsvalue
}
addLabel(JSON.stringify(param)).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
this.tipsvalue = ""
this.getXMSL()
}else{
this.$message.error(res.msg)
}
})
// this.tipslit.push(this.tipsvalue)
},
deltip(value){
let param={
businessId:this.id,
label:value
}
removeLabel(JSON.stringify(param)).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
this.getXMSL()
}else{
this.$message.error(res.msg)
}
})
},
deltip(index){
this.tipslit.splice(index,1)
getXMSL(){
getXMSL(this.id).then(result=> {
this.xmjd = result.data.projectStage
this.tipslit = result.data.labelList
this.xmsldata = result.data
})
},
}
}
......
......@@ -12,17 +12,18 @@
<img src="@/assets/images/project/headimg.png" class="headimg">
<strong class="text">{{ProjectData.projectName}}</strong>
<div class="locks">
<div @click="islock=true">
<img v-if="ProjectData.isPrivate == 0" src="@/assets/images/project/lock.png">
<img v-else src="@/assets/images/project/lockopen.png">
{{ProjectData.isPrivate == 0?"仅自己可见":"他人可见"}}
<!--<div class="delform">-->
<!--<div class="words">{{ProjectData.isPrivate == 0?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div>-->
<!--<div>-->
<!--<div class="btnsmall btn_primary h28">确定</div>-->
<!--<div class="btnsmall btn_cancel h28">取消</div>-->
<!--</div>-->
<!--</div>-->
</div>
<div class="delform" v-if="islock">
<div class="words">{{ProjectData.isPrivate == 0?"是否将项目权限修改为他人可见?":"是否将项目权限修改为仅自己可见?"}}</div>
<div>
<div class="btnsmall btn_primary h28" @click="locks(ProjectData.isPrivate)">确定</div>
<div class="btnsmall btn_cancel h28" @click="islock=false">取消</div>
</div>
</div>
</div>
</div>
<div class="contets row">
......@@ -33,7 +34,7 @@
{{xmlx}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmlx" class="select-multiple" placeholder="请选择" @change="{}">
<el-select v-model="xmlx" class="select-multiple" placeholder="请选择" @change="editXMSL({projectType:xmlx})">
<el-option v-for="(item,index) in projectType" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -46,7 +47,7 @@
{{xmlb}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="xmlb" class="select-multiple" placeholder="请选择">
<el-select v-model="xmlb" class="select-multiple" placeholder="请选择" @change="editXMSL({projectCategory:xmlb})">
<el-option v-for="(item,index) in projectCategory" :key="index" :label="item.dictLabel" :value="item.dictValue"></el-option>
</el-select>
</div>
......@@ -58,7 +59,7 @@
<div class="flex" v-if="nowedit == 3">
<el-input v-model="ProjectData.investmentAmount" placeholder="待添加" @input="number"></el-input>
<div class="flex">
<div class="btnsmall btn_primary h28" style="width: 56px">确定</div>
<div class="btnsmall btn_primary h28" style="width: 56px" @click="editXMSL({investmentAmount:ProjectData.investmentAmount})">确定</div>
<div class="cancels h28" @click="nowedit = -1" style="">取消</div>
</div>
</div>
......@@ -69,11 +70,11 @@
<span>建设地点:</span>
<div class="select-popper">
<span :class="{ color_text:address != '待添加'}">
{{address}}
<span :class="{ color_text:addresstxt != '待添加'}">
{{addresstxt}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-cascader class="cascader-region select-location"
<el-cascader class="cascader-region select-location" v-model="ProjectData.address"
ref="myCascader" :props="props"
:options="addressList"
@change="handleChange"></el-cascader>
......@@ -133,7 +134,7 @@
import zlwd from './component/zlwd.vue'
import xgqy from './component/xgqy.vue'
import prvinceTree from '@/assets/json/provinceTree'
import {getXMSL} from '@/api/project/project'
import {getXMSL,editXMNR} from '@/api/project/project'
export default {
name: 'detail',
components: {xmsl,jsnr,lxr,gjjl,gzdb,zlwd,xgqy},
......@@ -153,12 +154,13 @@
thistag:'xmsl',
xmlx:'请选择',//项目类型
xmlb:'请选择',//项目类别
islock:true,//仅自己可见
islock:false,
projectStage:[],//项目阶段
projectType:[],//项目类型
projectCategory:[],//项目类别
nowedit:-1,
address:'待添加',
address:[],
addresstxt:'待添加',
//项目地区
addressList:[],
domicile:[],
......@@ -183,6 +185,10 @@
this.projectCategory = result.code == 200 ? result.data:[]
})
//获取基本信息
this.getXMSL()
},
methods: {
getXMSL(){
getXMSL(this.id).then(result=>{
this.ProjectData = result.code==200?result.data:{}
this.$route.query.projectname = result.data.projectName
......@@ -190,20 +196,42 @@
this.xmlb = result.data.projectCategory==""||result.data.projectCategory==null?"请选择":result.data.projectCategory
this.thisindex = result.data.projectStage
let list = []
if(result.data.provinceName){
list.push(result.data.provinceName)
let txt = ''
if(result.data.provinceId){
list.push(result.data.provinceId)
txt += result.data.provinceName
}
if(result.data.cityName){
list.push(result.data.cityName)
if(result.data.cityId){
list.push(result.data.cityId)
txt += '/'+result.data.cityName
}
if(result.data.districtName){
list.push(result.data.districtName)
if(result.data.districtId){
list.push(result.data.districtId)
txt += '/'+result.data.districtName
}
this.address = list
console.log(this.ProjectData.team)
this.address = list.length>0?list:"待添加"
this.addresstxt = txt == "" ? "待添加":txt
})
},
locks(isPrivate){
isPrivate = isPrivate==0?1:0
this.editXMSL({isPrivate:isPrivate})
this.lock = false
},
editXMSL(param){
let params = param
params.id = this.id
editXMNR(JSON.stringify(params)).then(res=>{
if (res.code == 200){
this.$message.success('修改成功!')
}else{
this.$message.error(res.msg)
this.getXMSL()
}
})
this.nowedit = -1
},
methods: {
//地区
async prvinceTree() {
// await axios.post("https://files.jiansheku.com/file/json/common/provinceTree.json", {}, {
......@@ -238,11 +266,10 @@
},
choose(value){
this.thisindex = value
console.log(value)
this.editXMSL({projectStage:value})
},
//内容组件切换
getCom(tag){
console.log(tag)
this.thistag = tag
},
//输入数字
......@@ -251,40 +278,33 @@
},
handleChange(value) {
console.log(value);
let str = ''
var labelString = this.$refs.myCascader.getCheckedNodes()[0].pathLabels;
let txt = ''
labelString.forEach((item,index)=>{
if(index == 0)
str += item
else
str += '-'+item
let str = ''
if(index >0){
str = '/'
}
txt += str + item
})
this.addresstxt = txt
let param = {
provinceId:null,
cityId:null,
districtId:null
}
value.forEach((item,index)=>{
if(index == 0){
param.provinceId = parseInt(item)
}
if(index == 1){
param.cityId = parseInt(item)
}
if(index == 2){
param.districtId = parseInt(item)
}
})
this.address = str
let arr = this.$refs.myCascader.getCheckedNodes();
// console.log(arr)
let province = [],
city = [],
area = [];
this.domicile = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && city.push(arr[i].value);
arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && area.push(arr[i].value);
!arr[i].hasChildren && this.domicile.push(arr[i].label);
}
} else {
province.push(arr[i].value);
this.domicile.push(arr[i].label);
}
}
// var obj = JSON.parse(JSON.stringify(this.searchParam));
// obj.province = province;
// obj.city = city;
// obj.area = area;
// this.searchParam = obj;
this.editXMSL(param)
},
}
}
......
......@@ -149,7 +149,7 @@
</div>
</div>
<div class="tables">
<div class="bottems" v-if="total>0">
<div class="bottems" v-if="total>searchParam.pageSize">
<el-pagination
background
:page-size="searchParam.pageSize"
......
......@@ -13,17 +13,13 @@
<div class="list-content">
<p class="list-content-text">
<span>办件结果</span>
<span >芜湖旭日机械制造有限公司</span>
<span>发布时间</span>
<span >2022-04-21</span>
</p>
<p class="list-content-text">
<span>总投资</span>
<span>来源网站</span>
<span>芜湖旭日</span>
</p>
<p class="list-content-text">
<span>审批日期:</span>
<span>12345.62万</span>
</p>
</div>
......@@ -32,53 +28,7 @@
</div>
<div class="content main3">
<div class="common-title">拟建项目详情</div>
<div class="main3-box">
<p>
<label class="label">项目法人</label>
<span>序号</span>
<label class="label">总投资(万元)</label>
<span>序号</span>
</p>
<p>
<label class="label">项目类型</label>
<span class="span-one">序号</span>
</p>
<p>
<label class="label">项目属地</label>
<span>序号</span>
<label class="label">审批类型</label>
<span>序号</span>
</p>
<p>
<label class="label">建设规模</label>
<span>序号</span>
</p>
<p>
<label class="label">计划开工日期</label>
<span>序号</span>
<label class="label">计划完成日期</label>
<span>序号</span>
</p>
<p>
<label class="label">项目联系方式</label>
<span>序号</span>
<label class="label">行业分类</label>
<span>序号</span>
</p>
<p>
<label class="label">项目详情地址</label>
<span>序号</span>
<label class="label">项目代码</label>
<span>序号</span>
</p>
</div>
</div>
<div class="content main5">
<div class="common-title">立项审批</div>
......@@ -90,81 +40,38 @@
fit
highlight-current-row
>
<el-table-column label="审批事项" width="270">
<el-table-column label="序号" width="80">
<template slot-scope="scope">
企业投资项目备案
1
</template>
</el-table-column>
<el-table-column label="审批结果" width="187" >
<el-table-column label="投标单位" >
<template slot-scope="scope">
通过
</template>
</el-table-column>
<el-table-column label="审批部门" >
<el-table-column label="投标报价(万)" width="300" >
<template slot-scope="scope">
老河口市发展和改革局
</template>
</el-table-column>
<el-table-column label="审批问号" width="328" >
<template slot-scope="scope">
--
</template>
</el-table-column>
<el-table-column prop="zj" label="审批日期" width="240" >
<template slot-scope="scope">
2022-08-28
</template>
</el-table-column>
</el-table>
</div>
</div>
<div class="content main3">
<div class="common-title">原文信息</div>
<div class="content main5">
<div class="common-title">立项推介</div>
<div class="table-item">
<el-table
:data="tableData"
element-loading-text="Loading"
border
fit
highlight-current-row
>
<el-table-column label="立项推介" >
<template slot-scope="scope">
-
</template>
</el-table-column>
<el-table-column label="引入资本规模(万元)" width="232" >
<template slot-scope="scope">
--
</template>
</el-table-column>
<el-table-column label="引入资本时间" width="243" >
<template slot-scope="scope">
2019-12-24
</template>
</el-table-column>
<el-table-column label="推介时间" width="243" >
<template slot-scope="scope">
2019-12-24
</template>
<div class="main3-box">
</el-table-column>
<el-table-column prop="zj" label="是否完成推介" width="243" >
<template slot-scope="scope">
</template>
</el-table-column>
</el-table>
</div>
</div>
</div>
</template>
......@@ -172,7 +79,7 @@
import "@/assets/styles/public.css";
export default {
name: 'EstablishmentDetails',
name: 'BidRecordDetails',
data() {
return {
id: '',
......@@ -362,14 +269,6 @@
}
.qyzx-details {
.tab {
font-size: 12px;
color: #A1A1A1;
span {
color: #232323;
}
}
.content {
margin-top: 16px;
......@@ -382,170 +281,12 @@
margin-bottom: 8px;
}
.main1 {
.title {
color: #232323;
font-size: 16px;
line-height: 28px;
font-weight: bold;
margin-bottom: 8px;
text-align: left;
img {
width: 28px;
height: 28px;
margin-bottom: -9px;
margin-right: 17px;
}
}
p {
color: #3D3D3D;
font-size: 14px;
margin: 0;
}
}
.main2 {
.list {
display: flex;
margin: 16px 0;
}
.item {
width: 24.5%;
margin-right: 16px;
height: 100px;
display: flex;
justify-content: space-between;
border-radius: 8px;
.item-left {
margin-left: 16px;
margin-top: 24px;
h4 {
color: #232323;
font-size: 22px;
line-height: 22px;
font-weight: bold;
margin: 0;
span {
font-weight: 400;
margin-left: 4px;
font-size: 18px;
}
}
p {
margin: 0;
color: #3D3D3D;
font-size: 14px;
padding-top: 8px;
}
}
.img {
width: 56px;
height: 56px;
margin-top: 22px;
margin-right: 12px;
}
}
.color1 {
background: rgba(246, 190, 59, 0.08);
border: 1px solid rgba(246, 190, 59, 0.2);
}
.color2 {
background: rgba(148, 216, 196, 0.102);
border: 1px solid rgba(73, 187, 154, 0.1);
}
.color3 {
background: rgba(57, 100, 199, 0.06);
border: 1px solid rgba(57, 100, 199, 0.1);
}
.color4 {
background: rgba(0, 129, 255, 0.04);
border: 1px solid rgba(0, 129, 255, 0.1);
}
}
.main3 {
.main3-box {
margin-top: 22px;
border-top: 1px solid #E6E9F0;
p {
display: flex;
align-items: center;
margin: 0;
border-left: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
.label {
width: 10%;
font-weight: 400;
line-height: 40px;
font-size: 12px;
height: 40px;
background: #F0F3FA;
padding-left: 12px;
}
span {
width: 40%;
color: #000;
height: 40px;
line-height: 40px;
padding-left: 12px;
font-size: 12px;
}
.span-one {
width: 90%;
}
}
}
}
.main4 {
.main4-box {
margin-top: 22px;
.label {
width: 14%;
background: #F0F3FA;
border: 1px solid #E6E9F0;
display: inline-block;
height: 40px;
line-height: 40px;
font-size: 12px;
color: rgba(35, 35, 35, 0.8);
padding-left: 12px;
}
span {
width: 19%;
display: inline-block;
height: 40px;
line-height: 40px;
border-top: 1px solid #E6E9F0;
border-bottom: 1px solid #E6E9F0;
padding-left: 12px;
font-size: 12px;
}
min-height: 400px;
border: 1px solid #D8D8D8;
span:last-child {
width: 20%;
border-right: 1px solid #E6E9F0;
}
}
}
......
<template>
<div class="app-container qyzx-details">
<div class="bottomlist">
<ul class="bottomlist-content">
<li class="bottomlist-list" >
<p class="list-titel">
绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)
<!-- <div v-else-if="item.projectName" v-html="item.projectName"></div> -->
</p>
<div class="content-label">
<span class="list-label">市政工程</span>
</div>
<div class="list-content">
<p class="list-content-text">
<span>招采单位:</span>
<span class="blue">江西合胜合招标咨询有限公司</span>
</p>
<p class="list-content-text">
<span>代理单位:</span>
<span class="blue">江西合胜合招标咨询有限公司</span>
</p>
</div>
<div class="list-content">
<p class="list-content-text">
<span>预算金款:</span>
<span>123,456,78万元</span>
</p>
<p class="list-content-text">
<span>联系方式:</span>
<span >招采单位 张工 123456789</span>
</p>
</div>
<div class="list-content">
<p class="list-content-text">
<span>发布时间:</span>
<span >今日</span>
</p>
<p class="list-content-text">
<span>报名截止日期:</span>
<span >2022-04-21</span>
</p>
<p class="list-content-text">
<span>开标时间:</span>
<span >2022-04-21</span>
</p>
<p class="list-content-text">
<span>来源网站:</span>
<span >赤峰市阿鲁科尔沁旗人民政府</span>
</p>
</div>
</li>
</ul>
</div>
<div class="content main3">
<div class="common-title">原文信息</div>
<div class="list-content-img" @mouseenter="showimg=false" @mouseleave="showimg=true">
<img v-if="showimg" src="@/assets/images/bxpro/original1.png">
<img v-else src="@/assets/images/bxpro/original.png">
<span>原文链接</span>
</div>
<div class="main3-box">
</div>
</div>
</div>
</template>
<script>
import "@/assets/styles/public.css";
export default {
name: 'BiddingDetails',
data() {
return {
id: '',
tableData: [{
id: 0,
name: '20重庆债14(2005938)',
time: '2020-09-18',
gm: '285.24',
zj: '否',
}],
showimg:true
}
},
created() {
console.log(this.$route.params)
this.id = this.$route.params.id
},
methods: {
}
}
</script>
<style lang="scss" scoped>
.bottomlist {
width: 100%;
background-color: #FFFFFF;
border-radius: 4px 4px 4px 4px;
.bottomlist-title {
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px;
border-bottom: 1px solid #EFEFEF;
.title-right {
display: flex;
align-items: center;
p:first-child {
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child {
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
}
img {
width: 18px;
height: 18px;
}
}
}
.bottomlist-content {
padding-bottom: 0px;
}
.bottomlist-list {
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px;
.list-titel {
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 19px;
.list-titel-a {
text-decoration: none;
color: #3D3D3D;
}
a:hover,
a:visited,
a:link,
a:active {
color: #3D3D3D;
}
}
.content-label {
margin-top: 12px;
.list-label {
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
}
.list-label-zb{
font-weight: 400;
color: #5A88F9;
background: #E7EDFC;
}
.list-label-lx{
font-weight: 400;
color: #41A1FD;
background: #E4F3FD;
}
}
.list-content {
margin-top: 6px;
display: flex;
justify-content: start;
align-items: center;
.list-content-text {
margin-top: 7px;
display: flex;
justify-content: start;
align-items: center;
margin-right: 27px;
font-size: 14px;
span:first-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.4);
line-height: 15px
}
span:last-child {
font-weight: 400;
color: rgba(35, 35, 35, 0.8);
line-height: 15px
}
.blue {
color: #0081FF !important;
cursor: pointer;
}
}
}
.list-addree {
width: auto;
background: #F3F4F5;
display: inline-flex;
margin-top: 7px;
.list-content-text {
margin-top: 0px;
span {
line-height: 30px !important;
}
}
img {
width: 14px;
margin: 0 8px;
}
}
}
.bottomlist-list:hover {
background: #F6F9FC;
cursor: pointer;
}
.pagination {
padding: 14px;
.el-pagination {
float: right;
}
}
}
.app-container {
padding: 0;
}
.qyzx-details {
.content {
margin-top: 16px;
background: #FFFFFF;
padding: 16px;
border-radius: 4px;
}
.common-title {
margin-bottom: 8px;
}
.main3 {
position: relative;
.main3-box {
margin-top: 22px;
min-height: 400px;
border: 1px solid #D8D8D8;
}
.list-content-img{
position: absolute;
top: 16px;
right:14px ;
color: #0081FF;
display: flex;
align-items: center;
font-size: 14px;
cursor: pointer;
img{
width: 14px;
height: 14px;
margin-right: 4px;
}
}
.list-content-img:hover{
color: #0067CC;
}
}
}
</style>
\ No newline at end of file
......@@ -176,7 +176,7 @@
}
.content-label {
margin-top: 7px;
margin-top: 12px;
.list-label {
background: #F3F3FF;
......@@ -191,7 +191,7 @@
.list-content {
margin-top: 3px;
margin-top: 6px;
display: flex;
justify-content: start;
align-items: center;
......@@ -270,15 +270,6 @@
}
.qyzx-details {
.tab {
font-size: 12px;
color: #A1A1A1;
span {
color: #232323;
}
}
.content {
margin-top: 16px;
background: #FFFFFF;
......
......@@ -35,7 +35,7 @@
></el-cascader>
</div>
<el-dropdown @command="punishDatehandleCommand" trigger="click" ref="punishDateShowPopper" :hide-on-click="false" >
<el-dropdown @command="punishDatehandleCommand" trigger="click" class="el-dropdown-land" ref="punishDateShowPopper" :hide-on-click="false" >
<span class="el-dropdown-link" :class="punishDateValue ? 'color_text' : ''" >
发布时间{{ punishDateValue ? " 1项" : ""}}
<i class="el-icon-caret-bottom"></i>
......@@ -132,7 +132,7 @@
<ul class="bottomlist-content">
<li class="bottomlist-list" >
<p class="list-titel">
<router-link :to="'/radar/Establishment/details/'+ 1" tag="a" class="list-titel-a" >绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)</router-link>
<router-link :to="'/radar/BidRecord/details/'+ 1" tag="a" class="list-titel-a" >绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)</router-link>
<!-- <div v-else-if="item.projectName" v-html="item.projectName"></div> -->
</p>
<div class="content-label">
......
<template>
<div>
<div class="content">
<div class="content_item">
<div class="label">项目名称</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="jskBidQueryDto.projectName" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">招标单位</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="jskBidQueryDto.tenderee" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">工程规模</div>
<div class="content_right">
<el-input class="ename_input"
placeholder="请输入项目名称关键字" v-model="jskBidQueryDto.projectScale" ></el-input>
</div>
</div>
<div class="content_item">
<div class="label">更多筛选</div>
<div class="content_right">
<div class="select-popper" >
<span :class="{color_text:jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length,}">
项目属地{{jskBidQueryDto.province.length ||jskBidQueryDto.city.length ||jskBidQueryDto.county.length? jskBidQueryDto.province.length + jskBidQueryDto.city.length +jskBidQueryDto.county.length +"项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-cascader
ref="address"
class="cascader-region"
v-model="addressType"
:options="addressList"
:props="props"
@change="domicileChange"
collapse-tags
clearable
></el-cascader>
</div>
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.objectType.length }">
标的物类型{{jskBidQueryDto.objectType.length? jskBidQueryDto.objectType.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidQueryDto.objectType" class="select-multiple" multipleplaceholder="请选择">
<el-option v-for="(item, i) in objectTypeList" :key="i":label="item" :value="item">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.projectType.length }">
项目类型{{jskBidQueryDto.projectType.length? jskBidQueryDto.projectType.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidQueryDto.projectType" class="select-multiple" multipleplaceholder="请选择">
<el-option v-for="(item, i) in projectTypeList" :key="i":label="item" :value="item">
</el-option>
</el-select>
</div>
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.tenderWay.length }">
招标方式{{jskBidQueryDto.tenderWay.length? jskBidQueryDto.tenderWay.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidQueryDto.tenderWay" class="select-multiple" multipleplaceholder="请选择">
<el-option v-for="(item, i) in tenderWayList" :key="i":label="item" :value="item">
</el-option>
</el-select>
</div>
<el-dropdown @command="planTenderAmounthandleCommand" class="el-dropdown-land" trigger="click" ref="planTenderAmountShowPopper" :hide-on-click="false">
<span class="el-dropdown-link" :class="jskBidQueryDto.startPlanTenderAmount ||jskBidQueryDto.endPlanTenderAmount ? 'color_text': ''">
成交金额{{jskBidQueryDto.startPlanTenderAmount ||jskBidQueryDto.endPlanTenderAmount? " 1项": ""}}<i class="el-icon-caret-bottom"></i>
</span>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item v-for="(item, i) in planTenderAmount" :class="jskBidQueryDto.startPlanTenderAmount == item.value[0] &&jskBidQueryDto.endPlanTenderAmount == item.value[1] &&
!startPlanTenderAmount &&!endPlanTenderAmount? 'color_text': '' " :key="i" :command="item.value">{{ item.label }}</el-dropdown-item>
<el-dropdown-item command="" style="padding: 0; text-indent: 20px">
<div @mouseenter="planTenderAmountShowPopper = true" @mouseleave="planTenderAmountShowPopper = false">
<span :class="(startPlanTenderAmount || endPlanTenderAmount) &&jskBidQueryDto.startPlanTenderAmount ==startPlanTenderAmount &&
jskBidQueryDto.endPlanTenderAmount == endPlanTenderAmount? 'color_text': '' ">
自定义<i class="el-icon-arrow-right"></i>
</span>
<div class="jabph_popper_box" style="position: absolute"v-if="planTenderAmountShowPopper">
<div class="jabph_popper_wrap">
<el-input class="jabph_popper_input" v-limit-num clearable v-model="startPlanTenderAmount"></el-input>
</div>
<div class="jabph_popper_wrap">
<el-input class="jabph_popper_input" v-limit-num clearable v-model="endPlanTenderAmount"></el-input>
</div>
<div style="">
<el-button size="mini" @click="planTenderAmountCancel">取消</el-button>
<el-button type="primary" size="mini" @click="planTenderAmountPopperConfirm">确定</el-button>
</div>
</div>
</div>
</el-dropdown-item>
</el-dropdown-menu>
</el-dropdown>
<div class="select-popper">
<span :class="{ color_text: jskBidQueryDto.projectCapitalSource.length }">
资金来源{{jskBidQueryDto.projectCapitalSource.length? jskBidQueryDto.projectCapitalSource.length + "项": ""}}
<i class="el-icon-caret-bottom"></i>
</span>
<el-select v-model="jskBidQueryDto.projectCapitalSource" class="select-multiple" multipleplaceholder="请选择">
<el-option v-for="(item, i) in projectCapitalSourceList" :key="i":label="item" :value="item">
</el-option>
</el-select>
</div>
</div>
</div>
<div class="content_item content_item_padding0">
<div class="geduan">
</div>
</div>
<div class="content_item content_item_padding0">
<div class="search-new">
<span @click="search()">查询</span>
<span @click="reset">重置</span>
</div>
</div>
</div>
<div class="bottomlist">
<div class="bottomlist-title">
<div></div>
<div class="title-right">
<p>共有{{total}}</p>
<p>
<img src="@/assets/images/EXCEL.png" alt="">
<span>导出EXCEL</span>
</p>
</div>
</div>
<ul class="bottomlist-content">
<li class="bottomlist-list" >
<p class="list-titel">
<router-link :to="'/radar/Bidding/details/'+ 1" tag="a" class="list-titel-a" >绿色节能型压缩机基础件、汽车零配件新建项目 (芜湖旭日机械制造有限公司)</router-link>
<!-- <div v-else-if="item.projectName" v-html="item.projectName"></div> -->
</p>
<div class="content-label">
<span class="list-label">市政工程</span>
</div>
<div class="list-content">
<p class="list-content-text">
<span>招采单位:</span>
<span class="blue">芜湖旭日机械制造有限公司</span>
</p>
<p class="list-content-text">
<span>合同预估金额(万元):</span>
<span>芜湖旭日</span>
</p>
<p class="list-content-text">
<span>资金来源:</span>
<span>12345.62万</span>
</p>
</div>
<div class="list-content">
<p class="list-content-text">
<span>发布时间:</span>
<span >2022-04-21</span>
</p>
<p class="list-content-text">
<span>预计招标时间:</span>
<span>2022-04-21</span>
</p>
<p class="list-content-text">
<span>来源网站:</span>
<span class="blue">12345.62万</span>
</p>
</div>
<div class="list-content list-addree">
<p class="list-content-text">
<span>工程规模:</span>
<span >城镇村道路用地</span>
</p>
</div>
</li>
</ul>
<div class="pagination clearfix" v-show="total>0">
<el-pagination
background
:page-size="pageSize"
:current-page="page"
@current-change="handleCurrentChange"
layout="prev, pager, next"
:total="total">
</el-pagination>
</div>
</div>
</div>
</template>
<script>
import jsk_data from '../../../../../public/jsk.json';
export default {
name: 'Bidding',
data() {
return {
addressList: [],
addressType: [],
props: {
multiple: true,
expandTrigger: "hover",
value: "id",
},
objectTypeList: [
"施工",
"勘察设计",
"勘察",
"设计",
"监理",
"工程总承包",
"测绘",
"施工图审查",
"造价咨询",
"招标代理",
"规划编制",
"方案编制",
"检测",
"审计",
"项目管理",
"全过程工程咨询",
"ppp",
"其他"
],//标的物类型
projectTypeList: [
"工程总承包",
"测绘",
"施工图审查",
"造价咨询",
"招标代理",
"规划编制",
"方案编制",
"检测",
"审计",
"项目管理",
"全过程工程咨询",
"ppp",
"其他"
],//项目类型
tenderWayList: [
"工程总承包",
"测绘",
"施工图审查",
"造价咨询",
"招标代理",
"规划编制",
"方案编制",
"检测",
"审计",
"项目管理",
"全过程工程咨询",
"ppp",
"其他"
],//招标方式
projectCapitalSourceList: [
"规划编制",
"方案编制",
"检测",
"审计",
"项目管理",
"全过程工程咨询",
"ppp",
"其他"
],//资金来源
planTenderAmount: [{
value: "不限",
label: "不限",
},
{
value: [0, 100],
label: "100万元以下",
},
{
value: [100, 1000],
label: "100万-1000万元",
},
{
value: [1000, 5000],
label: "1000万-5000万元",
},
{
value: [5000, 20000],
label: "5000万-2亿元",
},
{
value: [20000, ""],
label: "2亿元以上",
},
],
jskBidQueryDto: {
projectName:'',
tenderee:'',
projectScale:'',
province: [],
city: [],
county: [],
objectType:[],
projectType:[],
tenderWay:[],
startPlanTenderAmount:'',
endPlanTenderAmount:'',
projectCapitalSource:[],
},
planTenderAmountShowPopper:false,
startPlanTenderAmount:'',
endPlanTenderAmount:'',
domicile: [],
pageFlag: true,
conditionsArr: [],
tableData:[],
total:6000,
page:1,
pageSize:20
};
},
computed: {
checkJskBidQueryDto() {
let arr = [];
let data = {};
if(this.jskBidQueryDto.projectName){
data = {
title: "项目名称:",
keyid: "projectName",
value: this.jskBidQueryDto.projectName,
key: "projectName"
}
arr.push(data)
}
if(this.jskBidQueryDto.tenderee){
data = {
title: "招标单位:",
keyid: "tenderee",
value: this.jskBidQueryDto.tenderee,
key: "tenderee"
}
arr.push(data)
}
if(this.jskBidQueryDto.projectScale){
data = {
title: "工程规模:",
keyid: "projectScale",
value: this.jskBidQueryDto.projectScale,
key: "projectScale"
}
arr.push(data)
}
if (this.domicile.length > 0) {
data = {
title: "项目属地:",
keyid: "domicile",
value: this.domicile.join(","),
key: "domicile"
}
arr.push(data)
}
if (this.jskBidQueryDto.objectType.length > 0) {
data = {
title: "标的物类型:",
keyid: "objectType",
value: this.jskBidQueryDto.objectType,
key: "objectType"
}
arr.push(data)
}
if (this.jskBidQueryDto.projectType.length > 0) {
data = {
title: "项目类型:",
keyid: "projectType",
value: this.jskBidQueryDto.projectType,
key: "projectType"
}
arr.push(data)
}
if (this.jskBidQueryDto.tenderWay.length > 0) {
data = {
title: "招标方式:",
keyid: "tenderWay",
value: this.jskBidQueryDto.tenderWay,
key: "tenderWay"
}
arr.push(data)
}
if (this.jskBidQueryDto.projectCapitalSource.length > 0) {
data = {
title: "资金来源:",
keyid: "projectCapitalSource",
value: this.jskBidQueryDto.projectCapitalSource,
key: "projectCapitalSource"
}
arr.push(data)
}
this.conditionsArr = arr
},
},
mounted() {
if (this.$route.query.projectName) {
this.projectName = this.$route.query.projectName;
}
this.addressListfn();
},
methods: {
keywordClick(val) {
this.projectName = val
},
search(page, limit,exportFlag) {
if (!page) {
this.page = 1;
}
if (!limit) {
this.limit = 20;
}
if (!page && !limit) {
this.reloadPage();
}
var data = JSON.parse(JSON.stringify(this.jskBidQueryDto));
data.province = data.province.join(",");
data.city = data.city.join(",");
data.county = data.county.join(",");
let params = {
page: {
page: this.page,
limit: this.limit,
field: this.field,
},
jskBidQueryDto: data,
};
if(this.projectName){
params.projectName = this.projectName
}else{
delete params.projectName
}
if(this.keywordNot){
params.keywordNot = this.keywordNot
}else{
delete params.keywordNot
}
this.$emit("search",params)
},
reloadPage() {
this.pageFlag = false;
this.$nextTick(() => {
this.pageFlag = true;
});
},
handleCurrentChange(page) {
this.page = page;
this.search(page, this.limit);
},
handleSizeChange(limit) {
this.limit = limit;
this.search(this.page, limit);
},
deleteDomicile() {
this.$refs.address.handleClear();
},
domicileChange() {
let arr = this.$refs.address.getCheckedNodes();
let province = [],
city = [],
county = [];
this.domicile = [];
for (var i in arr) {
if (arr[i].parent) {
if (!arr[i].parent.checked) {
arr[i].hasChildren && city.push(arr[i].value);
arr[i].hasChildren && this.domicile.push(arr[i].label);
!arr[i].hasChildren && county.push(arr[i].value);
!arr[i].hasChildren && this.domicile.push(arr[i].label);
}
} else {
province.push(arr[i].value);
this.domicile.push(arr[i].label);
}
}
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
obj.province = province;
obj.city = city;
obj.county = county;
this.jskBidQueryDto = obj;
},
addressListfn() {
var str = [];
for (let x = 0; x < 3; x++) {
for (let i = 0; i < jsk_data.length; i++) {
if (jsk_data[i].regionLevel == x + 1 && x + 1 == 1) {
str.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
children:jsk_data[i].id==900000?undefined:[],
});
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 2&&str) {
for (let j = 0; j < str.length; j++) {
if (str[j].id == jsk_data[i].parentId) {
str[j].children.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
children: [],
});
}
}
} else if (jsk_data[i].regionLevel == x + 1 && x + 1 == 3) {
for (let j = 0; j < str.length; j++) {
if(str[j].children){
for (let k = 0; k < str[j].children.length; k++) {
if (str[j].children[k].id == jsk_data[i].parentId) {
str[j].children[k].children.push({
id: jsk_data[i].id,
label: jsk_data[i].regionName,
short: jsk_data[i].short,
value: jsk_data[i].parentId,
});
}
}
}
}
}
}
}
this.addressList = str;
},
planTenderAmountPopperConfirm() {
if (
this.startPlanTenderAmount &&
this.endPlanTenderAmount &&
!(Number(this.endPlanTenderAmount) > Number(this.startPlanTenderAmount))
) {
return this.$message.warning("最小值必须小于最大值,请重新输入!");
}
this.planTenderAmountShowPopper = false;
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
obj.startPlanTenderAmount = this.startPlanTenderAmount;
obj.endPlanTenderAmount = this.endPlanTenderAmount;
this.jskBidQueryDto = obj;
this.$refs.planTenderAmountShowPopper.hide();
},
planTenderAmountCancel() {
this.planTenderAmountShowPopper = false;
this.$refs.planTenderAmountShowPopper.hide();
},
planTenderAmounthandleCommand(command) {
if (command) {
this.$refs.planTenderAmountShowPopper.hide();
var obj = JSON.parse(JSON.stringify(this.jskBidQueryDto));
this.startPlanTenderAmount = "";
this.endPlanTenderAmount = "";
if (command == "不限") {
obj.startPlanTenderAmount = "";
obj.endPlanTenderAmount = "";
} else {
obj.startPlanTenderAmount = command[0];
obj.endPlanTenderAmount = command[1];
}
this.jskBidQueryDto = obj;
}
},
reset() {
Object.assign(this.$data, this.$options.data.call(this)); //重置data
this.init();
this.$emit("reset");
},
init(){
this.search();
this.addressListfn();
},
},
};
</script>
<style lang="scss" scoped>
.content{
padding: 0px 16px;
border-radius: 4px 4px 4px 4px;
background: #FFFFFF;
.content_item{
padding-top: 12px;
display: flex;
align-items: center;
.label{
width: 84px;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
.content_right{
.ename_input{
width: 640px;
margin-right: 20px;
}
.land_ipt_470 {
width: 640px;
}
}
.item_ckquery_list {
display: flex;
}
.item_ckquery_list .el-input__icon {
position: relative;
top: 1px;
}
.ckquery_list_right {
width: 640px;
}
.register_count_ipt{
margin-left: 0px;
}
.register_count_ipt .el-input__inner{
width: 174px;
}
::v-deep .el-input-group__prepend{
padding: 0 8px;
}
.content-projecttype{
display: flex;
align-items: center;
justify-content: center;
.projecttype{
font-weight: 400;
color: #232323;
padding: 1px 5px;
margin-right: 4px;
cursor: pointer;
border-radius: 3px 3px 3px 3px;
font-size: 14px;
}
.projecttype:first-child{
padding-left: 0px;
}
.projecttype:hover{
background: #F3F4F5;
padding: 1px 5px;
}
.activetype{
background: #F3F4F5;
padding: 1px 5px !important;
}
}
}
.content_item_padding0{
padding: 0;
}
}
.bottomlist{
width: 100%;
background-color: #FFFFFF;
border-radius: 4px 4px 4px 4px;
.bottomlist-title{
display: flex;
justify-content: space-between;
align-items: center;
margin-top: 12px;
padding: 16px ;
border-bottom: 1px solid #EFEFEF;
.title-right{
display: flex;
align-items: center;
p:first-child{
font-size: 12px;
font-weight: 400;
color: #3D3D3D;
margin-right: 10px;
}
p:last-child{
display: flex;
align-items: center;
font-size: 14px;
font-weight: 400;
color: rgba(35,35,35,0.8);
}
img{
width: 18px;
height: 18px;
}
}
}
.bottomlist-content{
padding-bottom: 0px;
}
.bottomlist-list{
padding: 16px;
font-size: 14px;
border-bottom: 1px solid #EFEFEF;
padding-bottom: 14px;
.list-titel{
font-size: 16px;
font-weight: 700;
color: #3D3D3D;
line-height: 19px;
.list-titel-a{
text-decoration: none;
color:#3D3D3D;
}
a:hover, a:visited, a:link, a:active{
color:#3D3D3D;
}
}
.content-label{
margin-top: 12px;
.list-label{
background: #F3F3FF;
color: #8491E8;
border-radius: 1px 1px 1px 1px;
padding: 3px 7px;
font-size: 12px;
}
}
.list-content{
margin-top: 8px;
display: flex;
justify-content: start;
align-items: center;
.list-content-text{
margin-top: 7px;
display: flex;
justify-content: start;
align-items: center;
margin-right: 27px;
font-size: 14px;
span:first-child{
font-weight: 400;
color: rgba(35,35,35,0.4);
line-height: 15px
}
span:last-child{
font-weight: 400;
color: rgba(35,35,35,0.8);
line-height: 15px
}
.blue{
color: #0081FF !important;
cursor: pointer;
}
}
}
.list-addree{
width: auto;
background: #F3F4F5;
display: inline-flex;
margin-top: 7px;
.list-content-text{
margin-top: 0px;
span{
line-height: 30px!important;
}
}
img{
width: 14px;
margin: 0 8px;
}
}
}
.bottomlist-list:hover{
background: #F6F9FC;
cursor: pointer;
}
.pagination{
padding: 14px ;
.el-pagination{
float: right;
}
}
}
</style>
......@@ -19,6 +19,8 @@
<Land v-if="personnelHerf=='Land'" />
<!-- 拟建项目 -->
<Establishment v-if="personnelHerf=='Establishment'" />
<!-- 招标计划 -->
<Bidding v-if="personnelHerf=='Bidding'" />
<!-- 标讯pro -->
<bxprozbgg v-if="personnelHerf=='bxprozbgg'" />
<!-- 公招标讯 -->
......@@ -37,11 +39,12 @@
import bxprozbgg from "./components/bxprozbgg/index.vue";
import Tender from "./components/Tender/index.vue";
import BidRecord from "./components/BidRecord/index.vue";
import Bidding from "./components/Bidding/index.vue";
import "@/assets/styles/public.css";
export default {
name: 'radar',
components: { debtProject,Land,Establishment,bxprozbgg,Tender,BidRecord },
components: { debtProject,Land,Establishment,bxprozbgg,Tender,BidRecord,Bidding },
data() {
return {
// tablist
......@@ -64,7 +67,7 @@
},
{
key: 'KeyPersonnel',
key: 'Bidding',
status: false,
value: '招标计划',
......
......@@ -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;
}
package com.dsk.system.domain.vo;
import com.dsk.common.annotation.Excel;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import lombok.Data;
......@@ -53,6 +54,21 @@ public class BusinessBrowseVo {
*/
private String districtName;
/**
* 省id
*/
private Integer provinceId;
/**
* 市id
*/
private Integer cityId;
/**
* 区id
*/
private Integer districtId;
/**
* 商务团队
*/
......@@ -73,10 +89,23 @@ public class BusinessBrowseVo {
*/
private List<String> labelList;
/**
* 关键企业
*/
private List<BusinessRelateCompany> relateCompany;
/** 建设单位 */
private String constructionUnit;
/** 建设单位负责人 */
private String constructionPrincipal;
/** 建设单位联系电话 */
private String constructionPhone;
/** 主管单位 */
private String supervisorUnit;
/** 主管单位负责人 */
private String supervisorPrincipal;
/** 主管单位联系电话 */
private String supervisorPhone;
/**
* 联系人统计
......
package com.dsk.system.mapper;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto;
import java.util.List;
......@@ -34,7 +35,7 @@ public interface BusinessFollowRecordMapper
* @param businessId 项目id
* @return 项目跟进记录集合
*/
public List<BusinessFollowRecord> selectBusinessFollowRecordList(Integer businessId);
public List<BusinessFollowRecord> selectBusinessFollowRecordList(BusinessIdDto businessId);
/**
* 新增项目跟进记录
......
......@@ -58,4 +58,11 @@ public interface BusinessUserMapper
* @return 结果
*/
public int deleteBusinessUserByIds(Long[] ids);
/**
* 根据项目id查询项目的创建人
* @param businessId
* @return
*/
String selectCreatorByBusinessId(Integer businessId);
}
package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto;
import com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
import com.dsk.common.dtos.*;
/**
* @ClassName EconomicService
......@@ -32,7 +29,7 @@ public interface EconomicService {
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult yearsList();
AjaxResult yearsList(OpRegionalEconomicDataYearsListDto dataYearsListDto);
/***
......@@ -42,7 +39,7 @@ public interface EconomicService {
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult details(Integer id);
AjaxResult details(OpRegionalEconomicDataDetailsDto detailsDto);
/***
......
package com.dsk.system.service;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.system.domain.BusinessIdDto;
import java.util.List;
......@@ -26,7 +27,7 @@ public interface IBusinessFollowRecordService
* @param businessId 项目跟进记录
* @return 项目跟进记录集合
*/
public List<BusinessFollowRecord> selectBusinessFollowRecordList(Integer businessId);
public List<BusinessFollowRecord> selectBusinessFollowRecordList(BusinessIdDto businessId);
/**
* 分页查询项目跟进记录列表
......
package com.dsk.system.service;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.SpecialBondInformationDetailsDto;
import com.dsk.common.dtos.SpecialBondInformationPageDto;
import com.dsk.common.dtos.SpecialPurposeBondsDto;
import com.dsk.common.dtos.SpecialPurposeBondsPageDto;
......@@ -30,7 +31,7 @@ public interface SpecialPurposeBondsService {
*@Author: Dgm
*@date: 2023/5/18 10:25
*/
AjaxResult details(String id);
AjaxResult details(SpecialBondInformationDetailsDto detailsDto);
/***
*@Description: 项目类别统计
......
......@@ -4,6 +4,7 @@ import java.util.List;
import com.dsk.common.core.domain.entity.BusinessFollowRecord;
import com.dsk.common.utils.DateUtils;
import com.dsk.system.domain.BusinessIdDto;
import com.dsk.system.mapper.BusinessFollowRecordMapper;
import com.dsk.system.service.IBusinessFollowRecordService;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -35,7 +36,7 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer
}
@Override
public List<BusinessFollowRecord> selectBusinessFollowRecordList(Integer businessId)
public List<BusinessFollowRecord> selectBusinessFollowRecordList(BusinessIdDto businessId)
{
return businessFollowRecordMapper.selectBusinessFollowRecordList(businessId);
}
......@@ -78,6 +79,7 @@ public class BusinessFollowRecordServiceImpl implements IBusinessFollowRecordSer
* @return 结果
*/
@Override
@Transactional
public int deleteBusinessFollowRecordByIds(Long[] ids)
{
return businessFollowRecordMapper.deleteBusinessFollowRecordByIds(ids);
......
......@@ -8,6 +8,7 @@ import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.dsk.common.config.RuoYiConfig;
import com.dsk.common.constant.HttpStatus;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.core.domain.entity.BusinessInfo;
......@@ -15,8 +16,11 @@ import com.dsk.common.core.domain.entity.BusinessLabel;
import com.dsk.common.core.domain.entity.BusinessRelateCompany;
import com.dsk.common.core.domain.entity.BusinessUser;
import com.dsk.common.exception.base.BaseException;
import com.dsk.common.utils.CheckUtils;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.SecurityUtils;
import com.dsk.common.utils.StringUtils;
import com.dsk.common.utils.file.FileUtils;
import com.dsk.system.domain.BusinessExcelDto;
import com.dsk.system.domain.BusinessAddDto;
import com.dsk.system.domain.BusinessListDto;
......@@ -82,11 +86,11 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
*/
@Override
public List<BusinessListVo> selectBusinessInfoList(BusinessListDto dto) {
if (dto.getUserId() == null) {
Long deptId = SecurityUtils.getLoginUser().getDeptId();
if (deptId == null) throw new BaseException("请登录");
dto.setDeptId(deptId.intValue());
}
// if (dto.getUserId() == null) {
// Long deptId = SecurityUtils.getLoginUser().getDeptId();
// if (deptId == null) throw new BaseException("请登录");
// dto.setDeptId(deptId.intValue());
// }
return businessInfoMapper.selectBusinessInfoList(dto);
}
......@@ -96,15 +100,18 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
//查询项目基本信息
BusinessInfo businessInfo = businessInfoMapper.selectBusinessInfoById(businessId);
BeanUtil.copyProperties(businessInfo, businessBrowseVo);
//商务团队
businessBrowseVo.setTeam(businessUserMapper.selectCreatorByBusinessId(businessId));
//查询项目标签
businessBrowseVo.setLabelList(businessLabelMapper.selectBusinessLabelList(new BusinessLabel(businessId)).stream().map(p -> p.getLabel()).collect(Collectors.toList()));
//查询关键企业
businessBrowseVo.setRelateCompany(businessRelateCompanyMapper.selectBusinessRelateCompanyList(new BusinessRelateCompany(businessId)));
//相关数据统计
BusinessBrowseVo total = businessInfoMapper.selectTotal(businessId);
businessBrowseVo.setBacklogCount(total.getBacklogCount());
businessBrowseVo.setContactsCount(total.getContactsCount());
businessBrowseVo.setFollowRecordCount(total.getFollowRecordCount());
businessBrowseVo.setRelateCompanyCount(total.getRelateCompanyCount());
//资料文档统计
businessBrowseVo.setRelateCompanyCount(FileUtils.getAllFileNames(RuoYiConfig.getProfile()+businessId).size());
return businessBrowseVo;
}
......@@ -162,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
......@@ -169,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();
......@@ -186,6 +192,10 @@ public class BusinessInfoServiceImpl implements IBusinessInfoService {
@Override
@Transactional
public int updateBusinessInfo(BusinessInfo businessInfo) {
if (StringUtils.isNotEmpty(businessInfo.getConstructionPhone()) && StringUtils.isNotEmpty(businessInfo.getSupervisorPhone())) {
if (!CheckUtils.isPhone(businessInfo.getConstructionPhone()) || !CheckUtils.isPhone(businessInfo.getSupervisorPhone()))
throw new BaseException("500", "请输入正确的手机号码");
}
businessInfo.setUpdateTime(DateUtils.getNowDate());
return businessInfoMapper.updateBusinessInfo(businessInfo);
}
......
......@@ -63,7 +63,7 @@ public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyS
@Transactional
public int insertBusinessRelateCompany(BusinessRelateCompany businessRelateCompany)
{
if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的手机号码");
// if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的手机号码");
businessRelateCompany.setCreateTime(DateUtils.getNowDate());
return businessRelateCompanyMapper.insertBusinessRelateCompany(businessRelateCompany);
}
......@@ -78,7 +78,7 @@ public class BusinessRelateCompanyServiceImpl implements IBusinessRelateCompanyS
@Transactional
public int updateBusinessRelateCompany(BusinessRelateCompany businessRelateCompany)
{
if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的手机号码");
// if(!CheckUtils.isPhone(businessRelateCompany.getPhone())) throw new BaseException("500","请输入正确的手机号码");
businessRelateCompany.setUpdateTime(DateUtils.getNowDate());
return businessRelateCompanyMapper.updateBusinessRelateCompany(businessRelateCompany);
}
......
......@@ -3,17 +3,13 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.ObjectUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.OpRegionalEconomicDataRegionalListDto;
import com.dsk.common.dtos.OpRegionalEconomicDataStatisticsRegionalDto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1Dto;
import com.dsk.common.dtos.OpRegionalEconomicDataV1PageDto;
import com.dsk.common.dtos.*;
import com.dsk.common.utils.DateUtils;
import com.dsk.common.utils.DskOpenApiUtil;
import com.dsk.system.service.EconomicService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
......@@ -39,16 +35,14 @@ public class EconomicServiceImpl implements EconomicService {
}
@Override
public AjaxResult yearsList() {
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/years/list", null);
public AjaxResult yearsList(OpRegionalEconomicDataYearsListDto dto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/years/list", BeanUtil.beanToMap(dto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
@Override
public AjaxResult details(Integer id) {
Map<String, Object> bodyMap = new HashMap<>(1);
bodyMap.put("id", id);
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/details", bodyMap);
public AjaxResult details(OpRegionalEconomicDataDetailsDto detailsDto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/economic/details", BeanUtil.beanToMap(detailsDto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
......
......@@ -2,6 +2,7 @@ package com.dsk.system.service.impl;
import cn.hutool.core.bean.BeanUtil;
import com.dsk.common.core.domain.AjaxResult;
import com.dsk.common.dtos.SpecialBondInformationDetailsDto;
import com.dsk.common.dtos.SpecialBondInformationPageDto;
import com.dsk.common.dtos.SpecialPurposeBondsDto;
import com.dsk.common.dtos.SpecialPurposeBondsPageDto;
......@@ -10,7 +11,6 @@ import com.dsk.system.service.SpecialPurposeBondsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
......@@ -33,10 +33,8 @@ public class SpecialPurposeBondsServiceImpl implements SpecialPurposeBondsServic
}
@Override
public AjaxResult details(String id) {
Map<String, Object> bodyMap = new HashMap<>(1);
bodyMap.put("id", id);
Map<String, Object> map = dskOpenApiUtil.requestBody("/specialPurposeBonds/details", bodyMap);
public AjaxResult details(SpecialBondInformationDetailsDto detailsDto) {
Map<String, Object> map = dskOpenApiUtil.requestBody("/specialPurposeBonds/details", BeanUtil.beanToMap(detailsDto, false, false));
return BeanUtil.toBean(map, AjaxResult.class);
}
......
......@@ -24,7 +24,6 @@
<result property="districtId" column="district_id"/>
<result property="projectType" column="project_type"/>
<result property="projectCategory" column="project_category"/>
<result property="team" column="team"/>
<result property="isPrivate" column="is_private"/>
<result property="createTime" column="create_time"/>
<result property="updateTime" column="update_time"/>
......@@ -35,6 +34,12 @@
<result property="earnestMoneyPay" column="earnest_money_pay"/>
<result property="earnestMoney" column="earnest_money"/>
<result property="evaluationBidCouncil" column="evaluation_bid_council"/>
<result property="constructionUnit" column="construction_unit"/>
<result property="constructionPrincipal" column="construction_principal"/>
<result property="constructionPhone" column="construction_phone"/>
<result property="supervisorUnit" column="supervisor_unit"/>
<result property="supervisorPrincipal" column="supervisor_principal"/>
<result property="supervisorPhone" column="supervisor_phone"/>
</resultMap>
<sql id="selectBusinessInfoVo">
......@@ -57,7 +62,6 @@
district_id,
project_type,
project_category,
team,
is_private,
create_time,
update_time,
......@@ -68,7 +72,13 @@
bid_open_place,
earnest_money_pay,
earnest_money,
evaluation_bid_council
evaluation_bid_council,
construction_unit,
construction_principal,
construction_phone,
supervisor_unit,
supervisor_principal,
supervisor_phone
from business_info
</sql>
......@@ -246,7 +256,6 @@
<if test="districtId != null">district_id,</if>
<if test="projectType != null">project_type,</if>
<if test="projectCategory != null">project_category,</if>
<if test="team != null">team,</if>
<if test="isPrivate != null">is_private,</if>
<if test="createTime != null">create_time,</if>
<if test="updateTime != null">update_time,</if>
......@@ -257,6 +266,12 @@
<if test="earnestMoneyPay != null">earnest_money_pay,</if>
<if test="earnestMoney != null">earnest_money,</if>
<if test="evaluationBidCouncil != null">evaluation_bid_council,</if>
<if test="constructionUnit != null">construction_unit,</if>
<if test="constructionPrincipal != null">construction_principal,</if>
<if test="constructionPhone != null">construction_phone,</if>
<if test="supervisorUnit != null">supervisor_unit,</if>
<if test="supervisorPrincipal != null">supervisor_principal,</if>
<if test="supervisorPhone != null">supervisor_phone,</if>
</trim>
<trim prefix="values (" suffix=")" suffixOverrides=",">
<if test="projectName != null">#{projectName},</if>
......@@ -277,7 +292,6 @@
<if test="districtId != null">#{districtId},</if>
<if test="projectType != null">#{projectType},</if>
<if test="projectCategory != null">#{projectCategory},</if>
<if test="team != null">#{team},</if>
<if test="isPrivate != null">#{isPrivate},</if>
<if test="createTime != null">#{createTime},</if>
<if test="updateTime != null">#{updateTime},</if>
......@@ -289,6 +303,12 @@
<if test="earnestMoneyPay != null">#{earnestMoneyPay},</if>
<if test="earnestMoney != null">#{earnestMoney},</if>
<if test="evaluationBidCouncil != null">#{evaluationBidCouncil},</if>
<if test="constructionUnit != null">#{constructionUnit},</if>
<if test="constructionPrincipal != null">#{constructionPrincipal},</if>
<if test="constructionPhone != null">#{constructionPhone},</if>
<if test="supervisorUnit != null">#{supervisorUnit},</if>
<if test="supervisorPrincipal != null">#{supervisorPrincipal},</if>
<if test="supervisorPhone != null">#{supervisorPhone},</if>
</trim>
</insert>
......@@ -313,7 +333,6 @@
<if test="districtId != null">district_id = #{districtId},</if>
<if test="projectType != null">project_type = #{projectType},</if>
<if test="projectCategory != null">project_category = #{projectCategory},</if>
<if test="team != null">team = #{team},</if>
<if test="isPrivate != null">is_private = #{isPrivate},</if>
<if test="createTime != null">create_time = #{createTime},</if>
<if test="updateTime != null">update_time = #{updateTime},</if>
......@@ -325,6 +344,12 @@
<if test="earnestMoneyPay != null">earnest_money_pay = #{earnestMoneyPay},</if>
<if test="earnestMoney != null">earnest_money = #{earnestMoney},</if>
<if test="evaluationBidCouncil != null">evaluation_bid_council = #{evaluationBidCouncil},</if>
<if test="constructionUnit != null">construction_unit = #{constructionUnit},</if>
<if test="constructionPrincipal != null">construction_principal = #{constructionPrincipal},</if>
<if test="constructionPhone != null">construction_phone = #{constructionPhone},</if>
<if test="supervisorUnit != null">supervisor_unit = #{supervisorUnit},</if>
<if test="supervisorPrincipal != null">supervisor_principal = #{supervisorPrincipal},</if>
<if test="supervisorPhone != null">evaluation_bid_council = #{supervisorPhone},</if>
</trim>
where id = #{id}
</update>
......
......@@ -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>
......
......@@ -33,6 +33,14 @@
<include refid="selectBusinessUserVo"/>
where id = #{id}
</select>
<select id="selectCreatorByBusinessId" resultType="java.lang.String">
select u.nick_name
from business_user bu
left join business_info i on i.id = bu.business_id
left join sys_user u on u.user_id = bu.user_id
where bu.is_founder = 1
and i.id = #{BusinessId}
</select>
<insert id="insertBusinessUser" parameterType="com.dsk.common.core.domain.entity.BusinessUser" useGeneratedKeys="true" keyProperty="id">
insert into business_user
......
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