Commit 817e664e authored by huangjie's avatar huangjie

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys...

Merge branch 'V20231129-中建一局二公司' of http://192.168.60.201/root/dsk-operate-sys into V20231129-中建一局二公司

# Conflicts:
#	dsk-operate-ui/src/views/projectCostLedger/detail/components/MeasureItems/index.vue
parents 19b4a81c fea76448
...@@ -67,6 +67,9 @@ user: ...@@ -67,6 +67,9 @@ user:
spring: spring:
application: application:
name: ${ruoyi.name} name: ${ruoyi.name}
jpa:
open-in-view: false
# 资源信息 # 资源信息
messages: messages:
# 国际化资源文件路径 # 国际化资源文件路径
...@@ -324,14 +327,16 @@ lock4j: ...@@ -324,14 +327,16 @@ lock4j:
management: management:
endpoints: endpoints:
enabled-by-default: false enabled-by-default: false
web:
exposure: # endpoints:
include: '*' # web:
endpoint: # exposure:
health: # include: '*'
show-details: ALWAYS # endpoint:
logfile: # health:
external-file: ./logs/sys-console.log # show-details: ALWAYS
# logfile:
# external-file: ./logs/sys-console.log
gv: gv:
img-path: D:\dsk\dsk-operate-sys\ img-path: D:\dsk\dsk-operate-sys\
......
...@@ -3,6 +3,7 @@ package com.dsk.cscec.controller; ...@@ -3,6 +3,7 @@ package com.dsk.cscec.controller;
import cn.dev33.satoken.annotation.SaCheckPermission; import cn.dev33.satoken.annotation.SaCheckPermission;
import cn.dev33.satoken.annotation.SaIgnore; import cn.dev33.satoken.annotation.SaIgnore;
import cn.hutool.core.lang.Assert; import cn.hutool.core.lang.Assert;
import cn.hutool.core.lang.tree.Tree;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.alibaba.excel.EasyExcel; import com.alibaba.excel.EasyExcel;
import com.dsk.common.annotation.Log; import com.dsk.common.annotation.Log;
...@@ -24,11 +25,13 @@ import com.dsk.cscec.domain.bo.CbCostMeasureActualSaveBo; ...@@ -24,11 +25,13 @@ import com.dsk.cscec.domain.bo.CbCostMeasureActualSaveBo;
import com.dsk.cscec.domain.vo.CbCostMeasureActualVo; import com.dsk.cscec.domain.vo.CbCostMeasureActualVo;
import com.dsk.cscec.domain.vo.CbCostMeasuresImportVo; import com.dsk.cscec.domain.vo.CbCostMeasuresImportVo;
import com.dsk.cscec.domain.vo.CbCostMeasuresItemVo; import com.dsk.cscec.domain.vo.CbCostMeasuresItemVo;
import com.dsk.cscec.domain.vo.CbProjectExpenseSummaryVo;
import com.dsk.cscec.listener.ProjectCostMeasureImportListener; import com.dsk.cscec.listener.ProjectCostMeasureImportListener;
import com.dsk.cscec.service.CbProjectExpenseSummaryService; import com.dsk.cscec.service.CbProjectExpenseSummaryService;
import com.dsk.cscec.service.ICbCostMeasureService; import com.dsk.cscec.service.ICbCostMeasureService;
import com.dsk.system.domain.vo.SysUserImportVo; import com.dsk.system.domain.vo.SysUserImportVo;
import com.dsk.system.listener.SysUserImportListener; import com.dsk.system.listener.SysUserImportListener;
import org.apache.poi.ss.formula.functions.T;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType; import org.springframework.http.MediaType;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
...@@ -63,6 +66,22 @@ public class CbCostMeasureController { ...@@ -63,6 +66,22 @@ public class CbCostMeasureController {
private CbProjectExpenseSummaryService cbProjectExpenseSummaryService; private CbProjectExpenseSummaryService cbProjectExpenseSummaryService;
/**
* 获取实际月份列表
*
* @param cbCostMeasureBo CB成本衡量范围
* @return {@link R}<{@link List}<{@link String}>>
*/
@SaIgnore
@GetMapping(value = "/actual/months")
public R<List<String>> actualMonths(CbCostMeasureActualBo cbCostMeasureBo) {
List<String> data = cbCostMeasureService.actualMonthList(cbCostMeasureBo);
if (ObjectUtil.isNull(data)) {
data = new ArrayList<>();
}
return R.ok(data);
}
/** /**
* 措施费一级大类 * 措施费一级大类
* 根据项目查询措施费一级大类 * 根据项目查询措施费一级大类
...@@ -91,8 +110,13 @@ public class CbCostMeasureController { ...@@ -91,8 +110,13 @@ public class CbCostMeasureController {
// @SaCheckPermission("cb:costmeasures:list") // @SaCheckPermission("cb:costmeasures:list")
@SaIgnore @SaIgnore
@GetMapping("/list") @GetMapping("/list")
public R<List<CbCostMeasureActualVo>> list(CbCostMeasureActualBo cbCostMeasure) { public R<List> list(CbCostMeasureActualBo cbCostMeasure) {
List<CbCostMeasureActualVo> data= cbCostMeasureService.selectDataList(cbCostMeasure); if(ObjectUtil.isNotEmpty(cbCostMeasure)&&cbCostMeasure.getId()==0){
Integer dataType=2;
List<CbProjectExpenseSummaryVo> dataList = cbCostMeasureService.getSummaryData(cbCostMeasure.getProjectId(),dataType,cbCostMeasure.getMonth());
return R.ok(dataList);
}
List<Tree<Long>> data= cbCostMeasureService.selectDataList(cbCostMeasure);
if (ObjectUtil.isNull(data)) { if (ObjectUtil.isNull(data)) {
data = new ArrayList<>(); data = new ArrayList<>();
} }
...@@ -133,6 +157,24 @@ public class CbCostMeasureController { ...@@ -133,6 +157,24 @@ public class CbCostMeasureController {
/**
* 获取上一次推送工程量
*
* @param measuresId 推送BO
* @return {@link R}<{@link List}<{@link CbCostMeasureActualVo}>>
*/
// @SaCheckPermission("cb:costmeasures:actual:push")
@SaIgnore
@GetMapping("/last/project/volume/{measuresId}")
public R<Object> lastProjectVolume(@PathVariable("measuresId") Long measuresId) {
Assert.notNull(measuresId,"措施费记录id不能为空!");
Object pushJson= cbCostMeasureService.lastProjectVolume(measuresId);
return R.ok("操作成功",pushJson);
}
/** /**
* 获取批量措施费列表 * 获取批量措施费列表
...@@ -200,10 +242,10 @@ public class CbCostMeasureController { ...@@ -200,10 +242,10 @@ public class CbCostMeasureController {
@Log(title = "措施费汇总获取") @Log(title = "措施费汇总获取")
// @SaCheckPermission("system:user:import") // @SaCheckPermission("system:user:import")
@PostMapping(value = "/summary/data") @PostMapping(value = "/summary/data")
public R<List<CbProjectExpenseSummary>> summaryData(Long projectId) throws Exception { public R<List<CbProjectExpenseSummaryVo>> summaryData(Long projectId,String month) throws Exception {
Integer dataType=2; Integer dataType=2;
List<CbProjectExpenseSummary> cbProjectExpenseSummaries = cbProjectExpenseSummaryService.queryCbSceneExpenseSummaryDataByType(projectId, dataType); List<CbProjectExpenseSummaryVo> dataList = cbCostMeasureService.getSummaryData(projectId,dataType,month);
return R.ok(cbProjectExpenseSummaries); return R.ok(dataList);
} }
......
...@@ -16,33 +16,33 @@ public class CbCostMeasureActualPushBo { ...@@ -16,33 +16,33 @@ public class CbCostMeasureActualPushBo {
/** /**
* 截止本月工程量 * 本月实际工程量
*/
private BigDecimal costEffective;
/**
* 本月实际工程量
*/ */
@TableField(value = "current_project_volume")
private BigDecimal currentProjectVolume; private BigDecimal currentProjectVolume;
/** /**
* 推送工程量 * 推送工程量
*/ */
@TableField(value = "submit_project_volume")
private BigDecimal submitProjectVolume; private BigDecimal submitProjectVolume;
/** /**
* 年月 * 年月
*/ */
@TableField(value = "`month`")
private String month; private String month;
/** /**
* 推送时间 * 推送时间
*/ */
@TableField(value = "push_time")
private Date pushTime; private Date pushTime;
/** /**
* 推送数据json * 推送数据json
*/ */
@TableField(value = "push_data_json")
private String pushDataJson; private String pushDataJson;
/** /**
......
...@@ -9,6 +9,7 @@ import lombok.Data; ...@@ -9,6 +9,7 @@ import lombok.Data;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List;
@Data @Data
public class CbCostMeasureActualVo { public class CbCostMeasureActualVo {
...@@ -17,6 +18,10 @@ public class CbCostMeasureActualVo { ...@@ -17,6 +18,10 @@ public class CbCostMeasureActualVo {
*/ */
private Long id; private Long id;
private Long parentId;
/** /**
* 序号 * 序号
*/ */
...@@ -138,6 +143,9 @@ public class CbCostMeasureActualVo { ...@@ -138,6 +143,9 @@ public class CbCostMeasureActualVo {
private Date pushTime; private Date pushTime;
private String pushDataJson;
/** /**
* 修改人 * 修改人
*/ */
...@@ -162,6 +170,10 @@ public class CbCostMeasureActualVo { ...@@ -162,6 +170,10 @@ public class CbCostMeasureActualVo {
@TableField(value = "update_time") @TableField(value = "update_time")
private Date updateTime; private Date updateTime;
private List<CbCostMeasureActualVo> childrens;
public static final String COL_ID = "id"; public static final String COL_ID = "id";
public static final String COL_PLAN_MEASURE_ID = "plan_measure_id"; public static final String COL_PLAN_MEASURE_ID = "plan_measure_id";
......
package com.dsk.cscec.domain.vo;
import com.baomidou.mybatisplus.annotation.*;
import com.dsk.common.annotation.Excel;
import lombok.Data;
import java.math.BigDecimal;
import java.util.Date;
/**
* 项目费用汇总表
*/
@Data
public class CbProjectExpenseSummaryVo {
/**
* 主键ID
*/
private Long id;
/**
* 项目ID
*/
private Long projectId;
/**
* 项目文件ID
*/
private Long projectFileId;
/**
* 成本阶段(0:标前成本、1:标后成本、2:转固成本)
*/
private Integer cbStage;
/**
* 序号
*/
private String number;
/**
* 数据类型(2:措施项目、3:其他项目、4:现场经费)
*/
private Integer dataType;
/**
* 名称
*/
private String expenseName;
/**
* 数值
*/
private String expenseValue;
/**
* 占比
*/
private String proportion;
/**
* 本月工程量
*/
private BigDecimal monthsProjectQuantity;
}
\ No newline at end of file
...@@ -13,4 +13,6 @@ public interface CbCostMeasureActualMapper extends BaseMapper<CbCostMeasureActua ...@@ -13,4 +13,6 @@ public interface CbCostMeasureActualMapper extends BaseMapper<CbCostMeasureActua
int updateByPrimaryKeySelective(CbCostMeasureActual record); int updateByPrimaryKeySelective(CbCostMeasureActual record);
List<CbCostMeasureActualVo> selectDataList(CbCostMeasureActualBo costMeasureActualBo); List<CbCostMeasureActualVo> selectDataList(CbCostMeasureActualBo costMeasureActualBo);
List<CbCostMeasureActualVo> getMonthActualCostList(Long projectId, String month);
} }
\ No newline at end of file
...@@ -7,10 +7,13 @@ import com.dsk.cscec.domain.CbCostMeasure; ...@@ -7,10 +7,13 @@ import com.dsk.cscec.domain.CbCostMeasure;
import com.dsk.cscec.domain.CbQuantitySummary; import com.dsk.cscec.domain.CbQuantitySummary;
import com.dsk.cscec.domain.bo.CbCostMeasureActualBo; import com.dsk.cscec.domain.bo.CbCostMeasureActualBo;
import com.dsk.cscec.domain.vo.CbCostMeasureActualVo; import com.dsk.cscec.domain.vo.CbCostMeasureActualVo;
import org.apache.ibatis.annotations.Param;
import java.util.List; import java.util.List;
public interface CbCostMeasureMapper extends BaseMapper<CbCostMeasure> { public interface CbCostMeasureMapper extends BaseMapper<CbCostMeasure> {
List<CbCostMeasureActualVo> selectListByProjectAndNo(CbCostMeasureActualBo cbCostMeasure); List<CbCostMeasureActualVo> selectListByProjectAndNo(CbCostMeasureActualBo cbCostMeasure);
List<String> actualMonthList(CbCostMeasureActualBo cbCostMeasureBo);
} }
\ No newline at end of file
...@@ -19,5 +19,6 @@ import java.util.Map; ...@@ -19,5 +19,6 @@ import java.util.Map;
*/ */
public interface ICbCostMeasureActualService extends IService<CbCostMeasureActual> { public interface ICbCostMeasureActualService extends IService<CbCostMeasureActual> {
List<CbCostMeasureActualVo> getMonthActualCostList(Long projectId, String month);
} }
package com.dsk.cscec.service; package com.dsk.cscec.service;
import cn.hutool.core.lang.tree.Tree;
import com.baomidou.mybatisplus.extension.service.IService; import com.baomidou.mybatisplus.extension.service.IService;
import com.dsk.common.core.domain.PageQuery;
import com.dsk.common.core.domain.entity.SysDictData;
import com.dsk.common.core.page.TableDataInfo;
import com.dsk.cscec.domain.CbCostMeasure; import com.dsk.cscec.domain.CbCostMeasure;
import com.dsk.cscec.domain.CbProjectExpenseSummary;
import com.dsk.cscec.domain.bo.CbCostMeasureActualBo; import com.dsk.cscec.domain.bo.CbCostMeasureActualBo;
import com.dsk.cscec.domain.bo.CbCostMeasureActualPushBo; import com.dsk.cscec.domain.bo.CbCostMeasureActualPushBo;
import com.dsk.cscec.domain.bo.CbCostMeasureActualSaveBo; import com.dsk.cscec.domain.bo.CbCostMeasureActualSaveBo;
import com.dsk.cscec.domain.vo.CbCostMeasureActualVo; import com.dsk.cscec.domain.vo.CbCostMeasureActualVo;
import com.dsk.cscec.domain.vo.CbCostMeasuresItemVo; import com.dsk.cscec.domain.vo.CbProjectExpenseSummaryVo;
import org.springframework.web.multipart.MultipartFile;
import java.io.InputStream; import java.io.InputStream;
import java.util.List; import java.util.List;
...@@ -29,7 +25,7 @@ public interface ICbCostMeasureService extends IService<CbCostMeasure> { ...@@ -29,7 +25,7 @@ public interface ICbCostMeasureService extends IService<CbCostMeasure> {
List<Map<String, Object>> listByLevel(Long projectId, int i); List<Map<String, Object>> listByLevel(Long projectId, int i);
List<CbCostMeasureActualVo> selectDataList(CbCostMeasureActualBo cbCostMeasure); List<Tree<Long>> selectDataList(CbCostMeasureActualBo cbCostMeasure);
void saveBatchCostMeasureActual(List<CbCostMeasureActualSaveBo> boList); void saveBatchCostMeasureActual(List<CbCostMeasureActualSaveBo> boList);
...@@ -40,5 +36,11 @@ public interface ICbCostMeasureService extends IService<CbCostMeasure> { ...@@ -40,5 +36,11 @@ public interface ICbCostMeasureService extends IService<CbCostMeasure> {
void parseCbCostMeasureFile(Long projectId); void parseCbCostMeasureFile(Long projectId);
boolean reparseCbCostMeasureFile(Long projectId,Long projectFileId); boolean reparseCbCostMeasureFile(Long projectId,Long projectFileId);
String lastProjectVolume(Long measuresId);
List<String> actualMonthList(CbCostMeasureActualBo cbCostMeasureBo);
List<CbProjectExpenseSummaryVo> getSummaryData(Long projectId, Integer dataType,String month);
} }
...@@ -3,11 +3,14 @@ package com.dsk.cscec.service.impl; ...@@ -3,11 +3,14 @@ package com.dsk.cscec.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.dsk.cscec.domain.CbCostMeasure; import com.dsk.cscec.domain.CbCostMeasure;
import com.dsk.cscec.domain.CbCostMeasureActual; import com.dsk.cscec.domain.CbCostMeasureActual;
import com.dsk.cscec.domain.vo.CbCostMeasureActualVo;
import com.dsk.cscec.mapper.CbCostMeasureActualMapper; import com.dsk.cscec.mapper.CbCostMeasureActualMapper;
import com.dsk.cscec.mapper.CbCostMeasureMapper; import com.dsk.cscec.mapper.CbCostMeasureMapper;
import com.dsk.cscec.service.ICbCostMeasureActualService; import com.dsk.cscec.service.ICbCostMeasureActualService;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
/** /**
* @author tanyang * @author tanyang
* @create 2024-02-07 9:38 * @create 2024-02-07 9:38
...@@ -15,4 +18,8 @@ import org.springframework.stereotype.Service; ...@@ -15,4 +18,8 @@ import org.springframework.stereotype.Service;
@Service @Service
public class ICbCostMeasureActualServiceImpl extends ServiceImpl<CbCostMeasureActualMapper, CbCostMeasureActual> implements ICbCostMeasureActualService { public class ICbCostMeasureActualServiceImpl extends ServiceImpl<CbCostMeasureActualMapper, CbCostMeasureActual> implements ICbCostMeasureActualService {
@Override
public List<CbCostMeasureActualVo> getMonthActualCostList(Long projectId, String month) {
return baseMapper.getMonthActualCostList(projectId,month);
}
} }
...@@ -174,4 +174,14 @@ ...@@ -174,4 +174,14 @@
AND t.cb_stage=#{cbStage} AND t.cb_stage=#{cbStage}
AND t1.`month`=#{month} AND t1.`month`=#{month}
</select> </select>
<select id="getMonthActualCostList" resultType="com.dsk.cscec.domain.vo.CbCostMeasureActualVo">
SELECT t1.item_content, t.cost_effective
FROM cb_cost_measure_actual t
inner JOIN cb_cost_measure t1 ON t1.id=t.plan_measure_id
WHERE
t1.project_id=1
AND t1.parent_id=0
AND t.`month`='202406'
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -36,7 +36,7 @@ ...@@ -36,7 +36,7 @@
id, project_id, cb_stage, parent_id, `level`, `number`, `no`,item_content, work_content, id, project_id, cb_stage, parent_id, `level`, `number`, `no`,item_content, work_content,
unit, quantity, unit_price_excluding_tax, usage_time, amount_excluding_tax, tax_rate, unit, quantity, unit_price_excluding_tax, usage_time, amount_excluding_tax, tax_rate,
amount_including_tax, amortization_ratio, amount_exclude_tax_amortized, amount_include_tax_amortized, amount_including_tax, amortization_ratio, amount_exclude_tax_amortized, amount_include_tax_amortized,
tax_amount, remarks, cost_subject, tax_type, create_time, update_time tax_amount, remarks, cost_subject, tax_type,data_source, create_time, update_time
</sql> </sql>
...@@ -54,4 +54,15 @@ ...@@ -54,4 +54,15 @@
AND t.`no` like concat(#{id},'.%') AND t.`no` like concat(#{id},'.%')
ORDER BY id ASC ORDER BY id ASC
</select> </select>
<select id="actualMonthList" resultType="java.lang.String">
SELECT
t1.`month`
FROM cb_cost_measure t
inner JOIN cb_cost_measure_actual t1 ON t1.plan_measure_id=t.id
WHERE
t.project_id=#{projectId}
and t1.del_flag=0
GROUP BY t1.`month` ORDER BY t1.`month` desc
</select>
</mapper> </mapper>
\ No newline at end of file
...@@ -57,6 +57,14 @@ export function getProjectFileUploadDetail(projectId) { ...@@ -57,6 +57,14 @@ export function getProjectFileUploadDetail(projectId) {
}); });
} }
//根据项目文件导入数据
export function importData(projectId) {
return request({
url: '/cbProjectRecord/importData/'+projectId,
method: 'get',
});
}
//获取草稿箱列表 //获取草稿箱列表
export function getDraftDialogList(projectId) { export function getDraftDialogList(projectId) {
return request({ return request({
...@@ -78,7 +86,7 @@ export function deleteCbProjectFile(data) { ...@@ -78,7 +86,7 @@ export function deleteCbProjectFile(data) {
return request({ return request({
url: '/cbProjectFile/deleteCbProjectFile', url: '/cbProjectFile/deleteCbProjectFile',
method: 'Delete', method: 'Delete',
data:data data: data
}); });
} }
...@@ -160,28 +168,37 @@ export function pushProjectvolume(data) { ...@@ -160,28 +168,37 @@ export function pushProjectvolume(data) {
return request({ return request({
url: '/cb/cost/measures/push/project/volume', url: '/cb/cost/measures/push/project/volume',
method: 'post', method: 'post',
data:data data: data
}); });
} }
//措措施费-获取上一次推送工程量 //措措施费-获取上一次推送工程量
export function projectVolume(data) { export function projectVolume(data) {
return request({ return request({
url: '/cb/cost/measures/last/project/volume/'+data, url: '/cb/cost/measures/last/project/volume/' + data,
method: 'GET', method: 'GET',
}); });
} }
//措施费-获取实际成本月份列表 //措施费-获取实际成本月份列表
export function actualMonths(params) { export const getActualMonthsApi = (params = {}) => request({
url: '/cb/cost/measures/actual/months',
method: 'get',
params
});
//批量保存或修改每月措施费
export function saveBatch(data) {
return request({ return request({
url: '/cb/cost/measures/actual/months', url: '/cb/cost/measures/saveBatch',
method: 'GET', method: 'post',
params data:data,
}); });
} }
// 工料汇总 // 工料汇总
/** /**
...@@ -195,6 +212,17 @@ export const getFeedSummaryMenuTreeApi = (params = {}) => request({ ...@@ -195,6 +212,17 @@ export const getFeedSummaryMenuTreeApi = (params = {}) => request({
params params
}); });
/**
* 获取已记录月份集合
* @param {*} params
* @returns
*/
export const getFeedSummaryMonthListApi = (params = {}) => request({
url: "/cb/quantity/summary/monthList",
method: "get",
params
});
/** /**
* 获取科目月份列表 * 获取科目月份列表
* @param {{ * @param {{
......
<template>
<div class="dsk-skeleton-outer-container">
<el-skeleton :animated="true" class="dsk-skeleton-inner-container">
<template slot="template">
<template v-for="item of count">
<div :key="item">
<el-skeleton-item variant="text" style="width: 60%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
<el-skeleton-item variant="text" style="width: 100%;" />
</div>
</template>
</template>
</el-skeleton>
</div>
</template>
<script>
export default {
name: 'dskSkeleton',
data() {
return {
count: 0
};
},
created() {
this.getSkeletonCount();
},
methods: {
async getSkeletonCount() {
try {
await this.$nextTick();
const skeletonContainer = this.$el.querySelector(".dsk-skeleton-inner-container");
const height = skeletonContainer.offsetHeight;
// 160高度为一组
const group = Math.round(height / 160);
this.count = group;
} catch (error) {
}
}
}
}
</script>
<style lang="scss" scoped>
.dsk-skeleton-outer-container {
padding: 0px 16px;
background: #fff;
z-index: 999;
.dsk-skeleton-inner-container {
width: 100%;
height: 100%;
overflow: hidden;
}
}
.el-skeleton__item {
height: 20px;
border-radius: 0;
margin-top: 16px;
background: #f0f0f0;
}
.el-skeleton {
.el-skeleton__item:last-of-type {
/* margin-bottom: 16px; */
}
}
</style>
...@@ -3,11 +3,13 @@ ...@@ -3,11 +3,13 @@
<!-- tab列表 --> <!-- tab列表 -->
<div class="dsk-tab-items-container"> <div class="dsk-tab-items-container">
<div class="dsk-tab-items-container-inner"> <div class="dsk-tab-items-container-inner">
<div class="dsk-tab-item" v-for="item of tabs" :key="item.id" :class="{'tab-current' : item.value == currentValue}"> <div class="dsk-tab-item" v-for="item of tabs" :key="item.id"
<div class="dsk-tab-item-name" @click="tabChoose(item)">{{item.name}}</div> :class="{'tab-current' : item.value == currentValue,'tab-is-disabled' : item.disabled || comDisabled}">
<div class="dsk-tab-item-name" @click="item.disabled || comDisabled ? '' : tabChoose(item)">{{item.name}}</div>
</div> </div>
<!-- 下滑条 --> <!-- 下滑条 -->
<div class="dsk-tab-sliding-bar" v-if="tabs.length" :style="{width : `${silidingBarWidth}px`,transform : `translateX(${silidingBarLeft}px)`}"> <div class="dsk-tab-sliding-bar" v-if="tabs.length && this.showTabsSlidingbar && !comDisabled"
:style="{width : `${silidingBarWidth}px`,transform : `translateX(${silidingBarLeft}px)`}">
</div> </div>
</div> </div>
</div> </div>
...@@ -25,6 +27,10 @@ export default { ...@@ -25,6 +27,10 @@ export default {
required: true, required: true,
type: Array, type: Array,
default: () => [] default: () => []
},
disabled: {
type: Boolean,
default: false
} }
}, },
watch: { watch: {
...@@ -32,6 +38,12 @@ export default { ...@@ -32,6 +38,12 @@ export default {
handler(newValue) { handler(newValue) {
this.initSlidingBar(); this.initSlidingBar();
} }
},
// 全部禁用不显示滚动条
disabled: {
handler(newValue) {
this.comDisabled = newValue ? true : false;
}
} }
}, },
model: { model: {
...@@ -41,7 +53,8 @@ export default { ...@@ -41,7 +53,8 @@ export default {
data() { data() {
return { return {
silidingBarLeft: 0, silidingBarLeft: 0,
silidingBarWidth: 0 silidingBarWidth: 0,
comDisabled: this.disabled ? true : false
}; };
}, },
//可访问data属性 //可访问data属性
...@@ -50,7 +63,13 @@ export default { ...@@ -50,7 +63,13 @@ export default {
}, },
//计算集 //计算集
computed: { computed: {
showTabsSlidingbar() {
const current = this.tabs.find(item => item.value == this.currentValue);
if (current) {
return current.disabled ? false : true;
}
return false;
}
}, },
//方法集 //方法集
methods: { methods: {
...@@ -124,6 +143,13 @@ export default { ...@@ -124,6 +143,13 @@ export default {
font-weight: bold; font-weight: bold;
} }
} }
&.tab-is-disabled {
.dsk-tab-item-name {
color: #eee;
cursor: not-allowed;
}
}
} }
.dsk-tab-sliding-bar { .dsk-tab-sliding-bar {
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
<div class="project-cost-ledger-detail-inner"> <div class="project-cost-ledger-detail-inner">
<project-detail-header :current="current" :breadCrumbTree="createProjectBreadCrumbTree"></project-detail-header> <project-detail-header :current="current" :breadCrumbTree="createProjectBreadCrumbTree"></project-detail-header>
<!-- tab切换栏 --> <!-- tab切换栏 -->
<dsk-tab-toggle v-model="current" :tabs="toggleTabs" @tabToggle="tabToggle"></dsk-tab-toggle> <dsk-tab-toggle v-model="current" :tabs="toggleTabs" @tabToggle="tabToggle" :disabled="tabsDisabled"></dsk-tab-toggle>
<!-- tab切换组件容器 --> <!-- tab切换组件容器 -->
<div class="project-cost-ledger-detail-module"> <div class="project-cost-ledger-detail-module">
<!-- 放入组件 v-if current == ‘xxxx’ 详情变量 this.detailInfo 需要深度监听--> <!-- 放入组件 v-if current == ‘xxxx’ 详情变量 this.detailInfo 需要深度监听-->
...@@ -15,16 +15,16 @@ ...@@ -15,16 +15,16 @@
<direct-cost v-if="current == 'directCost'"></direct-cost> <direct-cost v-if="current == 'directCost'"></direct-cost>
<!-- 工料汇总 --> <!-- 工料汇总 -->
<feed-summary v-if="current == 'feedSummary'" :project-id="projectID" :project-detail-info="detailInfo"></feed-summary> <feed-summary v-if="current == 'feedSummary'" :project-id="projectId" :project-detail-info="detailInfo"></feed-summary>
<!--措施项目--> <!--措施项目-->
<measure-items v-if="current == 'measureItem'" :project-id="projectID" :project-detail-info="detailInfo"></measure-items> <measure-items v-if="current == 'measureItem'" :project-id="projectId" :project-detail-info="detailInfo"></measure-items>
<!-- 其他项目 --> <!-- 其他项目 -->
<other-projects v-if="current == 'otherItems'"></other-projects> <other-projects v-if="current == 'otherItems'"></other-projects>
<!-- 盈亏分析对比 --> <!-- 盈亏分析对比 -->
<profit-Loss v-if="current == 'profitAndLoss'" :project-id="projectID" :project-detail-info="detailInfo"></profit-Loss> <profit-Loss v-if="current == 'profitAndLoss'" :project-id="projectId" :project-detail-info="detailInfo"></profit-Loss>
</div> </div>
</div> </div>
...@@ -62,14 +62,15 @@ export default { ...@@ -62,14 +62,15 @@ export default {
}, },
data() { data() {
return { return {
projectID: "", projectId: "",
current: "", current: "",
// 详情信息变量 // 详情信息变量
detailInfo: { detailInfo: {
projectId: "1754425038355890177", projectId: "1754425038355890177",
cbStage: 0, cbStage: 0,
cbType:1 cbType: 1
}, },
tabsDisabled: false,
toggleTabs: [ toggleTabs: [
{ {
value: "basicEngineeringInformation", value: "basicEngineeringInformation",
...@@ -161,21 +162,24 @@ export default { ...@@ -161,21 +162,24 @@ export default {
}, },
async getProjectQuery() { async getProjectQuery() {
try { try {
this.tabsDisabled = true;
const { query } = this.$route; const { query } = this.$route;
// if (!query.projectID) return this.$message.error("缺少项目id"); // if (!query.projectId) return this.$message.error("缺少项目id");
this.projectID = query.projectID; this.projectId = query.projectId;
// 获取详情 保证详情获取完毕 再执行tab命中 进行生命周期
await this.getProjectDetail(query.projectId);
if (query.current) { if (query.current) {
this.current = query.current; this.current = query.current;
} else { } else {
// 默认命中工程项目信息 // 默认命中工程项目信息
this.current = "basicEngineeringInformation"; this.current = "basicEngineeringInformation";
}; };
await this.getProjectDetail(query.projectID); this.tabsDisabled = false;
} catch (error) { } catch (error) {
console.log(error); console.log(error);
} }
}, },
async getProjectDetail(projectID) { async getProjectDetail(projectId) {
try { try {
} catch (error) { } catch (error) {
......
...@@ -70,13 +70,13 @@ ...@@ -70,13 +70,13 @@
<div style="display:flex;align-items:center"> <div style="display:flex;align-items:center">
<el-tooltip placement="top" v-if="scope.row.projectText.length>20"> <el-tooltip placement="top" v-if="scope.row.projectText.length>20">
<div class="renling"> <div class="renling">
<router-link v-if="scope.row.isGetProjectDetail" :to="`/projectCostLedger/detail?projectID=${scope.row.id}`" tag="a" <router-link v-if="scope.row.isGetProjectDetail" :to="`/projectCostLedger/detail?projectId=${scope.row.id}`" tag="a"
class="wordprimary" v-html="scope.row.projectName"></router-link> class="wordprimary" v-html="scope.row.projectName"></router-link>
<span v-else v-html="scope.row.projectName"></span> <span v-else v-html="scope.row.projectName"></span>
</div> </div>
</el-tooltip> </el-tooltip>
<div class="renling" v-else> <div class="renling" v-else>
<router-link v-if="scope.row.isGetProjectDetail" :to="`/projectCostLedger/detail?projectID=${scope.row.id}`" tag="a" <router-link v-if="scope.row.isGetProjectDetail" :to="`/projectCostLedger/detail?projectId=${scope.row.id}`" tag="a"
class="wordprimary" v-html="scope.row.projectName"></router-link> class="wordprimary" v-html="scope.row.projectName"></router-link>
<span v-else v-html="scope.row.projectName"></span> <span v-else v-html="scope.row.projectName"></span>
</div> </div>
......
...@@ -243,7 +243,7 @@ ...@@ -243,7 +243,7 @@
<script> <script>
import { getToken } from '@/utils/auth' import { getToken } from '@/utils/auth'
// import { getDicts } from '@/api/system/dict/data' // import { getDicts } from '@/api/system/dict/data'
import { deleteCbProjectFile, getProjectFileUploadDetail, uploadCbProjectFile } from '@/api/projectCostLedger/index' import { deleteCbProjectFile, getProjectFileUploadDetail, uploadCbProjectFile,importData } from '@/api/projectCostLedger/index'
export default { export default {
name: 'upload', name: 'upload',
...@@ -297,7 +297,28 @@ ...@@ -297,7 +297,28 @@
this.visible = true this.visible = true
this.$refs['ruleForm'].validate((valid) => { this.$refs['ruleForm'].validate((valid) => {
if (valid) { if (valid) {
importData(this.formdata.id).then(res=>{
})
this.issub = true this.issub = true
this.directExpense.forEach(item=>{
item.fileParseStatus = 1
})
this.quantitySummary.forEach(item=>{
item.fileParseStatus = 1
})
this.measureProject.forEach(item=>{
item.fileParseStatus = 1
})
this.otherProject.forEach(item=>{
item.fileParseStatus = 1
})
this.sceneExpense.forEach(item=>{
item.fileParseStatus = 1
})
this.cbSummary.forEach(item=>{
item.fileParseStatus = 1
})
} else { } else {
this.issub = false this.issub = false
} }
......
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